Hello,
On Mon, Sep 05, 2022 at 06:30:38PM +0800, Zhongkun He wrote:
We usually use numactl to set the memory policy, but it cannot be changed
dynamically. In addition, the mempolicy of cpuset can provide a more
convenient interface for management and control panel.
But you can write a better tool easily in userspace to do whatever you wanna
do, right? If you're worried about racing against forks, you can freeze the
cgroup, iterate all pids applying whatever new policy and then unfreeze. We
can probably improve the freezer interface so that multiple users don't
conflict with each other but that shouldn't be too difficult to do and is
gonna be useful generically.
I don't see much point in adding something which can be almost trivially
implemented in userspace as a built-in kernel feature.
Sorry,I don't quite understand the meaning of "don't enforce anything
resource related". Does it mean mempolicy, such as "prefer:2" must specify
node? Or "cpuset.mems.policy" need to specify a default value?
(cpuset.mems.policy does not require a default value.)
In that there's no real resource being distributed hierarchically like cpu
cycles or memory capacities. All it's doing is changing attributes for a
group of processes, which can be done from userspace all the same.
Thanks.
Hi Tejun, thanks for your reply.
It would be better if one process had a way to dynamically modify the
mempolicy of another process. But unfortunately there is no interface or
system call to do that in userspace.
In our use case, we hope to combine memory policy with cgroup for
better use of resources. The current implementation may not be suitable,
I'll keep trying other approaches.
Thanks again.