linux 系統性能指標


一、查看CPU使用情況

cpu使用率反映的是當前cpu的繁忙程度,忽高忽低的原因在於占用cpu處理時間的進程可能處於io等待狀態但卻還未釋放進入wait。

平均負載(loadaverage)是指某段時間內占用cpu時間的進程和等待cpu時間的進程數,這里等待cpu時間的進程是指等待被喚醒的進程,不包括處於wait狀態進程。

1、良好狀態指標

CPU利用率:

User Time <=70%,System Time <= 35%,User Time + System Time <= 70%。

上下文切換:與CPU利用率相關聯,如果CPU利用率狀態良好,大量的上下文切換也是可以接受的。

可運行隊列:每個處理器的可運行隊列<=3個線程。

2、工具

(1)vmstat

字段說明:

r (run queue)可運行隊列的線程數,這些線程都是可運行狀態,只不過CPU暫時不可用;

b,被blocked的進程數,正在等待IO請求;

in,interrupts,被處理過的中斷數;

cs,context switch,系統上正在做上下文切換的數目;

us,用戶占用CPU的百分比

sys,內核和中斷占用CPU的百分比

id,CPU完全空閑的百分比

(2)uptime

[root@node1 ~]#uptime

00:44:22 up 1:17,3 users, load average: 8.13, 5.90, 4,94

顯示的是過去的1,5,15分鍾內進程隊列中的平均進程數量 

如何衡量當前系統是否負載過高?

如果每個cpu(可以按CPU核心的數量計算)上當前活動進程數

<=3,則系統性能良好,

=4,表示可以接受

>=5,則系統性能問題嚴重

上面例中的8.13,如果有2個cpu核心,則8.13/2=4.065, 此系統性能可以接受

建議設置嚴格的報警值為: CPU核心的數量

比如:CPU核心數量為2,則設置報警值為2

(3)top

[root@node1 ~]#top

top - 10:31:45 up14:51, 3 users, load average: 0.07, 0.33, 0.33

Tasks: 91 total, 1running, 90 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0%us,0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 502288ktotal, 494648k used, 7640k free, 220k buffers

Swap: 1015800ktotal, 21792k used, 994008k free, 238468k cached 

從top 要看CPU負載情況,可以看%us和%sy,其中%us<=70%, %sy<=35%,

%us+%sy<=70%說明狀態良好,同時可以結合idle值來看,也就是%id,如果%id<=70% 則表示IO的壓力較大

查看某個進程占用的CPU資源

二、Memory

1、良好狀態指標

swap in (si) == 0,swap out (so) == 0

應用程序可用內存/系統物理內存 <= 70%

2、監控工具

(1)vmstat

三、磁盤IO

1、良好狀態指標

iowait % < 20%

提高命中率的一個簡單方式就是增大文件緩存區面積,緩存區越大預存的頁面就越多,命中率也越高。

Linux 內核希望能盡可能產生次缺頁中斷(從文件緩存區讀),並且能盡可能避免主缺頁中斷(從硬盤讀),這樣隨着次缺頁中斷的增多,文件緩存區也逐步增大,直到系統只有少量可用物理內存的時候 Linux 才開始釋放一些不用的頁。

2、監控工具

(1)cat/proc/meminfo

這台機器總共有 256MB 物理內存(MemTotal),90MB 左右可用內存(MemFree),8MB左右用來做磁盤緩存(Buffers),40MB左右用來做文件緩存區(Cached)。

(2)sar

await表示平均每次設備I/O操作的等待時間(以毫秒為單位)。

svctm表示平均每次設備I/O操作的服務時間(以毫秒為單位)。

%util表示一秒中有百分之幾的時間用於I/O操作。

如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高於svctm的值,則表示I/O隊列等待太長,系統上運行的應用程序將變慢。

如果%util接近100%,表示磁盤產生的I/O請求太多,I/O系統已經滿負荷的在工作,該磁盤可能存在瓶頸。

(3)iostat

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系統已經滿負荷,該磁盤可能存在瓶頸。

idle小於70% IO壓力就較大了,一般讀取速度有較多的wait.

同時可以結合vmstat 查看查看b參數(等待資源的進程數)和wa參數(IO等待所占用的CPU時間的百分比,高過30%時IO壓力高)

四、Network IO

對於UDP

1、良好狀態指標

接收、發送緩沖區不長時間有等待處理的網絡包

2、監控工具

netstat

對於UDP服務,查看所有監聽的UDP端口的網絡情況

RecvQ、SendQ為0,或者不長時間有數值是比較正常的。

對於UDP服務,查看丟包情況(網卡收到了,但是應用層沒有處理過來造成的丟包)

packet receiveerrors 這一項數值增長了,則表明在丟包

對於TCP

1、良好狀態指標

對於TCP而言,不會出現因為緩存不足而存在丟包的事,因為網絡等其他原因,導致丟了包,協議層也會通過重傳機制來保證丟的包到達對方。

所以,tcp而言更多的專注重傳率。

2、監控工具

重傳率 = RetransSegs / OutSegs

至於這個值在多少范圍內,算ok的,得看具體的業務了。

業務則更關注的是響應時間。

五、查看文件句柄數(文件描述符)

查看系統默認的最大文件句柄數,系統默認是1024

# ulimit -n

1024

查看當前進程打開了多少句柄數

# lsof -n|awk '{print $1,$2}'|sort|uniq-c|sort -nr|more

[root@node1 ~]#lsof -n|awk '{print $1,$2}'|sort|uniq -c|sort -nr

125 master 1507

58 sshd 1577

48 mysqld 1451

45 qmgr 1526

45 pickup 1665

36 sshd 1100

20 rsyslogd 1064

20 init 1

19 crond 1527

18 udevd 436

  ........

其中第一列是打開的句柄數,第二列是進程ID。

 

本文轉載自:http://lib.csdn.net/article/linux/33040


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM