调整nice值改变进程优先级
1、nice概述:在LINUX系统中,Nice值的范围从-20到+19(不同系统的值范围是不一样的),正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。具有最高优先级的程序,其nice值最低,所以在LINUX系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的CPU时间的更大使用份额,这也就是nice的名称的来意。默认优先级是0
2、在命令运行前,调整进程nice值,让进程使用更多的CPU
语法: nice -n 优先级数字 命令
例:将vim a.txt命令的优先级,从默认的0级别调高到-5级别
[root@xuegod63 ~]# nice -n -5 vim a.txt #先不要退出这个vim命令。
再打开另一个终端窗口执行以下命令:
[root@xuegod63 ~]# ps -axu | grep a.txt
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 24318 0.0 0.2 143624 3280 pts/4 S+ 17:00 0:00 vim b.txt
[root@xuegod63 ~]# top -p 24318
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24219 root 15 -5 140m 3336 2200 S 0.0 0.3 0:00.08 vim
2、使用renice修改正在运行的进程的优先级
语法:renice -n 5 PID #修改进程优先级
例:将先前vim 的PID 24318优先级调整为级别6
[root@xuegod63 ~]# renice -n 6 24318
[root@xuegod63 ~]# top -p 24318
。。。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24219 root 15 6 140m 3336 2200 S 0.0 0.3 0:00.08 vim
3、进程优先级不可以超过 -20 到19范围
[root@xuegod63 ~]# renice -n -21 24219 #发现我想给-21级别,但最终只能达到-20级别。
24219: old priority -20, new priority -20
[root@xuegod63 ~]# renice -n 20 24219 #发现我想给20级别,但最终只能达到19级别。
24219: old priority -20, new priority 19
通过这个例子,告诉我们进程优先级不可以超过 -20 到19范围
9.1.2 设置进程的CPU亲和力
taskset 作用:在多核的情况下,可以认为指定一个进程在哪颗CPU上执行程序,减少进程在不同CPU之前切换的开销。
1、安装taskset命令:
[root@xuegod63 ~]# yum install util-linux
2、taskset语法: taskset -cp [CPU ID号] 命令或进程ID
常用参数:
-p, --pid 在已经存在的 pid 上操作
-c, --cpu-list 以列表格式显示和指定CPU
例1:本服务器是4核CPU ,指定vim命令在第一个CPU上运行。
[root@xuegod63 ~]# taskset -c 0 vim a.txt #第一个CPU的 ID是0。
在另一个终端下运行:
[root@xuegod63 ~]# ps -axu | grep vim
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 2614 1.3 0.2 143696 3332 pts/0 S+ 18:39 0:00 vim a.txt
[root@xuegod63 ~]# taskset -cp 2614
pid 2614's current affinity list: 0 #affinity [əˈfɪnəti] 密切关系
例2:查sshd进程运行在哪几个CPU上
[root@xuegod63 ~]# ps -axu | grep sshd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 2030 0.0 0.0 64068 1140 ? Ss 18:26 0:00 /usr/sbin/sshd
[root@xuegod63 ~]# taskset -cp 1087
pid 1087's current affinity list: 0-3 #0-3说明sshd进程可以使用4个CPU核心处理数据。
注: 我们的CPU是4核心,所以taskset -c后可以跟: 0,1,2,3
例3:指定vim c.txt 程序运行在第2和第4个CPU上
[root@xuegod63 ~]# taskset -c 1,3 vim b.txt
[root@xuegod63 ~]# ps -axu | grep vim
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 6314 1.5 0.2 143612 3280 pts/1 S+ 14:41 0:00 vim b.txt
root 6317 0.0 0.0 103300 848 pts/2 S+ 14:41 0:00 grep vim
[root@xuegod63 ~]# taskset -cp 6314
pid 5069's current affinity list: 1,3