第 4 章 资源管理
Linux 内核中的完全公平调度器(Completely Fair Scheduler,CFS)是一个比例共享调度程序,可根据任务优先权/加权在任务组群间按比例分割 CPU 时间,或者在任务组群中共享分配的时间。使用 CFS,如果在系统中有足够多的闲置 CPU 周期,任务组群获得的 CPU 可超过其份额,这是该调度程序的守恒性质造成的。
- 按使用分配
- 在为多个客户提供服务的企业级系统中,云服务供应商需要根据服务等级为虚拟机分配固定的 CPU 时间。
- 服务等级保证
- 客户需要保证每台虚拟机服务不中断的 CPU 资源比例。
红帽企业版 Linux 6 默认启用了 cgroups,同时使用 libvirt 为每个虚拟机模型创建一个 cgroups。在大型 SMP 系统中,由于 cgroups 数量的增加会影响系统性能。但是红帽企业版 Linux 6.2 中的 cgroups CPU 扩展性有了很大程度的提高,使其可以创建并同时运行几百个 cgroups 而不影响性能。
/proc
可调参数 dd sysctl_sched_shares_window
,默认将其设定为 10 ms。
已经改进 Cgroups I/O 控制器设计,减少了 I/O 控制器中的锁定用量,从而提高性能。同时,I/O 控制器现在支持根据每个 cgroup 进行统计。
红帽企业版 Linux 6.2 通过将 page_cgroup
阵列的分配消耗降低 37% 在内存控制器中改进内存用量消耗。另外删除了直接 page_cgroup-to-page
指针,这也提高了内存控制器性能。
已将 CFQ 的 group_isolation
变量从 0
改为 1
(/sys/block/<device>/queue/iosched/group_isoaltion
)。经过各种测试以及大量用户报告发现,默认值为 1
时更有用。当将其设定为 0
时,所有随机 I/O 队列都会成为 root cgroup 的一部分,而不属于该应用程序实际所在 cgroup。这样就造成对应用程序的服务没有任何不同。
注意