是否可以将cpu.shares与cpu.cfs_quota_us一起使用

时间:2019-02-19 09:14:46

标签: cgroups

我正在为我的研究团队设置cgroups config。服务器有8个CPU。团队成员只能使用部分CPU时间,因此对于团队,我设置了cpu.cfs_quota_us = 400000。我还想通过cpu.shares添加任务优先级。

例如,这是我的cgroup配置:

group team {
    cpu {
        cpu.cfs_period_us = 100000;
        cpu.cfs_quota_us = 400000; #4 CPUs
    }
}

group team/user1 {
    cpu {
        cpu.shares = 256;
    }
}

group team/user2 {
    cpu {
        cpu.shares = 768;
    }
}

仅当我将父组的cpu.cfs_quota_us设置为-1并且所有cpu都在使用中时,cpu.shares才起作用。

cpu.cfs_quota_us和儿童的cpu.shares可以一起工作吗?

1 个答案:

答案 0 :(得分:0)

cpu.shares不能设置任务优先级。

它用于定义相对(抽象)的CPU共享量,即CPU专用于某个组/用户而不是另一个组/用户的任务。

您在这里基本上说team/user2的专用计算时间比team/user1多了三倍(768/256)。换句话说,team/user2将使用75%的CPU时间,而team/user1将仅使用25%的CPU时间。

cpu.sharescpu.cfs_quota_us做相同的事情,但是以两种不同的方式。 前者使用分时的相对表示,而后者使用微秒的精确量化。因为它们都用于定义CPU时间共享,所以不能一起使用。

某些文档:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpu