从uptime、stress、mpstat、pidstat观察CPU密集型、IO密集型、进程密集型切换的系统性能

uptime

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ uptime10:27:10 up 7 min,  1 user,  load average: 1.32, 0.99, 0.49

结果分别对应:当前时间、系统运行时间、当前用户数目、过去 1 分钟、5 分钟、15 分钟的平均负载(Load
Average)

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,和 CPU使用率没有直接关系。

可运行状态进程:正在使用CPU或者正在等待CPU的进程;即ps命令看到的,处于R状态的进程

不可中断状态进程:正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如等待硬件设备的I/O响应,即ps命令中看到的D状态的进程。

不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
下面语句可以得到CPU个数,一般来说,平均负载大于CPU的0.7倍时就需要注意了,大于CPU个数的话就会出现过载。

grep 'model name' /proc/cpuinfo | wc -l
8

通过对于平均负载的定义可以看出,它不仅包括了正在使用CPU的进程,还包括等待CPU和等待IO的进程。

CPU使用率与平均负载的关系:

CPU密集型进程,使用大量CPU会导致平均负载升高,两者一致。

I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定很高。

大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高。
接下来是实测:

CPU 密集型进程

stress 是一个 Linux 系统压力测试工具,我们在终端1运行该工具。
终端2,不断运行uptime,可以发现平均负载在不断上升。
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以
及所有 CPU 的平均指标,我们在终端3运行它。可以发现有一个核的使用率为100%,但是iowait为0.
在这里插入图片描述
通过运行# pidstat -u 5 1,可以看到是运行stress的进程占用率为100%
在这里插入图片描述

IO密集型进程

stress 命令,但这次模拟 I/O 压力,即不停地执行 sync,下面是显示效果,可以发现iowait很高,导致了平均负载很高。
在这里插入图片描述
在这里插入图片描述

大量进程场景

由于机子有8个核,我开12个进程用作运行stress,这样CPU处于过载状态,10.92明显是比8大的,再用pidstat可以看出
在这里插入图片描述
个进程等待 CPU 的时间(也就是代码块中的%wait 列)高达 60~75%,这里就是上图的倒数第二列显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析和创建xml

http://www.cnblogs.com/Li-Cheng/p/3610474.html 转载于:https://www.cnblogs.com/mxw272618/p/3769900.html

python - VirtualEnv virtualenvwrapper

VirtualEnv 是什么 VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装。 为什么要用 - 隔离项目之间的第三方包依赖,如A项目依赖django1.2.5,B项目依赖django1.3。- 为部署应用…

多台计算机共享内存_共享内存多处理器和指令执行| 计算机架构

多台计算机共享内存共享内存多处理器 (Shared Memory Multiprocessor) There are three types of shared memory multiprocessor: 共有三种类型的共享内存多处理器: UMA (Uniform Memory Access) UMA(统一内存访问) NUMA (Non- uniform Memory Access) NUMA(非统一…

htop与atop

htop htop使用详解–史上最强 atop Linux atop监控工具部署

js未看的文章

Web前端研发工程师编程能力飞升之路 在浏览器的背后(一) —— HTML语言的词法解析 组件化的前端开发流程 用js书写UI组件之js基础知识 GC与JS内存泄漏 蓝色理想之前端开发 w3c JavaScript Puzzlers react AngularJS入门教程 jQuery源码分析-如何做jQuery…

方法重写,隐藏在子类父类中的各种调用实践

一.子类和父类方法之间的关系 1.当子类和父类有方法完全相同的方法 namespace ConsoleApplication2 {class Program{static void Main(string[] args){B b new B();A a new A();A c new B();b.Show();a.Show();c.Show();Console.Read();}}public class A{public void Show()…

向量余弦值python_向量/矩阵的余弦值打印(元素明智的操作) 使用Python的线性代数

向量余弦值pythonPrerequisite: 先决条件: Defining a Vector 定义向量 Defining a Matrix 定义矩阵 Numpy is the library of function that helps to construct or manipulate matrices and vectors. The function numpy.cos(x) is a function used for generati…

centos 6.5网卡dhcp不能获得网关

环境:vmware centos6.5 添加两个虚拟网卡。一个自动获取ip(用于上网-桥接) 一个手动(与主机通信用于ssh-NAT)。 因为自已手动改了一下ifcfg-eth0里面的HWADDR地址。造成 eth0网卡不能识别。多出一个eth2的网卡。 配置eth2网卡,可以自动获取到ip地址 但用netstat -r…

CPU上下文切换(系统调用、进程上下文、线程上下文、中断上下文)

CPU寄存器,与程序计数器(存储CPU正在执行的指令位置,或者即将执行的下一条指令的位置)共同组成CPU上下文。 CPU上下文切换指的是:把前一个任务的CPU上下文保存起来,然后加载新任务的上下文到这些寄存器和程…

(解决)从同事那里取来的工程不能编译运行,出现以下错误,求帮助

错误 6 未能从程序集 C:\Program Files (x86)\MSBuild\Microsoft\Silverlight for Phone\v4.0\Microsoft.Phone.Build.Tasks.dll 加载任务“Microsoft.Phone.Build.Tasks.ValidateWMAppManifest”。 Could not load file or assembly Microsoft.Build.Utilities, Version2.0.0…

编程 小数位数_使用动态编程的n位数的非递减总数

编程 小数位数Problem statement: 问题陈述: Given the number of digits n, find the count of total non-decreasing numbers with n digits. 给定位数n ,找到具有n位数字的非递减总数。 A number is non-decreasing if every digit (except the fir…

vmstat、sysbench、/proc/interrupts,性能压测

如何查看系统的上下文切换情况 vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。 # 每隔 5 秒输出 1 组数据 vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r …

sql查询中自动统计某项数量

select * from dbo.Vehicle_Maintain_Details A inner join ( select MaintainType as tempTypeName,count(ID) as num from dbo.Vehicle_Maintain_Details group by MaintainType) B on A.MaintainTypeB.tempTypeName转载于:https://www.cnblogs.com/ryan-wan/archive/2013/0…

一个简易无锁池

一个简易 无锁池 1.所有读写无等待,不需要判断条件直接读写(除自动扩充容量时),效率是一般带锁或带条件判断池的两倍以上。 2.预先开辟2的幂大小容量,可自增,每次翻倍 3.仅提供思路,工程应用可靠性还不确定…

在给定约束下可以使用a,b和c形成的字符串数

Problem statement: 问题陈述: Given a length n, count the number of strings of length n that can be made using a, b and c with at-most one b and two cs allowed. 给定长度n ,计算可以使用a , b和c且长度最多为b和两个c的长度为n的…

Robotlegs轻量级AS3框架

Robotlegs是一个用来开发Flash,Flex和AIR应用的纯AS3微架构(框架)。Robotlegs专注于将应用程序各层排布在一起并提供它们相互通讯的机制。Robotlegs试图通过提供一种解决常见开发问题的经过时间检验的架构解决方案来加速开发。Robotlegs无意锁定你到框架&#xff0c…

Python | 字符串isdecimal(),isdigit(),isnumeric()和Methods之间的区别

The methods isdigit(), isnumeric() and isdecimal() are in-built methods of String in python programming language, which are worked with strings as Unicode objects. These functions return either true or false. 方法isdigit() , isnumeric()和isdecim…

mssql2000 数据库一致性错误修复

一般情况下,引起分配错误的原因是磁盘损坏或突然停电;一致性错误可能是数据库中的表或索引坏,一般都可修复。1、查看红色字体,并把有错误的数据库表名记录下来,或把索引损坏的表名记录下来。2、把数据库设置为单用户模…

Linux系统上的程序调优思路概要

目录文件系统Linux内核应用程序架构设计性能监控性能测试CPU内存网络磁盘IO文件系统 Linux内核 应用程序 架构设计 性能监控 性能测试 CPU 内存 网络 磁盘IO