03 November 2013

CPU利用率

##### top

对多核它会显示多个CPU所占百分比的总和。 进入视图后按1就进入按核显示视图 shift+h就可以进入按线程显示视图

vmstat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ vmstat 5
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 14892532 121444   25072   57084   45   18    59    41    0    0   2  0  95  2  0
 0  0 14876388 135656   24376   57860   45   18    59    41    0    0   2  0  95  2  0	
 0  0 14876308 135516   24384   57808  146    0   168    14 1562 2132   1  0  98  1  0	
 0  0 14876268 135268   24384   57936   56    0    56     0 1469 2042   0  0  99  0  0	
 0  0 14876248 134624   24392   57888   54    0    54    48 1678 2144   1  1  98  0  0	
 0  0 14876204 134524   24408   57948  108    0   108    14 1452 2077   0  0  99  1  0	
 0  0 14876184 134400   24408   57908   48    0    48     0 1495 2020   1  0  99  0  0	
 0  0 14876092 134488   24416   57856  150    0   150    18 1490 2093   1  0  98  1  0	
 0  0 14876048 134372   24416   57916   62    0    62     0 1442 1988   0  0  99  0  0	
 0  0 14876008 133876   24432   57892   84    0    84   122 1534 2075   1  0  99  1  0	
 0  0 14875896 133504   24464   57792  278    0   278    74 1488 2078   0  0  97  2  0

vmstat 参数为获取信息的时间间隔

关注CPU那一列 us 表示用户CPU利用率 sy 表示系统CPU利用率 id 表示CPU的空闲率

CPU调度运行队列

##### vmstat

1
2
3
4
$ vmstat
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 14892532 121444   25072   57084   45   18    59    41    0    0   2  0  95  2  0

系统运行队列深度由procs列的r表示

内存利用率

##### vmstat

1
2
3
4
$ vmstat
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 14892532 121444   25072   57084   45   18    59    41    0    0   2  0  95  2  0

memory列下的free表示空闲内存 swap列下的si so 表示 page-in 和page-out的数量

锁争用

##### pidstat

1
2
3
4
5
6
7
8
9
10
# pidstat -w -I -p 11284 5
Linux 2.6.32-220.el6.x86_64 (belinkdev) 	2013年11月04日 	_x86_64_	(4 CPU)

19时17分32秒       PID   cswch/s nvcswch/s  Command
19时17分37秒     11284      0.00      0.00  java
19时17分42秒     11284      0.00      0.00  java
19时17分47秒     11284      0.00      0.00  java
19时17分52秒     11284      0.00      0.00  java
19时17分57秒     11284      0.00      0.00  java
19时18分02秒     11284      0.00      0.00  java

cswch/s表示每秒voluntary context switches的数量 nvcswch/s表示每秒involuntary context switches的数量 involuntary context switches一般是由线程抢占所引起的

百分比=切换数量/虚拟处理器数量 * 上下文切换所需要的时钟周期 / 处理器频率 当该值达到3% to 5%就应该进行相关的排查工作。
每个上下文交换需要80000以上个clock cycle。

线程迁移

网络I/O

netstat -i nicstat需要自己安装 安装时需要修改Makefile

1
2
CFLAGS =	$(COPT) -m32		        #将此行修改为如下:
CFLAGS =    $(COPT)
1
2
3
4
5
6
7
# nicstat 
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
19:29:48       lo   18.13   18.13   54.81   54.81   338.7   338.7  0.00   0.00
19:29:48      em1    3.02    2.95   27.37    3.45   112.9   877.4  0.00   0.00
19:29:48   vmnet1    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
19:29:48   vmnet8    0.00    0.00    0.00    0.00    0.00    0.00  0.00   0.00
19:29:48   virbr0    0.00    0.00    0.00    0.01    0.00   47.24  0.00   0.00

Int 网卡名字 rKB/s 每秒读取的数量 wKB/s 每秒写的数量 rPk/s 每秒读取包的数量 wPk/s 每秒写包的数量 rAvs 平均每次读取读取的字节数 wAvs 平均每次写写的字节数 %Util 网卡利用率(一秒中有百分之多少的时间用于网络I/0操作) Sat 网卡的饱和度

硬盘I/O

iostat

1
2
3
4
5
6
7
8
9
# iostat -d -k 1 10
Linux 2.6.32-220.el6.x86_64 (belinkdev) 	2013年11月04日 	_x86_64_	(4 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              26.32       236.35       162.76 2949548902 2031207616
dm-0              7.90        24.85        24.72  310152713  308489884
dm-1             63.10       180.71        71.70 2255190716  894753892
dm-2             10.40        28.47        31.55  355349885  393682204
dm-3              8.94         2.31        34.80   28841385  434281596

tps 该设备每秒的传输次数
kB_read/s 每秒从设备读取的数据量
kB_wrtn/s 每秒向设备写入的数据量
kB_read 读取的总数据量
kB_wrtn 写入的总数量数据量

1
2
3
4
5
6
7
8
9
10
11
12
# iostat -xm
Linux 2.6.32-220.el6.x86_64 (belinkdev) 	2013年11月04日 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.21    0.00    0.49    1.89    0.00   95.41

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda              36.51    27.46   13.11   13.21     0.23     0.16    30.33     0.00   13.12   2.63   6.92
dm-0              0.00     0.00    1.72    6.18     0.02     0.02    12.54     0.10   12.97   2.71   2.15
dm-1              0.00     0.00   45.18   17.92     0.18     0.07     8.00     0.08    6.76   0.72   4.56
dm-2              0.00     0.00    2.51    7.89     0.03     0.03    11.55     0.06    5.79   1.50   1.56
dm-3              0.00     0.00    0.24    8.70     0.00     0.03     8.30     0.27   30.23   1.90   1.70

rrqm/s 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)
wrqm/s 每秒这个设备相关的写入请求有多少被Merge了 r/s 每秒完成的读设备次数 w/s 每秒完成的写设备次数 rMB/s 每秒读M字节数 wMB/s 每秒写M字节数 avgrq-sz 平均每次设备I/O操作的数据大小 avgqu-sz 平均I/O队列长度 await 平均每次设备I/O操作的等待时间 (毫秒) svctm 平均每次设备I/O操作的服务时间 (毫秒) %util I/O的系统利用率(一秒中有百分之多少的时间用于 I/O 操作)



blog comments powered by Disqus