阳光明媚lcy:最重要的是从现在开始去做!

linux性能分析,不完整,待继续更新~~

上一篇 / 下一篇  2017-02-23 17:16:29 / 个人分类:linux

以下内容不完整:

摘自网络、besttest,不完整,待继续更新~~

linux性能分析

 

核心指令

topsarvmstatiostatsar -n dev/pro文件系统

 

首先查看CPU使用情况,按照诊断CPU、内存或磁盘瓶颈的指导进行操作。对于下面的每个步骤,查找一段时间内的趋势,从中收集系统运行性能较差时的数据。另外,只有将这些数据与系统正常运行时收集的数据进行比较时才能进行准确诊断 

 

步骤1查看CPU空闲百分比是否很低;

#sar -uinterval】【iterations】(示例:sar -u 5 30%idleCPU空闲时间百分比是否很低?这是CPU未在运行任何进程的时间百分比。在一段时间内%idle为零可能是CPU瓶颈的第一指示。

若不是,系统未发生CPU瓶颈,转至步骤3

若是,系统可能发生了CPU、内存或I/O瓶颈,转至步骤2

 

步骤2查看CPU用户模式下的时间百分比是否较高;

%userCPU处在用户模式下的时间百分比是否较高?很多系统正常情况下花费80%cpu时间用于用户,20%用于系统。其他系统通常会使用80%左右的用户时间。

若不是-系统可能遇到CPU、内存或I/O瓶颈。转至步骤3.

若是-系统可能由于用户进程遇到CPU瓶颈。转至部分3,部分A,调整系统CPU瓶颈。

 

步骤3查看CPU等待输入输出完成时间的百分比

 %iow值是否大于15(不同os有不同的阀值)%iowCPU等待输入输出完成时间的百分比

-以后记住这个值。它可能表示磁盘后磁带瓶颈。转至步骤4

不是-转至步骤4

 

步骤4查看磁盘%busy

 #sar -dinterval】【iterations】用于任何磁盘的%busy是否都大于50?(请记住,50%指示一个大概的指南,他可能远远高于您系统的正常值。在)

某些体统上,甚至%busy值为20可能就表示发生了磁盘瓶颈,而其他系统正常情况下可能就为50%busy。)对于同一磁盘上,avwait是否大于avserv?

不是--很可能不是磁盘瓶颈,转至步骤6

--此设备上好像发生了IO瓶颈。转至步骤5

 

步骤5

系统上存在磁盘瓶颈,发生瓶颈的磁盘上有哪些内容?原始分区,文件系统-转至部分3,部分B,调整发生磁盘IO瓶颈的系统。

Swap--可能是由于内存瓶颈导致的。转至步骤6

 

步骤6

 #vmstatinterval】【iterations】在很长的一段时间内,po是否总是大于0?对于一个s800系统(free*4k)是否小于2MB,(对于s700系统free*4k是否小于1MB)?(值2MB1MB指示大概的,真正的LOTSFREE值,即系统开始发生paging的值是在系统引导时计算的,它是基于系统内存大小的。)

不是-如果步骤1%idle较低,系统则很可能发生了CPU瓶颈。转至部分3,部分A,调整CPU瓶颈系统。如果%idle不是很低,则可能不是CPU、磁盘IO或者内存瓶颈。转至部分4,其他瓶颈。

--系统上存在内存瓶颈,转至部分3,部分C,调整发生内存瓶颈系统。

 

系统使用CPU情况;

用于I/O管理:中断和驱动

用于内存管理:页面交换

用户进程管理:进程开始和上下文切换

Linux中常用的监控CPU整体性能的工具有:

mpstat: mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。

vmstat:只能查看所有CPU的平均信息;查看cpu队列信息;

iostat: 只能查看所有CPU的平均信息。

sar: 与mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。

top:显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。

vmstat  -n 3//显示性能指标:进程、内存、交换区、I/O、系统和CPU,每3秒刷新一次    

procs -----------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 6923688 333404 4110564  0    0     0     4    2   14   0  0 100  0  0

procs:r是可运行进程的数量,b是阻塞进程的数量。

memory:swpd是已用的交换空间数量,单位KB/秒,free自由RAM数量,buff是缓冲使用的RAM数量,cache是文件系统缓存使用的RAM数量

swap: si是从磁盘分页到内存数量,so是从内存分页到磁盘的数量

io:bi是从磁盘读入的块,bo,写入磁盘的块

ststem:in是系统中断,cs是进程上下文开关

cpu:us是用户模式,sy是内核模式,id是空闲,wa是等待I/O,

-m 选项使内存字段以兆字节为单位显示

用sar进行CPU利用率的分析

#sar -u【interval】【iterations】-u表示cpu利用率,internal 相邻的两次采样的间隔时间,iterations打印次数;

#sar -u 2 10

Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/2009

07:40:17 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle

07:40:19 PM       all         12.44      0.00         6.97          1.74         0.00        78.86

07:40:21 PM       all         26.75      0.00        12.50         16.00       0.00        44.75

07:40:23 PM       all         16.96      0.00         7.98          0.00         0.00        75.06

07:40:25 PM       all         22.50      0.00         7.00          3.25         0.00        67.25

07:40:27 PM       all         7.25        0.00         2.75          2.50         0.00        87.50

07:40:29 PM       all         20.05      0.00         8.56          2.93         0.00        68.46

07:40:31 PM       all         13.97      0.00         6.23          3.49         0.00        76.31

07:40:33 PM       all         8.25        0.00         0.75          3.50         0.00        87.50

07:40:35 PM       all         13.25      0.00         5.75          4.00         0.00        77.00

07:40:37 PM       all         10.03      0.00         0.50          2.51         0.00        86.97

Average:             all         15.15      0.00         5.91          3.99         0.00        74.95

在显示cpu报告内容包括:

%user : 显示了在执行用户(应用)层时的CPU利用率

%nice : 显示了在以nice优先级运行用户层的CPU利用率

%system : 显示了在执行系统(内核)层时的CPU利用率

%iowait : 显示了CPU在I/O请求挂起时空闲时间的百分比

%steal : 显示了当hypervisor正服务于另外一个虚拟处理器时无意识地等待虚拟CPU所占有的时间百分比。

%idle : 显示了CPU在I/O没有挂起请求时空闲时间的百分比

在所有的显示中,我们应主要注意%iowait和%idle%iowait的值过高,表示硬盘存在I/O瓶颈;%idle值高,表示CPU较空闲。如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

iostat //磁盘吞吐量工具

观察设备的活跃时间和他们平均传输率之间的关系来监视系统的输入/输出设备负载。iostat生成的报告可以用于修改系统配置从而更好在物理硬盘间平衡输入/输出的报告

安装 iostat

iostat包含在sysstat包内。如果你没有,你首先需要安装它。

在 RedHat / CentOS / Fedora

# yum install sysstat

在 Debian / Ubuntu / Linux Mint

$ sudo apt-get install sysstat

如何运行 iostat

要运行它,只需在控制台下输入iostat


iostat 参数

-c      只显示CPU行,获取cpu部分状态值

-d      显示磁盘行 ,磁盘使用状态   

-k      以千字节为单位显示磁盘输出

-t       在输出中包括时间戳    

-x      在输出中包括扩展的磁盘指标,显示和io相关的扩展数据

常见用法 

摘自http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858810.html

iostat -d -k 1 10        #查看TPS和吞吐量信息(磁盘读写速度单位为KB)

iostat -d -m 2            #查看TPS和吞吐量信息(磁盘读写速度单位为MB)

iostat -d -x -k 1 10     #查看设备使用率(%util)、响应时间(await) 

iostat -c 1 10            #查看cpu状态



iostat -d -x -k 1 10

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

sda          1.56  28.31  7.80 31.49   42.51    2.92    21.26     1.46     1.16     0.03    0.79   2.62  10.28

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

sda          2.00  20.00 381.00  7.00 12320.00  216.00  6160.00   108.00    32.31     1.75    4.50   2.17  84.20


rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。


rsec/s:每秒读取的扇区数;

wsec/:每秒写入的扇区数。

rKB/s:The number of read requests that were issued to the device per second;

wKB/s:The number of write requests that were issued to the device per second;

avgrq-sz 平均请求扇区的大小

avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。    

await:  每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。

         这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。svctm    表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,         系统上运行的应用程序将变慢。

%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度

。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。


#iostat -c 2 10

Linux 2.6.18-53.el5PAE (localhost.localdomain)  03/28/2009

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

                    30.10    0.00          4.89         5.63    0.00   59.38

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

                    8.46       0.00          1.74         0.25    0.00   89.55

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

                    22.06     0.00          11.28       1.25    0.00   65.41

iostat -d 2 3//表示每2秒检查磁盘1次,一共检查3次

包含了设备利用率报告

Device : 列出的/dev 目录下的设备/分区名称

tps : 显示每秒传输给设备的数量。更高的tps意味着处理器更忙。

Blk_read/s : 显示了每秒从设备上读取的块的数量(KB,MB)

Blk_wrtn/s : 显示了每秒写入设备上块的数量(KB,MB)

Blk_read : 显示所有已读取的块

Blk_wrtn : 显示所有已写入的块


sar -n DEV|EDEV|SOCK|FULL 其中//DEV网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示全部

sar -n DEV 5 2

11:58:53 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s

11:58:58 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:58:58 PM      eth0      0.60      0.40     47.60     53.60      0.00      0.00      0.00

11:58:58 PM      eth1      2.00      0.00    128.00      0.00      0.00      0.00      0.00

11:58:58 PM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s

11:59:03 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

11:59:03 PM      eth0      0.40      0.80     25.60    174.40      0.00      0.00      0.00

11:59:03 PM      eth1      2.00      0.00    128.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s

Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:         eth0      0.50      0.60     36.60    114.00      0.00      0.00      0.00

Average:         eth1      2.00      0.00    128.00      0.00      0.00      0.00      0.00

Average:         eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00

字段            说明

IFACE           LAN接口

rxpck/s         每秒钟接收的数据包

txpck/s         每秒钟发送的数据包

rxbyt/s         每秒钟接收的字节数

txbyt/s         每秒钟发送的字节数

rxcmp/s         每秒钟接收的压缩数据包

txcmp/s         每秒钟发送的压缩数据包

rxmcst/s        每秒钟接收的多播数据包


ostat -d -k 1 |grep sda10

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda10            60.72        18.95        71.53  395637647 1493241908

sda10           299.02      4266.67       129.41       4352        132

sda10           483.84      4589.90      4117.17       4544       4076

sda10           218.00      3360.00       100.00       3360        100

sda10           546.00      8784.00       124.00       8784        124

sda10           827.00     13232.00       136.00      13232        136

上面看到,磁盘每秒传输次数平均tps约400;每秒磁盘读取kB_read/s约5MB,写入kB_wrtn/s约1MB。

 

iostat -d -x -k 1

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util

sda          1.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29

sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25

sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24

可以看到磁盘的平均响应时间<5ms,磁盘使用率%util>80。磁盘响应正常,但是已经很繁忙了。



TAG: Linux linux

 

评分:0

我来说两句

ygmmlcy

ygmmlcy

其实天很蓝,阴云总要散;其实海不远,此岸连彼岸;其实草很绿,万物皆自然。

日历

« 2024-03-28  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 57568
  • 日志数: 60
  • 建立时间: 2012-04-08
  • 更新时间: 2020-03-13

RSS订阅

Open Toolbar