博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
平均负载及CPU上下文切换
阅读量:2741 次
发布时间:2019-05-13

本文共 1209 字,大约阅读时间需要 4 分钟。

结论

每秒上下文切换次数的大小,取决于CPU性能,一般来说,切换稳定,数值从百到万以内,都算正常:

cswch/s 切换多,说明进程在等待资源,可能发生了I/O等其他问题

nvcswch/sq 切换多,说明进程被强制调度,也就是争抢CPU,说明CPU有瓶颈
中断次数多了,说明CPU被中断程序占用,具体可以分析 /proc/interrupts文
vmstat 用来查看虚拟内存,也可以查看一些CPU总体的上下文切换情况

有用参数

  • cs: context switch 每秒钟上下文切换次数
  • in:interrupt 每秒钟系统中断次数
  • r:running or runnable 就绪队列的长度(运行中,等待运行的进程数)
  • b:blocked 处于不可中断的进程数(进程正在等待硬件设备的I/O)

使用pidstat -w查看每个进程的详细情况:

-----------------------------------------------------------------------------------------------------以下来自:

 

 

 

平均负载是指单位时间内,系统处于 可运行状态 和 不可中断状态 的平均进程数。简单理解,就是平均活跃进程数。

可运行状态:进程正在或等待使用CPU

不可中断状态:进程正在等待硬件设备的I/O,是系统对进程和硬件设备的一种保护机制。
最理想的情况是,每个CPU上刚好运行着1个进程,也就是平均负载等于CPU的个数。假如平均负载是2,那么意味着:

单核CPU上,有一半的进程竞争不到CPU

双核CPU上,所有的CPU刚好被完全占用
4核CPU上,意味着CPU有50%的空闲(idle)
注意,这里的核指逻辑核数,比如超线程的双核CPU,相当于4核。

因此,当平均负载比CPU个数还大时,就出现了系统过载。

在生产环境中,一般推荐平均负载不要高于CPU数量的70%

区别CPU使用率

CPU使用率是单位时间内CPU繁忙情况的统计。而平均负载包括正在使用CPU、等待CPU、等待IO的进程。具体来说:

CPU密集型进程,CPU使用率高,平均负载高

I/O密集型进程,平均负载高,CPU使用率低
大量等待CPU的进程,平均负载高,CPU使用率也会比较高
案例分析
准备工具
linux系统,并安装以下两款工具:yum install stress sysstat

stress: linux系统压力测试工具

sysstat:包含了常用的linux性能工具,这里用到它提供的两个命令:
mpstat: 多核CPU性能分析工具
pidstat: 进程性能分析工具,可实时查看cpu, 内存,I/O以及上下文切换等指标
场景一:CPU密集型进程
以root身份登录中断,在终端1执行如下命令:

终端2执行uptime查看平均负载的变化情况

终端3查看CPU使用率变化:

 

 

 

 

转载地址:http://howad.baihongyu.com/

你可能感兴趣的文章
配置spring-boot-actuator时候遇到的一些小问题
查看>>
无聊写的delphi7 调rest接口的例子
查看>>
delphi中httpencode使用注意事项
查看>>
动态创建tatabshell和表单例子
查看>>
RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭
查看>>
delphi 实现两个exe文件共享内存映像的代码
查看>>
centos7 常用命令
查看>>
键盘钩子
查看>>
鼠标钩子
查看>>
鼠标轨迹记录和回复
查看>>
记录拆花上shell
查看>>
delphi 防止程序重复执行
查看>>
delphi 线程应用简单例子
查看>>
C 取时间和写日志
查看>>
aix shell遍历某目录
查看>>
文件拆分的问题
查看>>
文件导入检测及提醒
查看>>
delphi 标题栏相关操作
查看>>
makefile参考
查看>>
MySQL:日期函数、时间函数总结(MySQL 5.X)
查看>>