Show Table of Contents
A.4. cpuset
cpuset 子系统可以为 cgroup 分配独立 CPU 和内存节点。可根据以下参数来设定 cpuset,每个参数都在 cgroup 虚拟文件系统的一个单独 “伪文件” 里:
重要
一些子系统有强制参数,在您将任务移至使用这些子系统的 cgroup 中之前,这些参数必须被设定。 例如,一个使用
cpuset 子系统的 cgroup, 在您将任务移至此 cgroup 前,cpuset.cpus 和 cpuset.mems 参数必须被设定。
- cpuset.cpus(强制)
- 设定该 cgroup 任务可以访问的 CPU。这是一个逗号分隔列表,格式为 ASCII,小横线("
-")代表范围。例如:0-2,16
表示 CPU 0、1、2 和 16。 - cpuset.mems(强制)
- 设定该 cgroup 中任务可以访问的内存节点。这是一个逗号分隔列表,格式为 ASCII,小横线("
-")代表范围。例如:0-2,16
表示内存节点 0、1、2 和 16。 - cpuset.memory_migrate
- 包含一个标签(
0或者1),用来指定当cpuset.mems的值更改时,是否应该将内存中的页迁移到新节点。默认情况下禁止内存迁移(0)且页就保留在原来分配的节点中,即使此节点不再是cpuset.mems指定的节点。如果启用(1),系统会将页迁移到cpuset.mems指定的新参数的内存节点中,如果可能的话会保留其相对位置。例如:如果页位于cpuset.mems指定列表的第二个节点中,现在页将会重新分配到cpuset.mems指定列表的第二个节点中,如果这个位置是可用的。 - cpuset.cpu_exclusive
- 包含标签(
0或者1),它可以指定:其它 cpuset 及其父、子 cpuset 是否可共享该 cpuset 的特定 CPU。默认情况下(0),CPU 不会专门分配给某个 cpuset 。 - cpuset.mem_exclusive
- 包含标签(
0或者1),它可以指定:其它 cpuset 是否可共享该 cpuset 的特定内存节点。默认情况下(0),内存节点不会专门分配给某个 cpuset 。为某个 cpuset 保留其专用内存节点(1)与使用cpuset.mem_hardwall参数启用内存 hardwall 功能是一样的。 - cpuset.mem_hardwall
- 包含标签(
0或者1),它可以指定:内存页和缓冲数据的 kernel 分配是否受到 cpuset 特定内存节点的限制。默认情况下0,页面和缓冲数据在多用户进程间共享。启用 hardwall 时(1)每个任务的用户分配可以保持独立。 - cpuset.memory_pressure
- 一份只读文件,包含该 cpuset 进程生成的“内存压力”运行平均。启用
cpuset.memory_pressure_enabled时,该伪文件中的值会自动更新,除非伪文件包含0值。 - cpuset.memory_pressure_enabled
- 包含标签(
0或者1),它可以设定系统是否计算该 cgroup 进程生成的“内存压力”。计算出的值会输出到cpuset.memory_pressure,代表进程试图释放被占用内存的速率,报告值为:每秒尝试回收内存的整数值再乘以 1000。 - cpuset.memory_spread_page
- 包含标签(
0或者1),它可以设定文件系统缓冲是否应在该 cpuset 的内存节点中均匀分布。默认情况下0,系统不会为这些缓冲平均分配内存页面,缓冲被置于生成缓冲的进程所运行的同一节点中。 - cpuset.memory_spread_slab
- 包含标签(
0或者1),它可以设定是否在 cpuset 间平均分配用于文件输入 / 输出操作的 kernel 高速缓存板。默认情况下0,kernel 高速缓存板不被平均分配,高速缓存板被置于生成它们的进程所运行的同一节点中。 - cpuset.sched_load_balance
- 包含标签(
0或者1),它可以设定 kernel 是否在该 cpuset 的 CPU 中平衡负载。默认情况下1,kernel 将超载 CPU 中的进程移动到负载较低的 CPU 中以便平衡负载。请注意:如果任意一个父 cgroup 启用负载平衡,那么在 cgroup 中设定这个标签将没有任何效果,因为负载平衡已在更高层级中运行。因此,要禁用 cgroup 中的负载平衡,则层级中的每一个父 cgroup 负载平衡都要禁用。这里您还应该考虑是否在所有平级 cgroup 中启用负载平衡。 - cpuset.sched_relax_domain_level
- 包含
-1到一个小正数间的整数,它代表 kernel 应尝试平衡负载的 CPU 宽度范围。如果禁用cpuset.sched_load_balance,则该值无意义。根据不同系统构架,这个值的具体效果不同,但以下值是常用的:cpuset.sched_relax_domain_level 值值 效果 -1平衡负载的系统默认值 0不执行直接负载平衡;负载平衡只是阶段性的 1对同一核中的线程进行直接负载平衡 2对同一软件包中的线程进行直接负载平衡 3对同一节点或者扇叶中的线程进行直接负载平衡 4对不使用统一内存访问(NUMA)构架中的多个 CPU 进行直接负载平衡 5对使用统一内存访问(NUMA)构架中的多个 CPU 进行直接负载平衡

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.