gpt4 book ai didi

linux - 在没有 NUMA 的情况下限制内存带宽 cgroups

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:33 31 4
gpt4 key购买 nike

我试图限制进程对内存的带宽。我有 2 个 cgroup(cgroup1 和 cgroup2),其中包含进程。我可以限制每个 cgroup 使用的内存量。但如果它们不断调用 malloc()free() 并使内存总线饱和,它们就会相互影响。

我如何限制它?我没有两个不同的内存节点,也没有 NUMA。

最佳答案

这是不可能的。 Supported subsystems是:

  • blkio — 此子系统对物理驱动器(磁盘、固态、USB 等)等 block 设备的输入/输出访问设置限制。
  • cpu — 此子系统使用调度程序为 cgroup 任务提供对 CPU 的访问。
  • cpuacct — 此子系统生成有关 cgroup 中任务使用的 CPU 资源的自动报告。
  • cpuset — 此子系统将各个 CPU(在多核系统上)和内存节点分配给 cgroup 中的任务。
  • 设备——这个子系统允许或拒绝 cgroup 中的任务访问设备。
  • freezer——这个子系统暂停或恢复 cgroup 中的任务。
  • 内存——这个子系统对 cgroup 中的任务使用内存设置限制,并生成关于这些任务使用的内存资源的自动报告。
  • net_cls — 此子系统使用类别标识符 (classid) 标记网络数据包,允许 Linux 流量 Controller (tc) 识别源自特定 cgroup 任务的数据包。
  • net_prio — 此子系统提供了一种动态设置每个网络接口(interface)的网络流量优先级的方法。
  • ns — 命名空间子系统。

最近的一个系统research paper引入了一个新的 Controller 来实现这一点,并制作了相关代码 available .

另一种方法是映射一个文件,然后在其上设置 blkio 设置(不确定这是否可行)。然后,让您的程序从文件中读取/写入变量,而不是使用 malloc(丑陋!)。

关于linux - 在没有 NUMA 的情况下限制内存带宽 cgroups,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323762/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com