top 修改进程的优先级_mssguo的博客-爱代码爱编程
top命令使用介绍
top 命令能够实时显示系统中各个进程的资源占用状况,其命令语法格式如下:
top [选项]
注意:top默认持续动态输出显示,且默认5秒就动态显示一次,按q或Ctrl+C退出;
常用参数如下:
-d number :表示指定每隔多少秒显示一次,默认是5秒;
-p :指定查看某个进程;如 top -p 2016
-u :指定查看某个用户;如 top -u jenkins
-n :设置退出前屏幕刷新的次数;如 top -bn 1
-b :将top信息编排成适合输出到文件,需要与-n刷新参数配合;如 top -bn 1
[root@master ~]# top
top - 09:57:49 up 2 days, 16:00, 2 users, load average: 0.10, 0.19, 0.22
Tasks: 158 total, 1 running, 157 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.6 us, 2.1 sy, 0.0 ni, 95.9 id, 0.2 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 1863032 total, 90792 free, 1017648 used, 754592 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 662684 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2972 root 20 0 1107860 294168 28336 S 8.3 15.8 510:47.49 kube-apiserver
1263580 root 20 0 823020 84096 36224 S 4.3 4.5 19:38.83 kube-controller
1199 root 20 0 1829684 76572 24964 S 4.0 4.1 279:50.16 kubelet
2738 root 20 0 10.7g 59376 14008 S 2.0 3.2 137:48.12 etcd
1451 root 20 0 1359316 65896 9328 S 1.0 3.5 98:08.62 dockerd
1263592 root 20 0 754048 38160 19616 S 0.7 2.0 2:34.95 kube-scheduler
9 root 20 0 0 0 0 S 0.3 0.0 19:48.35 rcu_sched
14 root 20 0 0 0 0 S 0.3 0.0 3:03.59 ksoftirqd/1
441 root 20 0 0 0 0 S 0.3 0.0 7:14.34 xfsaild/dm-0
PID 表示进程的唯一ID号
USER 该进程所属用户
PR 优先级,数值越小优先级越高
NI 优先级,数值越小优先级越高,取值-20-19,默认0
VIRT 进程使用的虚拟内存大小,单位KB
RES 进程使用的物理内存大小,单位KB
SHR 共享内存大小,单位KB,计算一个进程实际使用内存=物理内存(RES)-共享内存(SHR)
S 进行状态,status的缩写,S表示sleep,R表示running
%CPU 进程占用物理CPU的百分比
%MEM 进程占用物理总内存百分比
TIME+ 进程运行时间
COMMAND 进程名
进程优先级
什么时候要用到进程的优先级呢?当cpu负载过高是,如cpu使用率>=90%以上,这个时候进程的优先级就会起作用。
PR 优先级,数值越小优先级越高
NI 优先级,数值越小优先级越高,取值-20至19,默认0(NI是NICE的缩写)
注意:我们只能修改的是NI的优先级,不能修改PR
修改进程的优先级–使用top命令
1、top命令查看要调整的进程,假设要调整pid为2606的进程的NI优先级
[root@nginx ~]# top
top - 09:53:16 up 2 days, 21:22, 2 users, load average: 0.04, 0.03, 0.05
Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861280 total, 445496 free, 2176488 used, 1239296 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1375040 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1112 root 20 0 338544 4804 3656 S 0.3 0.1 11:10.86 vmtoolsd
2606 jenkins 20 0 4878504 1.3g 24416 S 0.3 35.0 19:25.06 java
1 root 20 0 199912 4728 2620 S 0.0 0.1 2:46.78 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:02.88 kthreadd
2、输入r,然后输入进程的pid后按回车
[root@nginx ~]# top
top - 09:56:31 up 2 days, 21:25, 2 users, load average: 0.11, 0.06, 0.05
Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861280 total, 445372 free, 2176612 used, 1239296 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1374916 avail Mem
PID to renice [default pid = 1] 2606 #输入r后这里会提示你输入要调整的进程的pid后按回车
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1112 root 20 0 338544 4804 3656 S 0.3 0.1 11:10.86 vmtoolsd
2606 jenkins 20 0 4878504 1.3g 24416 S 0.3 35.0 19:25.06 java
1 root 20 0 199912 4728 2620 S 0.0 0.1 2:46.78 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:02.88 kthreadd
3、输入优先级,数值范围-20至19,数值越低,表示优先级越高
[root@nginx ~]# top
top - 09:56:31 up 2 days, 21:25, 2 users, load average: 0.11, 0.06, 0.05
Tasks: 150 total, 1 running, 149 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861280 total, 445372 free, 2176612 used, 1239296 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1374916 avail Mem
Renice PID 2606 to value :-5 #输入数值-5后按回车
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1112 root 20 0 338544 4804 3656 S 0.3 0.1 11:10.86 vmtoolsd
2606 jenkins 15 -5 4878504 1.3g 24416 S 0.3 35.0 19:25.06 java #NI优先级已经改变了,同时PR也跟着改变了
1 root 20 0 199912 4728 2620 S 0.0 0.1 2:46.78 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:02.88 kthreadd
修改进程的优先级–使用renice命令
1、查看进程的优先级(可以通过ps -ef 、netstat -lnutp、top命令都能查看到你想要查看的进程的pid)
[root@nginx ~]# top -p 2606 #top -p查看指定进程的信息
top - 10:13:24 up 2 days, 21:42, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861280 total, 444604 free, 2177376 used, 1239300 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1374152 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2606 jenkins 15 -5 4878504 1.3g 24416 S 0.3 35.0 19:27.70 java #查看现在进程的优先级NI的值为-5
2、使用renice命令调整进程的优先级
[root@nginx ~]# renice --help #查看renice命令的使用帮助
Usage:
renice [-n] <priority> [-p|--pid] <pid>...
renice [-n] <priority> -g|--pgrp <pgid>...
renice [-n] <priority> -u|--user <user>...
Options:
-g, --pgrp <id> interpret argument as process group ID
-n, --priority <num> specify the nice increment value
-p, --pid <id> interpret argument as process ID (default)
-u, --user <name|id> interpret argument as username or user ID
-h, --help display help text and exit
-V, --version display version information and exit
For more information see renice(1).
[root@nginx ~]# renice -n -15 -p 2606 #调整进程的NI的优先级为-15
2606 (process ID) old priority -5, new priority -15
[root@nginx ~]# top -p 2606 #再次查看进程的信息
top - 10:19:08 up 2 days, 21:48, 2 users, load average: 0.08, 0.03, 0.05
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861280 total, 443984 free, 2177996 used, 1239300 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1373532 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2606 jenkins 5 -15 4878504 1.3g 24416 S 0.3 35.0 19:28.63 java #查看现在进程的优先级NI的值为-15