1.top

使用权限:所有使用者

使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

说明:即时显示process的动态

d :改变显示的更新速度,或是在交谈式指令列( interactive command)按s

q :没有任何延迟的显示速度,如果使用者是有superuser的权限,则top将会以最高的优先序执行

c :切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S :累积模式,会将己完成或消失的子行程( dead child process )的CPU time累积起来

s :安全模式,将交谈式指令取消,避免潜在的危机

i :不显示任何闲置(idle)或无用(zombie)的行程

n :更新的次数,完成后将会退出top

b :批次档模式,搭配"n"参数一起使用,可以用来将top的结果输出到档案内

范例:

显示更新十次后退出:top -n 10

使用者将不能利用交谈式指令来对行程下命令:top -s

将更新显示二次的结果输入到名称为top。log的档案里:top -n 2 -b < top.log

2.vmstat

正如我们之前讨论的任何系统的性能比较都是基于基线的,并且监控CPU的性能就是以上3点,运行队列、CPU使用率和上下文切换。以下是一些对于CPU很普遍的性能要求:

1。对于每一个CPU来说运行队列不要超过3,例如,如果是双核CPU就不要超过6;

2。如果CPU在满负荷运行,应该符合下列分布,

a) User Time:65%~70%

b) System Time:30%~35%

c) Idle:0%~5%

procs

r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。

b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

memory

swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常

free 当前的空闲页面列表中内存数量(k表示)

buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。

cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。

swap

si 由内存进入内存交换区数量。

so由内存交换区进入内存数量。

IO

bi 从块设备读入数据的总量(读磁盘)(每秒kb)。

bo 块设备写入数据的总量(写磁盘)(每秒kb)

这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

system (显示采集间隔内发生的中断数)

in 列表示在某一时间间隔中观测到的每秒设备中断数。

cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。

cpu (表示cpu的使用状态)

us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。

sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。

wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。

id 列显示了cpu处在空闲状态的时间百分比。

3. mpstat

对于上下文切换要结合CPU使用率来看,如果CPU使用满足上述分布,大量的上下文切换也是可以接受的。

常用的监视工具有:vmstat,top,dstat和mpstat。

#vmstat

r表示运行队列的大小,

b表示由于IO等待而block的线程数量,

in表示中断的数量,

cs表示上下文切换的数量,

us表示用户CPU时间,

sys表示系统CPU时间,

wa表示由于IO等待而是CPU处于idle状态的时间,

id表示CPU处于idle状态的总时间。

#dstat –cip

可以给出每一个设备产生的中断数。

我们可以看到这里有3个设备号92,107和109。设备名和设备号的关系我们可以参考文件/proc/interrupts,这里109代表网卡eth1。

#cat /proc/interrupts

#mpstat [-P {|ALL}] [internal [count]]

-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值;

internal 相邻的两次采样的间隔时间;

count 采样的次数,count只能和delay一起使用;

当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。

mpstat可以显示每个CPU的运行状况。

%user:在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程(usr/total)*100

%nice:在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100

%sys:在internal时间段里,内核时间(%) (system/total)*100

%iowait:在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100

%irq:在internal时间段里,硬中断时间(%) (irq/total)*100

%soft:在internal时间段里,软中断时间(%) (softirq/total)*100

%idle:在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

总结的说,CPU性能监控包含以下方面:

检查系统的运行队列,确保每一个CPU的运行队列不大于3。

确保CPU使用分布满足70/30原则(用户70%,系统30%)。

如果系统时间过长,可能是因为频繁的调度和改变优先级。

CPU Bound进程总是会被惩罚(降低优先级)而IO Bound进程总会被奖励(提高优先级)。

4. sar

常用格式:sar [options] [-A] [-o file] t [n]

t为采样间隔,n为采样次数,默认值是1;

-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。

-A:所有报告的总和

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息

cpu资源监控

sar -u -o test 10 3

每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中。

CPU:all 表示统计信息为所有CPU的平均值。

%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。

%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。

%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。

%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量

3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。

inode、文件和其他内核表监控

#sar -v 10 3

每10秒采样一次,连续采样3次,观察核心表的状态。

dentunusd:目录高速缓存中未被使用的条目数量

file-nr:文件句柄(file handle)的使用数量

inode-nr:索引节点句柄(inode handle)的使用数量

pty-nr:使用的pty数量

内存和交换空间监控

#sar -r 10 3

每10秒采样一次,连续采样3次,监控内存分页。

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间。

kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间。

%memused:这个值是 kbmemused 和内存总量(不包括swap)的一个百分比。

kbbuffers和kbcached:这两个值就是free命令中的buffer和cache。

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。

%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比。

内存分页监控

#sar -B 10 3

每10秒采样一次,连续采样3次,监控内存分页。

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)。

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)。

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)。

majflt/s:每秒钟产生的主缺页数。

pgfree/s:每秒被放入空闲队列中的页个数。

pgscank/s:每秒被kswapd扫描的页个数。

pgscand/s:每秒直接被扫描的页个数。

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数。

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比。

I/O和传送速率监控

#sar -b 10 3

每10秒采样一次,连续采样3次,报告缓冲区的使用情况。

tps:每秒钟物理设备的 I/O 传输总量。

rtps:每秒钟从物理设备读入的数据总量。

wtps:每秒钟向物理设备写入的数据总量。

bread/s:每秒钟从物理设备读入的数据量,单位为块/s。

bwrtn/s:每秒钟向物理设备写入的数据量,单位为块/s。

进程队列长度和平均负载状态监控

#sar -q 10 3

每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:

runq-sz:运行队列的长度(等待运行的进程数)。

plist-sz:进程列表中进程(processes)和线程(threads)的数量。

ldavg-1:最后1分钟的系统平均负载(System load average)。

ldavg-5:过去5分钟的系统平均负载。

ldavg-15:过去15分钟的系统平均负载。

系统交换活动信息监控

#sar -W 10 3

每10秒采样一次,连续采样3次,监控系统交换活动信息。

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswpout/s:每秒系统换出的交换页面(swap page)数量

设备使用情况监控

#sar -d 10 3 –p

每10秒采样一次,连续采样3次,报告设备使用情况,

参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

tps:每秒从物理磁盘I/O的次数。多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的。

rd_sec/s:每秒读扇区的次数。

wr_sec/s:每秒写扇区的次数。

avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。

avgqu-sz:磁盘请求队列的平均长度

await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒)。

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间。

%util:I/O请求占CPU的百分比,比率越大,说明越饱和。

1. avgqu-sz 的值较低时,设备的利用率较高。

2. 当%util的值接近 1% 时,表示设备带宽已经占满。

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来。

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看。

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看。

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看。

5. iostat

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

查看TPS和吞吐量信息

#iostat -d -k 1 3

tps:该设备每秒的传输次数,一次传输的意思是“一次I/O请求”

kB_read/s:每秒从设备读取的数据量

kB_wrtn/s:每秒向设备写入的数据量

kB_read :读取的总数据量

kB_wrtn :写入的总数量数据量

查看设备使用率(%util)、响应时间(await)

#iostat -d -x -k 1 3

rrqm/s:每秒进行 merge 的读操作数目.即 delta(rmerge)/s

wrqm/s:每秒进行 merge 的写操作数目.即 delta(wmerge)/s

r/s:每秒完成的读 I/O 设备次数.即 delta(rio)/s

w/s:每秒完成的写 I/O 设备次数.即 delta(wio)/s

rsec/s:每秒读扇区数.即 delta(rsect)/s

wsec/s:每秒写扇区数.即 delta(wsect)/s

rkB/s:每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节.(需要计算)

wkB/s:每秒写K字节数.是 wsect/s 的一半.(需要计算)

avgrq-sz:平均每次设备I/O操作的数据大小(扇区).delta(rsect+wsect)/delta(rio+wio)

avgqu-sz:平均I/O队列长度.即 delta(aveq)/s/1000(因为aveq的单位为毫秒).

await:平均每次设备I/O操作的等待时间(毫秒).即 delta(ruse+wuse)/delta(rio+wio)

svctm:平均每次设备I/O操作的服务时间 (毫秒).即 delta(use)/delta(rio+wio)

%util:一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的.即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。)

linux 系统性能分析常用命令相关推荐

  1. linux文本处理常用命令

    linux文本处理常用命令 linux文本处理命令:grep.sed.printf.awk 1.grep grep的作用是按行查找字符,输出包含字符的行. #从文件查询 grep 'hello' fi ...

  2. linux命令实验设备,实验二 Linux系统的常用命令

    实验二Linux系统的常用命令 一.实验目的 1.X-windows的简单配置,掌握进入命令行模式和图形化模式的方法2.GNOME桌面的使用,包括注销与登录,系统信息的查看,GNOME下软件的使用3. ...

  3. Linux学习之CentOS(二)--初识linux的一些常用命令

    Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...

  4. Apache RocketMQ在linux上的常用命令

    Apache RocketMQ在linux上的常用命令 进入maven安装后的rocketmq的bin目录  1.启动Name Server  2.启动Broker 3.关闭Name Server 4 ...

  5. Linux 查看目录常用命令

    linux 查看目录常用命令 ls -F |grep "/$" 只显示当前目录下的文件夹 ls -al |grep "^-" 只显示当前目录下的文件 ls -a ...

  6. Linux oracle(常用命令)启动、停止、监听

    Linux oracle(常用命令)启动.停止.监听 1.手动启动 dbstart /u01/app/oracle/product/11.2.0/dbhome_1 (ORACLE_HOME) 2.停止 ...

  7. Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。...

    Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们. 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题. 1.显示日期的 ...

  8. linux查询配置基础命令,Linux查看系统配置常用命令

    Linux查看系统配置常用命令 系统 # uname -a 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue 查看操作系统版本 # cat /proc/cpuinfo 查看 ...

  9. Ubuntu学习日记--Lesson1:Linux基础和常用命令

    版权生命:文章系原创,转载请注明出处,多谢! 为了在Linux系统下用深度学习框架caffe,系统补习了一下Linux操作的知识,做些笔记,以备复习,或随时查看. Lesson1:Linux基础和常用 ...

最新文章

  1. 数据分析中,你认为用户行为分析最重要的点是什么
  2. GStreamer 的调试工具
  3. spark官方文档_Spark整合Ray思路漫谈
  4. PP视频如何关闭下载完成通知我
  5. oracle 索引_分享三个Oracle数据库索引监控脚本,值得收藏
  6. apache源码安装过程
  7. Evernote 强力替代品:开源加密笔记本 Joplin
  8. 一个合格的程序员应该读过哪些书
  9. matlab设计调度方法,基于Matlab的BP神经网络在公交车辆调度中的应用
  10. 配音软件文字转语音有哪些?
  11. 用Python爬取网易云音乐全部歌手信息(歌手id和歌手名字)
  12. 视频直播APP开发费用多少钱?
  13. [Error] ‘for‘ loop initial declarations are only allowed in C99 or C11 mode 解决方法
  14. CKEditor编辑器的详细使用
  15. slambook2 ch3 Ubuntu18.04下运行和调试
  16. IQOO换鸿蒙系统,1998 iQOO 845版明天发?| 华为自研系统鸿蒙在全球注册商标
  17. 硬件工程师成长之路(3)——PCB设计
  18. 遇到PrintWrite输出中文时出现乱码,及解决方法
  19. Axure RP 8来回旋转
  20. MATLAB读取TECPLOT笛卡尔网格三维流场数据

热门文章

  1. access_token is invalid or not latest hint
  2. python获取参数
  3. Node.js 的第一个 demo 和本地服务器配置
  4. 2017 年全球十大突破技术:逼格很高很难懂
  5. 利用Civil 3D API更改曲面的样式
  6. 一年太久,研究员决定不等补丁直接披露 Safari 0day 详情
  7. 浅谈RNN、LSTM + Kreas实现及应用
  8. Android扩大点击事件接收区域范围
  9. spark 学习总结
  10. Windows Azure Web Site (17) 设置Web App TimeOut时间