我在 iostat 命令的手册上搜索了 %nice。在 %nice 值的解释中,有一个短语是关于 nice 优先级的。我无法理解它的含义,有人可以解释一下吗?
手册页中的完整注释如下。
%好的
显示在具有良好优先级的用户级别执行时发生的 CPU 利用率百分比。
这意味着已经使用该nice
命令启动的进程,或者已经调用nice
/setpriority
以将其优先级降低到标准优先级以下。(nice
在旧的 unix 中也是系统调用的名称,setpriority
现在已被替换。命令名称仍然相同)。
请参阅 /proc/stat 的手册页或文档,例如http://www.mjmwired.net/kernel/Documentation/filesystems/proc.txt。
或者,自己尝试(在属于您的其他已卸载系统上!)。打开 2 个终端。在第一个,键入
$ perl -e 'print "$$\n"; for (;;){}'
并记住 pid,然后在第二个
$ ps -l -p <pid>
$ iostat -c 1 5
然后,停止第一个终端中的进程,并以较低的优先级重新启动它:
$ nice -1 perl -e 'print "$$\n"; for (;;){}'
输出,在我的系统上:(第一次)
$ perl -e 'print "$$\n"; for (;;){}'
22482
$ ps -l -p 22482
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 R 1000 22482 22443 99 80 0 - 4279 - pts/1 00:00:16 perl
$ iostat -c 1 5
...
avg-cpu: %user %nice %system %iowait %steal %idle
100.00 0.00 0.00 0.00 0.00 0.00
(带好)
$ nice -1 perl -e 'print "$$\n"; for (;;){}'
22666
$ ps -l -p 22666
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 R 1000 22666 22443 99 81 1 - 4279 - pts/1 00:00:06 perl
$ iostat -c 1 5
...
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 100.00 0.00 0.00 0.00 0.00
该nice -1
命令使 NI 列增加一;同时,100% 的 CPU 使用率(由 perl 命令引起)从 %user 转移到 %nice。