进程的优先级
Posted 酱油拌饭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程的优先级相关的知识,希望对你有一定的参考价值。
进程的优先级
[toc]
什么是优先级
优先级别高的进程,可以优先享用系统的资源
优先级的定义和配置
在启动进程时,为不同的进程使用不同的调度策略
nice值的高低决定进程的优先使用资源
nice值高:表示优先级越低,例如19,该进程容易将CPU使用量给其他进程
nice值低:表示优先级越高,例如-20,该进程很难让去CPU资源给其他进程
#设置优先级执行命令
nice -n (1-19) 命令
例:nice -n 19 vim 1.txt
##重置,已运行的程序优先级
命令: renice -n -(1-20) PID
后台进程管理
&符的用处
# 在执行的命令后面加 & 会直接将该命令放在后台执行
例 ping baidu.com & 就是把该命令放到后台执行
Ctrl + z
jobs bg fg
# 先把进程放在后台暂停 配合 bg将暂停的进程,在后台恢复运行
# 将执行的命令放入后台执行,并且将输出结果保存到 nohup.out文件中
nohup ping baidu.com &
# 将进程放入后台(开启一个子shell)
screen (没有命令需要下载) yum install -y screen
-ls:查看所有screen的后台进程
-r:指定后台进程号,进入该后台进程
-S:指定后台进程的名字
Ctrl + a + d:放在后台执行
平均负载
什么是平均负载
平均负载是指,单位时间内,系统处于可运行状态(R)和不可中断状态(D)的平均进程数,也就是平均活跃进程数
平均负载多少合理
理想情况,一个cpu一个进程最合理,也就是4核cpu,平均负载为4的时候最合理。但是,通常我们会认为平均负载到了70%的时候,就应该观察了。如果是4核CPU,那么就在负载2.8时进行观察
#查看CPU的个数
1.ll /proc/cpuinfo
2.进入 top 按 1
lscpu
CPU类型
CPU密集型:计算相关
IO密集型:数据库相关
测试负载分析实战
领导:某一台服务器,很卡,怎么办?
卡的原因:服务器,负载太高
如何定位,什么程序,导致负载高?
如何定位,负载高,是哪个硬件引起的?
#模拟工具
stress (没有命令需要安装) yum install -y stress
stress是Linux系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
#使用工具
mpstat是多核CPU性能分析工具,用来实时检查每个CPU的性能指标,以及所有CPU的平均指标。
pidstat是一个常用的进程性能分析工具,用来实时查看进程的CPU,内存,IO,以及上下文切换等性能指标
#使用stress命令模拟4个占用cpu进程
[root@localhost ~]# stress --cpu 4 --timeout 600
#使用mpstat命令查看,没5秒显示一次数据(可修改)
[root@localhost ~]# mpstat -P ALL 5
下面可以看出,是用户态的进程导致CPU过高
Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 05/06/2022 _x86_64_ (4 CPU)
07:56:14 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:56:19 PM all 99.95 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:19 PM 0 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:19 PM 1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:19 PM 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:56:19 PM 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
#使用pidstat查看
[root@localhost ~]# pidstat -u 5 2
-u指定几秒输出一次数据 2 ,总共输出2组数据
#也可以使用stress命令让io负载升高
[root@localhost ~]# stress --io 100 --timeout 600
#总结
1.系统卡顿时使用top命令查看系统负载 注:是系统负载
2.看系统负载 1分种 5分钟 15分钟的负载趋势
3.查看时什么情况导致负载上升
mpstat -p all 看是用户态,还是内核态,导致负载上升
用户态:CPU使用率,大量进程
内核态:磁盘IO,压缩文件,网络存储挂在,下载文件,数据库查询语句
4.查看是那个程序引起的用户态内核态负载上升
pidstat -u 5 2
5.查看了是某个进程后
问题责任在于运维:查看是否是某条命令导致 查看是不是某个服务导致
问题责任在于开发:查看开发的程序日志,导出日志,交给开发
以上是关于进程的优先级的主要内容,如果未能解决你的问题,请参考以下文章