linux系統檢視系統資源分析效能情況

datapeng發表於2013-12-15

1,top命令檢視cpu,mem的使用情況

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
21093 root      15   0 12700  736  524 S    2  0.0  80:01.36 cmahostd
 1 root      15   0 10324   84   52 S    0  0.0   1:10.26 init
 2 root      RT  -5     0    0    0 S    0  0.0   0:27.31 migration/0
%cpu           程式所佔cpu時間的百分比
%mem           程式所佔記憶體的百分比

2,top 後,在shift + p 所佔程式的排序顯示

3,top 後,在shift + m 所佔記憶體的排序顯示
從前面三行來年看,如果cpu比較空閒,比如大於50%,通常情況來說,比較正常的!

  PID USER      PR  NI  VIRT  RES  SHR S   %CPU %MEM  TIME+  COMMAND
 11981 root      34  19  276m  43m 1452 S    0  1.1  64:22.57 yum-updatesd
 2601 apacheus  15   0  413m  37m 5376 S    0  1.0   0:00.76 httpd
 18833 apacheus  15   0  415m  36m 5908 S    0  0.9   0:01.49 httpd
 18832 apacheus  15   0  415m  35m 5804 S    0  0.9   0:02.19 httpd
 22881 apacheus  15   0  415m  35m 5924 S    0  0.9   0:01.62 httpd4

vmstat 2 表示每隔2秒檢視一下記憶體,交換分割槽,i/o,cpu的使用情況

[root@mytest ~]# vmstat 2
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 182164 187684 708508 1997704    0    0     1     5    0    0  0  0 100  0  0
 1  0 182164 187396 708508 1997708    0    0     0    36 1020 2203  0  0 99  0  0
 0  0 182164 187708 708508 1997712    0    0     0   114 1056 2367  1  0 99  0  0

memory下的引數說明:

swpd:                 已用的交換空間數量
free:                 空閒記憶體數量
buff:                 緩衝使用的記憶體數量
cache:             檔案系統快取使用的記憶體數量

swap交換分割槽下的引數說明:
si:                   從磁碟轉換到記憶體的數量
so:                   從記憶體轉換到磁碟的數量

i/o磁碟i/o下的引數說明:

bi:                   從塊裝置讀的數量
bo:                   寫塊裝置的數量

cpu下的一些引數說明:

us:                  使用者方式下所佔CPU工作時間的百分比
sy:                  核心程式所佔cpu工作時間的百分比
id:                  cpu處在空閒狀態下的時間百分比
wa:                  等待I/O所佔用CPU工作時間的百分比

如果發現r所在的列顯示的資料比較大,並且經常超過cpu的程式數量,說明cpu不夠,等等的事務較多,cpu資源不足,這時候就要分析是哪些佔用了較多資源


5,df 檢視磁碟的使用情況

[root@mytest ~]# df

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol01
                       31G  5.1G   25G  18% /
/dev/mapper/VolGroup00-LogVol02
                       39G   13G   25G  35% /u01
/dev/mapper/VolGroup00-LogVol04
                      126G   36G   84G  30% /backup
/dev/mapper/VolGroup00-LogVol03
                       39G  182M   37G   1% /archive
/dev/cciss/c0d0p1     190M   28M  153M  16% /boot
tmpfs                 7.7G     0  7.7G   0% /dev/shm
192.168.11.20:/archive/node1
                       39G  185M   37G   1% /archive/node1
used                          表示已使用了多少
available                     表示還有多少空間可用
use%                          磁碟的使用率
最後一行,表示使用了nfs,遠端掛載

6,mpstat和sar檢視cpu的執行情況,這二個差不多

[root@mytest ~]# mpstat

11:38:39 AM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
11:38:39 AM  all    0.11    0.01    0.05    0.13    0.00    0.01    0.00   99.68     84.51
%user                            使用者所佔的CPU時間百分比
%nice                            nice值為負程式的CPU時間百分比
%sys                             系統核心所佔cpu時間的百分比
%iowait                          i/o等待所佔cpu時間的百分比
%idle                            cpu閒置時間的百分比
intr/s                           每秒cpu的中斷次數

7,free -m來檢視記憶體,交換分割槽使用情況,如果不加-m的話,最小單位是KB

[root@mytest ~]# free -m
              total       used       free     shared    buffers     cached
Mem:          3823       3647        175          0        703       1945
-/+ buffers/cache:        998       2825
Swap:        24003        177      23825
total                                 表時總量是多少
used                                  已經使用了多少
free                                  還有多少空閒
shared                                共享是多少
buffers                               緩衝是多少
cached                                快取了多少

8,iostat檢視磁碟i/o情況

[root@krlcgcms01 ~]# iostat -x 2
Linux 2.6.18-92.1.10.el5 (krlcgcms01)   12/10/2010

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
 0.11    0.01    0.06    0.13    0.00   99.68

Device:           rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c0d0        0.21     7.78  0.44  3.00    12.13    86.31    28.63     0.03    7.68   3.39   1.17
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的單位為毫秒)

9,檢視網路的情況

linux本身沒帶有檢視網路連續情況的命令,可以從如下指令碼中去檢視,每秒網路的傳輸情況

#!/bin/bash

if [ -n "$1" ]; then
  eth_name=$1
else
  eth_name="eth0"
fi

i=0

send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
 recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
 send_n=$send_o
recv_n=$recv_o

while [ $i -le 100000 ]; do
  send_l=$send_n
  recv_l=$recv_n
  sleep 1
  send_n=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
   recv_n=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
   i=`expr $i + 1`
  send_r=`expr $send_n - $send_l`
  recv_r=`expr $recv_n - $recv_l`
  total_r=`expr $send_r + $recv_r`
  send_ra=`expr /( $send_n - $send_o /) / $i`
  recv_ra=`expr /( $recv_n - $recv_o /) / $i`
  total_ra=`expr $send_ra + $recv_ra`
  sendn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $3}' | awk -F /) '{print $1}'`
   recvn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $2}' | awk -F /) '{print $1}'`
   clear
  echo  "Last second  :   Send rate: $send_r Bytes/sec  Recv rate: $recv_r Bytes/sec  Total rate: $total_r Bytes/sec"
   echo  "Average value:   Send rate: $send_ra Bytes/sec  Recv rate: $recv_ra Bytes/sec  Total rate: $total_ra Bytes/sec"
   echo  "Total traffic after startup:    Send traffic: $sendn  Recv traffic: $recvn"
done

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1063306/,如需轉載,請註明出處,否則將追究法律責任。

相關文章