2.5. 控制组
红帽企业版 Linux 6 为性能调节提供很多有用的选项。大型系统,比如几百个处理器,可调节为提供超级性能。但调节这些系统需要高级专家以及明确的工作量。当大型系统非常昂贵且数量不多,应该予以特殊对待。现在这些系统是大型机,我们需要更多有效工具。
目前使用的用来强化服务的更强大的系统可让事情并的更为复杂。以前在 4-8 台就服务器中运行的负载现在都在一台服务器在中运行。如 第 1.2.1 节 “并行计算” 所述,现在很多中级系统所含核比以前高性能机器还要多。
很多现代程序已设计为使用多线程或者进程进行平行处理以提高性能。但只有少数程序能充分利用八个以上线程。因此多程序通常要在 32-CPU 中安装以便让产能最大化。
想象这样一种情况:小型、廉价大型机系统现在与原来昂贵的高性能机器有同样的性能。廉价的高性能机器可让系统架构师可以在较少的机器在很强化更多服务。
但有些资源(比如 I/O 以及网络通讯)是共享的,不会如 CPU 计数一般快速增长。因此当某个系统使用单一资源时间过长时,托管多个程序的系统可能会有总体性能下降。
为解决这个问题,红帽企业版 Linux 6 现在支持控制组(cgroups)。Cgroups 可让管理员根据需要为具体任务分配资源。这意味着例如要为数据库应用程序分配四台 CPU 的80%,60GB 内存,以及 40% 的磁盘 I/O。在同一系统中运行的网页应用程序则使用两个 CPU,2GB 内存以及 50% 的可用网络带宽。
结果是数据库和网页应用程序都有良好的性能,因为该系统防止二者过度占用系统资源。另外,cgroups 的很多方面是自我调整,可让系统根据负载的变化做相应的调整。
cgroup 有两个主要部分:
- 分配给该 cgroup 的任务列表
- 分配给那些任务的资源
分配给 cgroup 的任务是在该 cgroup 内部运行。所有其派生处的子任务也都将在该 cgroup 中运行。这样可以让管理员将整个程序作为一个单位进行管理。管理员还可以分配以下资源:
- CPU 组
- 内存
- I/O
- 网络(带宽)
在 CPU 组中,cgroups 可让管理员配置 CPU 数,具体 CPU 或者节点的亲和性 [3],以及任务组使用的 CPU 时间长度。使用 cgroups 配置 CPU 在是保证总体性能良好,防止程序过度消耗资源,影响其他任务的关键,同时还可保证程序不会缺少 CPU 时间。
I/O 带宽和网络带宽由其他资源控制器管理。同样,资源控制器可让您决定 cgroup 中任务可消耗的带宽,并保证 cgroup 中的任务既不会消耗过多资源,也不会缺少资源。
Cgroups 可让管理员在较高等级确定并分配各种程序需要(和将要)消耗的系统资源。然后系统会自动管理并平衡各种程序,提供良好的可预估性能,并优化系统总体性能。
有关使用控制组的详情请参考《资源管理指南》,网址为 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/。