Linux(25)——进程调度
目录
一、Linux 进程调度:
二、进程优先级:
1、普通调度策略:
2、完全公平调度程序:
三、nice 值:
1、nice 值范围:
2、nice 值修改权限:
(1)降低:
(2)升高:
3、查看 nice 值:
(1)top 命令:
(2)ps 命令:
4、启动具有不同 nice 值的进程:
(1)从命令行启动进程:
(2)使用 nice 命令启动进程:
5、更改现有进程的 nice 值:
(1)renice 命令:
(2)top 命令:
一、Linux 进程调度:
现代计算机系统有一个共同点:需要运行的进程线程数量超出了其 CPU 的数量。
通过使用 time-slicing(时间片)或 multitasking(多任务)的技术,Linux 和其他操作系统的进程调度程序可在每个 CPU 核心上的进程之间快速切换,从而给人一种有多个进程在同时运行的印象,以运行超出其处理单元数的进程。
二、进程优先级:
进程优先级设置每个进程的重要性。用户通过设置进程优先级,系统可以针对不同的进程,采用不同的调度策略。
用户可为采用 SCHED_NORMAL 策略运行的进程指定相对优先级,优先级值即 priority 值,此值将映射到 nice 值。
1、普通调度策略:
系统上运行的大多数进程所使用的普通调度策略称为 SCHED_OTHER或 SCHED_NORMAL ,在此策略下运行的进程将被分配一个静态实时优先级0,以确保所有的系统实时进程优先级高于普通进程。
2、完全公平调度程序:
完全公平调度程序( CFS )将等待 CPU 时间的进程组织到二进制搜索树中,而此二进制树的顺序受 nice 值影响。
三、nice 值:
1、nice 值范围:
对于任何进程,有 40 种不同级别的 nice 值可以设置,范围介于 -20(最高优先级)到 19(最低优先级)之间。nice 值越高,表示的优先级越低(该进程更容易将其的 CPU 使用量让给其他进程);nice 值越低,表示的优先级越高(该进程更加不倾向于让出其 CPU )。
默认情况下,创建进程时,进程将继承其父进程的 nice 值,通常为 0 。
注:如果不存在资源争用(例如,活动进程数少于可用 CPU 核心数)时,即使 nice 值高(优先级低)的进程也将使用尽可能多的 CPU 资源。
2、nice 值修改权限:
(1)降低:
只有 root 用户可以降低进程的 nice 值。
注:1)此时进程将被重复放置在二进制树的较高位置,调用频率更高;
2)若是在饱和系统上执行此操作,其他进程可用的总 CPU 时间将减少。
(2)升高:
普通用户只能提高自己进程的 nice 值,使自己的进程更加友好。
3、查看 nice 值:
(1)top 命令:
top 命令可通过交互方式查看和管理进程,可以查看 nice 值(NI)和 priority 值(PR)等内容。
注:nice 值 -20 映射至 PR 值时为 0 。
(2)ps 命令:
ps 命令可列出所有进程,这些进程按照 nice 值降序排列。
注:1)在 CLS 列中,TS 表示时间共享(普通调度策略的另一名称)。其他 CLS 值( FF 表示先进先出、 RR 表示循环)表示实时进程;
2)实时进程不分配 nice 值,如 NI 列中的短划线( - )。
4、启动具有不同 nice 值的进程:
(1)从命令行启动进程:
从命令行启动进程时,进程将从启动它的 shell 进程那里继承 nice 值,通常,nice 值为 0 。
注:使用 ps 命令时注意使用 PID 选项以指定所请求的输出。
(2)使用 nice 命令启动进程:
所有用户都可以使用 nice 命令来启动具有默认或更高 nice 值的命令,默认为 10。
-n 选项可以设置特定的 nice 值。
5、更改现有进程的 nice 值:
(1)renice 命令:
用户通常使用 renice 命令来更改现有进程的 nice 级别。
(2)top 命令:
用户也可使用 top 命令以更改现有进程的 nice 值,更改过程如下:
在 top 交互式界面中,单击 r 键访问 renice 命令,此时输入进程 ID( PID )。
然后输入新的 nice 值。
使用 ctrl + c 退出 top 命令,查看此进程的 nice 值,确已更改。