Show Table of Contents
3.4. cpuset
cpuset 子系统为 cgroup 分配独立 CPU 和内存节点。可根据用以下参数指定每个 cpuset,每个参数都在控制组群虚拟文件系统中有单独的伪文件:
重要
有些子系统拥有强制参数,您在可以将任务移动到使用那些子系统的 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
- 包含用来指定当
cpuset.mems中的值更改时是否应该将内存中的页迁移到新节点的标签(0或者1)。默认情况下禁止内存迁移(0)且页就保留在原来分配的节点中,即使在cpuset.mems中现已不再指定这个节点。如果启用(1),则该系统会将页迁移到由cpuset.mems指定的新参数中的内存节点中,可能的情况下保留其相对位置 - 例如:原来由cpuset.mems指定的列表中第二个节点中的页将会重新分配给现在由cpuset.mems指定的列表的第二个节点中,如果这个位置是可用的。 - cpuset.cpu_exclusive
- 包含指定是否其它 cpuset 及其上、下级族群可共享为这个 cpuset 指定的 CPU 的标签(
0或者1)。默认情况下(0)CPU 不是专门分配给某个 cpuset 的。 - cpuset.mem_exclusive
- 包含指定是否其它 cpuset 可共享为这个 cpuset 指定的内存节点的标签(
0或者1)。默认情况下(0)内存节点不是专门分配给某个 cpuset 的。专门为某个 cpuset 保留内存节点(1)与使用cpuset.mem_hardwall启用内存 hardwall 功能是一致的。 - cpuset.mem_hardwall
- 包含指定是否应将内存页面的内核分配限制在为这个 cpuset 指定的内存节点的标签(
0或者1)。默认情况下为0,属于多个用户的进程共享页面和缓冲。启用 hardwall 时(1)每个任务的用户分配应保持独立。 - cpuset.memory_pressure
- 包含运行在这个 cpuset 中产生的平均内存压力的只读文件。启用
cpuset.memory_pressure_enabled时,这个伪文件中的值会自动更新,否则伪文件包含的值为0。 - cpuset.memory_pressure_enabled
- 包含指定系统是否应该计算这个 cgroup 中进程所生成内存压力的标签(
0或者1)。计算出的值会输出到cpuset.memory_pressure,且代表进程试图释放使用中内存的比例,报告为尝试每秒再生内存的整数值再乘 1000。 - cpuset.memory_spread_page
- 包含指定是否应将文件系统缓冲平均分配给这个 cpuset 的内存节点的标签(
0或者1)。默认情况为0,不尝试为这些缓冲平均分配内存页面,且将缓冲放置在运行生成缓冲的进程的同一节点中。 - cpuset.memory_spread_slab
- 包含指定是否应在 cpuset 间平均分配用于文件输入/输出操作的内核缓存板的标签(
0或者1)。默认情况是0,即不尝试平均分配内核缓存板,并将缓存板放在生成这些缓存的进程所运行的同一节点中。 - cpuset.sched_load_balance
- 包含指定是否在这个 cpuset 中跨 CPU 平衡负载内核的标签(
0或者1)。默认情况是1,即内核将超载 CPU 中的进程移动到负载较低的 CPU 中以便平衡负载。请注意:如果在任意上级 cgroup 中启用负载平衡,则在 cgroup 中设定这个标签没有任何效果,因为已经在较高一级 cgroup 中处理了负载平衡。因此,要在 cgroup 中禁用负载平衡,还要在该层级的每一个上级 cgroup 中禁用负载平衡。这里您还应该考虑是否应在所有平级 cgroup 中启用负载平衡。 - cpuset.sched_relax_domain_level
- 包含
-1到小正数间的整数,它代表内核应尝试平衡负载的 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.