【问题标题】:Limit memory bandwidth cgroups without NUMA限制没有 NUMA 的内存带宽 cgroups
【发布时间】:2015-06-02 03:26:34
【问题描述】:

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

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

【问题讨论】:

    标签: linux memory-management kernel embedded-linux cgroups


    【解决方案1】:

    这是不可能的。 Supported subsystems 是:

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

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

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

    【讨论】:

    • 我确实注意到了你上面所说的。我希望像你一样的人会注意到一篇关于可能解决方案的论文。非常感谢你
    猜你喜欢
    • 2013-03-05
    • 2020-08-14
    • 2014-06-10
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多