linux下的进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。
默认时候,进程的优先级是0。
查看进程优先级有两个办法:ps和top。
top命令显示的NI列的值。或者可以使用ps -efl来查看,也是在ni列表示了进程的优先级。进程的优先级可以在程序运行的时候设置,也可以在程序运行过程中动态的修改。运 行的时候设置进程的优先级可以使用nice命令,比如要使得top命令运行时候的优先级是5而不是默认的0,则可以使用nice -n 5 top,来使得top命令运行在5的优先级别。
如果top命令已经在运行,则有两个办法可以动态的调整进程的级别。
可以在top中输入r命令,然后按照提 示输入top命令对应的进程号,再按照提示输入要调整到哪个级别。另一个方法是使用renice命令,帮助如下:[oracle@rac1 ~]$ renice --helpusage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]此 命令使用也很简单,可以调整单个进程,一个用户或者一个组的所有进程的优先级。
示例如下:renice +10 -u oracle,此命令把oracle用户的所有进程的优先级全部调为10,包括新创建的和已经在运行的oracle用户的所有进程。此处的+10并不是表 示在现有级别上再往上调整10个级别,而是调整到正10的级别,所以多次运行此命令,进程的优先级不会再发生变化,将一直停留在+10级别。
注意:如果不是root权限,则侄只能降调度优先级而不能提高,即使是自己用户的进程,自己把它调高了后,优先级也不能再被调会原来的值了,除非使用root用户来调回去。系统重启后,对进程优先级的调整全部失效,所有进程的调度回到默认的初始级别。
转:linux设置进程优先级
转自:http://man.ddvip.com/linux/Mandrakelinuxref/process-priority.html系统中运行的每个进程都有一个优先级(亦称“nice 值”),其范围从 -20 (最高优先级)到 19 (最低优先级)。默认情况下,进程的优先级是 0 (“基本”调度优先级)。优先级比较大的进程(nice 值比较小,最低到 -20)相对优先级比较小的进程(直到 19)将比较频繁地被调度运行,因此就拥有更多的进程周期。一般用户只能降低它们自己进程的优先级别,并限于 0 到 19 之间。超级用户(root)可以将任何进程的优先级设定为任何值。
renice
如果某个或某些进程消耗了过多的系统资源,除了终止它们,您还可以更改它们的优先级。为此,请使用 renice 命令。其语法为:renice 优先级 [[-p] pid ...] [[-g] pgrp ...] [[-u] 用户名 ...]
其中,优先级是指优先级的值;pid (对多个进程请使用 -p 选项)表示进程 ID 号;pgrp (如果有多个,请用 -g)表示进程组 ID 号;而用户(如果不只一个,请用 -u)表示进程所有者的用户名。
假定您运行了一个执行长时间科学运算的进程(其 PID 为 785),但是您又想要玩一个游戏而想要释放一些系统资源。那么您可以:$ renice +15 785
这样,您的那个进程可能需要花费更长一些时间完成,不过它就不会从其他进程手里抢走 CPU 时间片。
如果您是系统管理员,而且您发觉某些用户执行了过多的进程并消耗了过多的系统资源时,您只需键入一个命令就可以改变这些用户进程的优先级:# renice +20 -u li_si
这样,li_si 的所有进程都将拥有最低优先级,因而就不会阻碍其他用户的进程了。
nice
既然您已经了解可以更改进程的优先级,您可能需要按照指定的优先级执行命令。为此,请使用 nice 命令。
此时,您需要把您要运行的命令作为 nice 的一个参数。而其另一个参数 -n 可用来设置优先级别。默认情况下 nice 将设置优先级为 10。
比如,您想要创建一张 Mandrakelinux 安装 CD-ROM 的 ISO 映像:$ dd if=/dev/cdrom of=~/mdk1.iso
在某些装配标准 IDE CD-ROM 的系统上,复制大量信息的进程将消耗过多系统资源。要避免复制操作阻碍其他进程,您可以用如下命令在一个比较低的优先级上启动该进程:$ nice -n 19 dd if=/dev/cdrom of=~/mdk1.iso
然后就可以继续工作了。