我试图将进程的带宽限制为内存。
我有两个cgroup(cgroup1和cgroup2),其中包含进程。我可以限制每个cgroup使用的内存量。
但如果它们继续调用malloc()free()并使内存总线饱和,它们会相互影响。
我该如何限制?我没有两个不同的内存节点,也没有numa。

最佳答案

这是不可能的。Supported subsystems是:
blkio-该子系统设置了对物理驱动器(磁盘、固态、usb等)等块设备的输入/输出访问的限制。
CPU—此子系统使用调度程序提供对CPU的CGROUP任务访问。
cpuacct-此子系统生成cgroup中任务使用的cpu资源的自动报告。
cpuset-这个子系统为cgroup中的任务分配单独的cpu(在多核系统上)和内存节点。
设备-此子系统允许或拒绝cgroup中的任务访问设备。
冻结-此子系统暂停或恢复cgroup中的任务。
内存-此子系统设置cgroup中任务的内存使用限制,并生成这些任务使用的内存资源的自动报告。
net_cls-这个子系统用一个类标识符(classid)标记网络数据包,该类标识符允许linux流量控制器(tc)标识来自特定cgroup任务的数据包。
这个子系统提供了一种动态设置每个网络接口的网络流量优先级的方法。
ns—命名空间子系统。
最近的一个系统引入了一个新的控制器来实现这一点,并生成了相关的代码。
另一种方法是mmap一个文件,然后对其设置blkio设置(不确定这是否有效)。然后,让程序从文件中读/写变量,而不是使用malloc(丑陋!)是的。

关于linux - 限制不使用NUMA的内存带宽cgroup,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29323762/

10-11 22:09