学向勤中得,萤窗万卷书。这篇文章主要讲述进程的优先级相关的知识,希望能为你提供帮助。
进程的优先级[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/cpuinfo2.进入 top 按 1
lscpu
CPU类型
CPU密集型:计算相关
IO密集型:数据库相关
测试负载分析实战
领导:某一台服务器,很卡,怎么办? 卡的原因:服务器,负载太高 如何定位,什么程序,导致负载高?
如何定位,负载高,是哪个硬件引起的?
#模拟工具
stress (没有命令需要安装)yum install -y stressstress是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.查看了是某个进程后
问题责任在于运维:查看是否是某条命令导致查看是不是某个服务导致
问题责任在于开发:查看开发的程序日志,导出日志,交给开发
推荐阅读
- Java设计模式—适配器模式(adapter pattern)
- 有话说2020 年 12 月某一天 15 个程序员远程视频“真实”面试,面试记录过程
- 手动生成kubeadm token用于加入新的worker节点
- linux 修改home 目录
- Linux下如何安转JDK
- 高可用之弹性伸缩
- 8个办公小技巧分享给你!1分钟学会让你每天节约30分钟!
- Redis事务和乐观锁原理详解
- “隐形空中接口”空中显示和输入设备