Rin*_*ind 13
进程调度器
进程调度程序处理用于执行进程的 CPU 资源分配,旨在最大限度地提高整体 CPU 利用率,同时最大限度地提高交互性能。
自内核 2.6.23(即 Hardy 8.04 LTS 起)以来,基于“旋转楼梯截止日期”的完全公平调度程序 (CFS)。来自 kernel.org 的概述:
CFS 代表“完全公平调度程序”,是由 Ingo Molnar 实现并合并到 Linux 2.6.23 中的新的“桌面”进程调度程序。它替代了之前的 vanilla 调度程序的 SCHED_OTHER 交互代码。
CFS 80% 的设计都可以用一句话概括:CFS 基本上是在真实硬件上模拟“理想的、精确的多任务 CPU”。
“理想的多任务 CPU”是一种(不存在的 :-))CPU,它具有 100% 的物理能力,可以以精确相等的速度并行运行每个任务,每个任务以 1/nr_running 速度运行。例如:如果有 2 个任务在运行,那么每个任务都以 50% 的物理功率运行——即实际上是并行的。
在真正的硬件上,我们一次只能运行一个任务,所以不得不引入“虚拟运行时”的概念。任务的虚拟运行时间指定其下一个时间片何时开始在上述理想的多任务 CPU 上执行。实际上,任务的虚拟运行时间是其实际运行时间标准化为正在运行的任务总数。
输入输出调度器
输入/输出调度是操作系统用来决定块 I/O 操作以何种顺序提交到存储卷的方法。
Phoronix 关于调度的文章:Linux 3.16:Deadline I/O Scheduler 通常领先于 SSD。
您可以通过在 grub 中将选项“elevator=”附加到“GRUB_CMDLINE_LINUX_DEFAULT=”来更改 I/O 调度程序。
不过,这样做可能更容易(假设 sda 和截止日期):
要显示可用调度程序的列表:
cat /sys/block/sda/queue/scheduler
Run Code Online (Sandbox Code Playgroud)并更改调度程序(可以即时完成):
echo deadline > /sys/block/sda/queue/scheduler
Run Code Online (Sandbox Code Playgroud)您可以检查正在使用的内容(假设 sda 作为主要):
cat /sys/block/sda/queue/scheduler
Run Code Online (Sandbox Code Playgroud)