系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones

CPU 份额示例

假设您的系统具有两个 CPU,并且运行两个并行的计算密集型 (CPU-bound) 工作负荷,分别称为 AB。每个工作负荷都正在作为单独的项目运行。已对这些项目进行了配置,从而为项目 A 指定了 SA 个份额,为项目 B 指定了 S B 个份额。

在传统的 TS 调度程序下,会为系统上正在运行的各个工作负荷平均地提供相同的 CPU 资源量。每个工作负荷将使用 50% 的系统容量。

如果在 FSS 调度程序的控制之下运行,并且 S A=SB ,也会为这些项目提供大致等量的 CPU 资源。但是,如果为项目提供了不同的份额数,则它们的 CPU 资源分配量也就不同。

以下三个示例说明了份额在不同的配置中如何起作用。这些示例显示在可用资源能够满足或无法满足需求的情况下,从使用情况的角度来说,份额仅在算术意义上是精确的。

示例 1:每个项目中有两个计算密集型 (CPU-bound) 进程

如果 AB 各具有两个计算密集型 (CPU-bound) 进程,并且 S A = 1S B = 3,那么份额总数为 1 + 3 = 4。在该配置中,如果 CPU 请求充足,则分别向项目 AB 分配 25% 和 75% 的 CPU 资源。

图例。文中对该图形进行了说明。

示例 2:项目之间没有争用

如果 AB 各自仅有一个计算密集型 (CPU-bound) 进程,并且 S A = 1S B = 100,那么份额的总数为 101。因为每个项目只有一个运行的进程,所以每个项目都不能使用一个以上的 CPU。由于在此配置中项目之间没有争用 CPU 资源,因此,为项目 AB 各分配了全部 CPU 资源的 50%。在此配置中,CPU 份额值无关紧要。即使为两个项目都指定了零份额,项目的资源分配量也相同 (50/50)。

图例。文中对该图形进行了说明。

示例 3:一个项目无法运行

如果 AB 各有两个计算密集型 (CPU-bound) 进程,并且为项目 A 提供 1 个份额,为项目 B 提供 0 个份额,则不会为项目 B 分配任何 CPU 资源,而为项目 A 分配所有 CPU 资源。B 中的进程始终以系统优先级 0 运行,因此它们永远不能运行,这是因为项目 A 中的进程始终具有较高的优先级。

图例。文中对该图形进行了说明。