Linux 不使用NUMA限制内存带宽cGroup
我试图将进程的带宽限制为内存。 我有两个cgroup(cgroup 1和cgroup 2),其中包含进程。我可以限制每个cgroup使用的内存量。 但是如果它们继续调用Linux 不使用NUMA限制内存带宽cGroup,linux,memory-management,kernel,embedded-linux,cgroups,Linux,Memory Management,Kernel,Embedded Linux,Cgroups,我试图将进程的带宽限制为内存。 我有两个cgroup(cgroup 1和cgroup 2),其中包含进程。我可以限制每个cgroup使用的内存量。 但是如果它们继续调用malloc()和free()并使内存总线饱和,它们就会相互影响 我如何限制这一点?我没有两个不同的内存节点,也没有NUMA。这是不可能的。它们是: blkio-此子系统设置对块设备(如物理驱动器(磁盘、固态、USB等))的输入/输出访问权限的限制 cpu-此子系统使用调度程序提供对cpu的cgroup任务访问 cpuacct-
malloc()
和free()
并使内存总线饱和,它们就会相互影响
我如何限制这一点?我没有两个不同的内存节点,也没有NUMA。这是不可能的。它们是:
- blkio-此子系统设置对块设备(如物理驱动器(磁盘、固态、USB等))的输入/输出访问权限的限制
- cpu-此子系统使用调度程序提供对cpu的cgroup任务访问
- cpuacct-此子系统自动生成关于cgroup中任务使用的CPU资源的报告
- cpuset-该子系统将单个CPU(在多核系统上)和内存节点分配给cgroup中的任务
- 设备-此子系统允许或拒绝通过cgroup中的任务访问设备
- 冷冻库-此子系统暂停或恢复cgroup中的任务
- 内存-此子系统对cgroup中的任务的内存使用设置限制,并生成关于这些任务使用的内存资源的自动报告
- net_cls-此子系统使用类标识符(classid)标记网络数据包,该类标识符允许Linux流量控制器(tc)识别来自特定cgroup任务的数据包
- net_prio-此子系统提供了一种方法,可以动态设置每个网络接口的网络流量优先级
- ns-名称空间子系统李>
另一种方法是mmap一个文件,然后在其上设置
blkio
设置(不确定这是否可行)。然后,让您的程序从文件中读/写变量,而不是使用malloc
(丑陋!)。我确实注意到了您上面所说的。我希望像你这样的人会注意到一篇关于可能的解决方案的论文。非常感谢