linux CPU性能及工作状态查看指令
本博客主要讲解了日常运维过程中,查看系统状态的一些指令mpstat,vmstat,iostat,sar,top
0、准备知识
1> 衡量CPU性能的指标:
<1> 用户使用CPU
- CPU运行实时进程
- CPU运行niced process
- CPU运行常规用户进程
<2> 系统使用CPU
- 用于I/O管理:中断和驱动
- 用于内存管理:页面交换
- 用于进程管理:进程开始和上下文切换
<3> WIO:用于进程等待磁盘I/O而使CPU处于空闲状态的比率。
<4> CPU的空闲率,除了上面的WIO以外的空闲时间
<5> CPU用于上下文交换的比率
<6> nice
<7> real-time
<8> 运行进程队列的长度
<9> 平均负载
2> Linux常用监控CPU整体性能的工具
<1> mpstat: mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。
<2> vmstat:只能查看所有CPU的平均信息;查看cpu队列信息;
<3> iostat: 只能查看所有CPU的平均信息。
<4> sar: 与mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。
<5> top:显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。
1、mpstat指令
mpstat命令:主要用于多CPU 环境下,它显示各个可用CPU的状态。这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
- 命令格式:
mpstat [ 选项 ] [ <时间间隔> [ <次数> ] ] - 选项说明:
[ -A ] 展示所有cpu的状态
[ -I { SUM | CPU | ALL } ] 分三种情况展示 cpu的状态
[ -u ]
[ -P { [,…] | ON | ALL } ] 指定某个cpu,进行展示
[ -V ] 版本信息 参数说明:
实例分析:
[root@kvm ~]# mpstat -u
Linux 2.6.32-431.el6.x86_64 (kvm) 2016年08月02日 x86_64 (2 CPU)13时28分09秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
13时28分09秒 all 0.03 0.00 0.02 0.03 0.00 0.00 0.00 0.00 99.92
[root@kvm ~]# mpstat -P 0
Linux 2.6.32-431.el6.x86_64 (kvm) 2016年08月02日 x86_64 (2 CPU)13时28分47秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
13时28分47秒 0 0.03 0.00 0.02 0.00 0.00 0.00 0.00 0.00 99.95
[root@kvm ~]#
[root@kvm ~]# mpstat -P 1
Linux 2.6.32-431.el6.x86_64 (kvm) 2016年08月02日 x86_64 (2 CPU)13时28分50秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
13时28分50秒 1 0.03 0.00 0.02 0.05 0.00 0.00 0.00 0.00 99.90[root@kvm ~]# mpstat -A
Linux 2.6.32-431.el6.x86_64 (kvm) 2016年08月02日 x86_64 (2 CPU)13时29分11秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
13时29分11秒 all 0.03 0.00 0.02 0.03 0.00 0.00 0.00 0.00 99.92
13时29分11秒 0 0.03 0.00 0.02 0.00 0.00 0.00 0.00 0.00 99.95
13时29分11秒 1 0.03 0.00 0.02 0.05 0.00 0.00 0.00 0.00 99.9013时29分11秒 CPU intr/s
13时29分11秒 all 15.60
13时29分11秒 0 1.06
13时29分11秒 1 0.18- 字段说明:
2、vmstat指令
命令格式:
vmstat [-V] [-n] (选项) [delay [count]](参数)
选项说明:
-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表格方式显示事件计数器和内存状态;
-d:报告磁盘状态;
-p:显示指定的硬盘分区状态;
-S:输出信息的单位。
参数说明:
**事件间隔delay**:状态信息刷新的时间间隔; **次数count**:显示报告的次数。
实例分析:
[root@kvm ~]# vmstat -n 3 3 (三秒一次,共三次)
props ———–memory———- —swap– —–io—- –system– —–cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 1100728 188996 495396 0 0 0 1 8 7 0 0 100 0 0
0 0 0 1100720 188996 495396 0 0 0 0 16 14 0 0 100 0 0
0 0 0 1100720 188996 495396 0 0 0 0 12 11 0 0 100 0 0[root@kvm ~]# vmstat -S M 3 2 (以M为单位显示,默认为k)
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1074 184 483 0 0 0 1 8 7 0 0 100 0 0
0 0 0 1074 184 483 0 0 0 0 17 13 0 0 100 0 0[root@kvm ~]# vmstat -f
94103 forks字段说明:
Procs(进程)
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
b: 等待IO的进程数量。Memory(内存)
swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。Swap
si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在的Linux版本块的大小为1kb)
bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。system(系统)
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示)
us: 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id: 空闲时间百分比
3、iostat指令
iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
命令格式:
iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]选项说明:
-c:仅显示CPU使用情况;
-d:仅显示设备利用率;
-k:显示状态以千字节每秒为单位,而不使用块每秒;
-m:显示状态以兆字节每秒为单位;
-p:仅显示块设备和所有被使用的其他分区的状态;
-t:显示每个报告产生时的时间;
-x:显示扩展状态。参数说明:
间隔时间:每次报告的间隔时间(秒);
次数:显示报告的次数。实例分析:
命令:iostat -c 1 1
Linux 2.6.32-431.el6.x86_64 (kvm) 2016/08/02 x86_64 (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.03 0.00 0.02 0.03 0.00 99.92
命令:iostat -x /dev/sda1
Linux 2.6.32-431.el6.x86_64 (kvm) 08/02/2016 x86_64 (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.90 0.00 0.87 0.02 0.00 98.21
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda10.33 4.67 0.15 1.39 5.65 48.44 35.23 0.00 1.70 0.38 0.06
命令:iostat -d -m 2 2
Linux 2.6.32-431.el6.x86_64 (kvm) 08/02/2016 x86_64 (4 CPU)
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 28.75 0.04 2.17 1738866 96878990
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 3.00 0.00 0.03 0 0
- 字段说明:
4、sar指令
sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。
- 命令格式:
sar [ 选项 ] [ <时间间隔> [ <次数> ] ] 选项说明:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { [,…] | SUM | ALL | XALL } ] [ -P { [,…] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | … } ] [ -n { [,…] | ALL } ]
[ -o [ ] | -f [ ] ] [ –legacy ]
[ -i ] [ -s [ ] ] [ -e [ ] ]-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
主选项和报告:
-b I/O 和传输速率信息状况
-B 分页状况
-d 块设备状况
-I { <中断> | SUM | ALL | XALL }
中断信息状况
-m 电源管理信息状况
-n { <关键词> [,…] | ALL }
网络统计信息
关键词可以是:
DEV 网卡
EDEV 网卡 (错误)
NFS NFS 客户端
NFSD NFS 服务器
SOCK Sockets (套接字) (v4)
IP IP 流 (v4)
EIP IP 流 (v4) (错误)
ICMP ICMP 流 (v4)
EICMP ICMP 流 (v4) (错误)
TCP TCP 流 (v4)
ETCP TCP 流 (v4) (错误)
UDP UDP 流 (v4)
SOCK6 Sockets (套接字) (v6)
IP6 IP 流 (v6)
EIP6 IP 流 (v6) (错误)
ICMP6 ICMP 流 (v6)
EICMP6 ICMP 流 (v6) (错误)
UDP6 UDP 流 (v6)
-q 队列长度和平均负载
-r 内存利用率
-R 内存状况
-S 交换空间利用率
-u [ ALL ]
CPU 利用率
-v Kernel table 状况
-w 任务创建与系统转换统计信息
-W 交换信息
-y TTY 设备状况
参数说明:
间隔时间:每次报告的间隔时间(秒);
次数:显示报告的次数。实例分析:
命令:sar -o temp 60 10 //观察系统部件10分钟,并对数据进行排序:
察看内存和交换空间的使用率:
命令:sar -r
09时20分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
09时30分01秒 1098232 919236 45.56 191632 495492 356908 17.69
09时40分01秒 1097992 919476 45.58 191744 495484 356908 17.69命令:sar -u
Linux 2.6.32-431.el6.x86_64 (kvm) 2016/08/02日 x86_64 (2 CPU)
00时00分01秒 CPU %user %nice %system %iowait %steal %idle
00时10分01秒 all 0.03 0.00 0.02 0.04 0.00 99.91
00时20分01秒 all 0.03 0.00 0.02 0.03 0.00 99.92字段说明:
kbmemfree与kbmemused字段分别显示内存的未使用与已使用空间,后面跟着的是已使用空间的百分比(%memused字段)。kbbuffers与kbcached字段分别显示缓冲区与系统全域的数据存取量,单位为KB。
5、top指令
top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
命令格式:
top (选项)选项说明:
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。参数说明:
实例分析:
top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92 Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached
字段说明:
top - 09:44:56 [当前系统时间],
16 days [系统已经运行了16天],
1 user [个用户当前登录],
load average: 9.59, 4.75, 1.92 [系统负载,即任务队列的平均长度]
Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
143 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比], 0.2%id[空闲CPU百分比],
0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap: 5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量],
6、uptime指令
命令:uptime
20:55:40 up 24 days, 3:06, 1 user, load average: 8.13, 5.90, 4.94
命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。
一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问题。对 于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。
参考文献
[1]http://www.cnblogs.com/xianghang123/archive/2011/08/25/2153591.html
[2]http://man.linuxde.net/vmstat
[3] http://man.linuxde.net/iostat
[4] http://man.linuxde.net/mpstat
[5]http://man.linuxde.net/sar
[6]http://man.linuxde.net/top
[7]http://blog.csdn.net/szchtx/article/details/38455385
linux CPU性能及工作状态查看指令相关推荐
- Linux - CPU性能评估_详解查看CPU性能的命令
文章目录 vmstat命令 sar命令 统计单个CPU的使用情况 iostat -c 命令 uptime命令 小结 vmstat命令 vmstat命令可以显示关于系统各种资源之间相关性能的简要信息,这 ...
- Linux CPU 性能优化指南
本文作者:allenxguo,腾讯 QQ 音乐后台开发工程师 本文主要帮助理解 CPU 相关的性能指标,常见的 CPU 性能问题以及解决方案梳理. 系统平均负载 简介 系统平均负载:是处于可运行或不可 ...
- Linux CPU性能监控工具
微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 架构 性能指标 监控工具 故障分析 架构 CPU架构主要包括桌面端和移动端两种. 对于桌面端,主要有Intel和AMD两家 ...
- Linux CPU性能优化 —— CPU使用率及高CPU使用率排查
文章目录 CPU使用率的定义 查看CPU使用率:top和pidstat 排查高CPU使用率:pref 参考文献 写在前面: 由于之前在开发分布式系统中由于云服务器性能原因,导致系统总是断连等错误.但是 ...
- 酷睿i7cpu适合的linux,CPU性能篇 - Core i7-4770K Linux之旅:有喜有忧_Linux新闻_Linux公社-Linux系统门户网站...
CPU性能篇-- Rodinia是学术界经常使用的科学测试工具.OpenMP LavaMD负载中,4770K相比3770K快了12%,8350表现也可以. OpenMP Leukocyte负载里,47 ...
- Linux CPU信息和使用情况查看(CentOS)
一.CPU信息查看 cat /proc/cpuinfo| grep "physical id"| sort -u | wc -l #查看是物理CPU个数,-u和uniq都是去重作用 ...
- linux netstat命令:网络状态查看命令
我们需要先简单了解一下端口的作用.在互联网中,如果 IP 地址是 IP 服务器在互联网中唯一的地址标识,那么大家可以想象一下:我有一台服务器,它有固定的公网 IP 地址,通过 IP 地址可以找到我的服 ...
- Linux Cpu性能排查
分析 Linux平均负载表示可运行和正在运行的队列长度以及不可中断进程个数 uptime # uptime 15:41:50 up 62 days, 21:29, 1 user, load avera ...
- linux常用查看进程,Linux常用的进程管理和查看指令
&背景工作做符 ctrl+z暂停 ctrl + c 停止 jobs [-l(list) , r(running jobs) ,-s(stop jobs)] 观察背景工作的状态 fg %j ...
最新文章
- Trends Genet | 王关红和Jackson Champer综述共生菌和基因驱动技术防控蚊媒疾病
- 马化腾:我创办腾讯的这些年
- https原理:证书传递、验证和数据加密、解密过程解析 (转)
- C++False position求根的实现算法(附完整源码)
- mybatis源码刨析总结
- C#中 Convert与Parse的区别
- 使用mysqldump进行逻辑备份
- php---遍历一个数组获得一个新的数据结构
- linux平台 oracle 数据库 安装文档
- linux下无sudo权限安装MatlabR2016
- CnPack源码模板功能快速添加注释
- 我的团长我的团第二十四集
- 有感于李连杰壹基金计划
- 优秀程序员的博客有哪些?
- 古诗词网站源码 php,帝国cms 诗词整站源码
- 严重: 异常将上下文初始化事件发送到类的侦听器实例.[org.springframework.web.co
- linux 内网环境搭建 maven 私库
- python游戏制作rpg_用 Python 语言来写游戏
- 【Qt】QML快速入门7——输入元素
- 积分制管理系统:员工查看积分和申请非任务积分
热门文章
- 【iMessage苹果推群发】软件安装利用dropbox分享外链进行访问原始文件
- 用visionpro的软件连basler相机,实时模式下一直显示logo
- php 短信互动,科学网—与著名心理学家车文博先生短信互动 - 蒋永华的博文
- java box 纹理_科普|Celine box五种经典皮料的解说
- AI绘画Stable Diffusion关键字技巧分享
- Linux可以打开cdr文件吗,CDR 文件扩展名: 它是什么以及如何打开它?
- excel交集和并集的意思_Excel中定义区域名称或区域并集交集求和的操作方法
- C语言,1 3 5 7 9…… 9999,五年级上册数学简便运算题
- 游戏里常见的动态难度调节机制(DDA, dynamic difficulty adjustment)
- python 操作npy文件