內(nèi)存:Swap In(si)=0; Swap Out(so)=0; 以不使用交換分區(qū)為準(zhǔn),如果頻繁用到交換分區(qū),內(nèi)存可能不夠了。
硬盤:iowait % < 20%;
網(wǎng)絡(luò):只要有足夠帶寬盡情的使用吧,達(dá)到網(wǎng)卡帶寬linux系統(tǒng)表示毫無壓力
其中: %user:表示CPU處在用戶模式下的時(shí)間百分比。
%sys:表示CPU處在內(nèi)核模式下的時(shí)間百分比。
%iowait:表示CPU等待輸入輸出完成時(shí)間的百分比。
swap in:即si,表示虛擬內(nèi)存的頁導(dǎo)入,即從SWAP DISK交換到RAM
swap out:即so,表示虛擬內(nèi)存的頁導(dǎo)出,即從RAM交換到SWAP DISK。
1.3性能分析工具
常用系統(tǒng)命令:top、free、ps、uptime、iotop、vmstat、iostat 、dstat、sar。
使用方法:top命令把握全局,使用特定命令深入分析
常用組合方式:
(1)CPU瓶頸:top、vmstat、iostat、sar –u、sar -q
(2)內(nèi)存瓶頸:free、vmstat、sar -B、sar –r、sar -W
(3)磁盤I/O瓶頸:iotop、iostat、sar -b、sar –u、sar -d
(4)網(wǎng)絡(luò)瓶頸: dstat
2 top
2.1功能
提供了實(shí)時(shí)的對系統(tǒng)處理器、內(nèi)存、任務(wù)等狀態(tài)監(jiān)視;該命令可以按CPU使用、內(nèi)存使用對任務(wù)進(jìn)行排序;TOP是一個(gè)動(dòng)態(tài)顯示過程,可以通過用戶按鍵來不斷刷新當(dāng)前狀態(tài),也可以在啟動(dòng)時(shí)指定刷新間隔。
2.2命令輸出示意圖
top - 10:16:29 up 38 days, 15:48, 5 users, load average: 0.04, 0.10, 0.05
Tasks: 569 total, 2 running, 562 sleeping, 0 stopped, 5 zombie
Cpu(s): 2.6%us, 1.3%sy, 0.4%ni, 95.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3839112k total, 3151560k used, 687552k free, 302944k buffers
Swap: 6078456k total, 631852k used, 5446604k free, 348548k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10603 zhixiang 20 0 1225m 284m 30m S 4.6 7.6 271:48.24 vs_exe
2473 xulun 20 0 118m 43m 6932 S 3.0 1.2 964:14.99 Xvnc
1412 xulun 30 10 232m 12m 5216 S 2.3 0.3 0:04.59 floaters
14823 chujie 20 0 1112m 247m 17m S 2.0 6.6 363:51.38 vs_exe
17772 sihao 20 0 1101m 202m 10m S 1.7 5.4 631:21.17 vs_exe
11054 sihao 20 0 906m 65m 9412 S 1.0 1.7 410:06.55 vs_exe
20782 yongtao 20 0 1049m 173m 9996 S 1.0 4.6 196:05.10 vs_exe
14637 chujie 20 0 1274m 132m 2388 S 0.7 3.5 63:20.18 KugooPopMsgServ
1439 yanyun 20 0 15428 1600 940 R 0.3 0.0 0:00.01 top
3491 zhixiang 20 0 129m 55m 17m S 0.3 1.5 10:57.25 Xvnc
1 root 20 0 19344 1200 984 S 0.0 0.0 0:00.89 init
2.3命令輸出解析
Top輸出的信息很多基本囊括了所有的性能指標(biāo),前五行是統(tǒng)計(jì)信息區(qū),表示的是系統(tǒng)整體的統(tǒng)計(jì)信息,包括:系統(tǒng)負(fù)載、任務(wù)、CPU、內(nèi)存等;后面的是每個(gè)進(jìn)程相關(guān)信息。
第一行是任務(wù)隊(duì)列信息,同uptime命令的執(zhí)行結(jié)果是一樣的
[yanyun@~/test]$ uptime
10:20:17 up 38 days, 15:52, 5 users, load average: 0.00, 0.04, 0.03
其內(nèi)容如下:10:20:17:當(dāng)前時(shí)間
38 days, 15:52:系統(tǒng)運(yùn)行時(shí)間
5 users:當(dāng)前登錄用戶數(shù)
load average: 0.00, 0.04, 0.03:系統(tǒng)負(fù)載,即任務(wù)隊(duì)列的平均長度。三個(gè)數(shù)值分別為 1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值。
第二行為進(jìn)程的信息
內(nèi)容如下:569 total:進(jìn)程總數(shù)
2 running,:正在運(yùn)行的進(jìn)程數(shù)
562 sleeping:睡眠的進(jìn)程數(shù)
0 stopped:停止的進(jìn)程數(shù)
5 zombie:僵尸進(jìn)程數(shù)
第三行為CPU的信息
內(nèi)容如下:2.6%us:用戶空間占用CPU百分比
1.3%sy:內(nèi)核空間占用CPU百分比
0.4%ni:用戶進(jìn)程空間內(nèi)改變過優(yōu)先級的進(jìn)程占用CPU百分比
95.7%id:空閑CPU百分比
0.0%wa:等待輸入輸出的CPU時(shí)間百分比
第四、五行為內(nèi)存信息;命令輸出跟free相同
[yanyun@~]$ free
total used free shared buffers cached
Mem: 3839112 3256976 582136 0 143664 444992
-/+ buffers/cache: 2668320 1170792
Swap: 6078456 574772 5503684
內(nèi)容如下:Mem :3839112k total:物理內(nèi)存總量
3151560k used:使用的物理內(nèi)存總量
687552k free:空閑內(nèi)存總量
302944k buffers:用作緩沖的內(nèi)存量
Swap: 6078456k total:交換區(qū)總量
631852k used:使用的交換區(qū)總量
5446604k free:空閑交換區(qū)總量
348548k cached:緩存總量。
注:buffer:可以認(rèn)為是寫出磁盤的緩沖區(qū);
Cache:讀出磁盤的緩存。
Linux系統(tǒng)使用內(nèi)存的原則是:不用白不用,用了也白用;盡可能的緩存東西,所以往往看空閑內(nèi)存很小,但是cache很大;Linux系統(tǒng)會(huì)定時(shí)啟動(dòng)內(nèi)核線程kswapd進(jìn)行緩存回收。
后面的是顯示每個(gè)進(jìn)程相關(guān)信息
%CPU:上次更新到現(xiàn)在的CPU時(shí)間占用百分比
TIME+:進(jìn)程使用的CPU時(shí)間總計(jì)
%MEM:進(jìn)程使用的物理內(nèi)存百分比
VIRT:進(jìn)程使用的虛擬內(nèi)存總量,單位kb
RES:進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR:共享內(nèi)存大小,單位kb
S:進(jìn)程狀態(tài)。(D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程)
2.4常用選項(xiàng)
top [-] [d][p][M][P]
參數(shù)說明:
d:指定每兩次屏幕信息刷新之間的時(shí)間間隔。(top –d 1:每秒刷新一次)
p:指定進(jìn)程ID來僅監(jiān)控某個(gè)進(jìn)程。(top –d 1234:只查看pid為1234的進(jìn)程信息)
k:終止一個(gè)進(jìn)程。Top運(yùn)行時(shí)參數(shù),系統(tǒng)將提示用戶輸入需要終止的進(jìn)程PID,以及需要發(fā)送給該進(jìn)程什么樣的信號。使用信號9強(qiáng)制結(jié)束該進(jìn)程。
M:根據(jù)駐留內(nèi)存大小進(jìn)行排序。
P:根據(jù)CPU使用百分比大小進(jìn)行排序。
注:在命令行執(zhí)行過程中按下數(shù)字鍵‘1’,可以查看到CPU每個(gè)核的相關(guān)信息。
Tasks: 564 total, 3 running, 556 sleeping, 0 stopped, 5 zombie
Cpu0 : 2.9%us, 2.9%sy, 0.0%ni, 94.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 2.0%us, 2.0%sy, 0.0%ni, 96.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3839112k total, 3445296k used, 393816k free, 48180k buffers
Swap: 6078456k total, 553876k used, 5524580k free, 976128k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14823 chujie 20 0 1112m 245m 16m R 3.0 6.5 373:07.82 vs_exe
5589 sihao 20 0 1019m 267m 29m R 2.0 7.1 2:24.80 vs_exe
5674 zhixiang 20 0 1103m 253m 37m S 2.0 6.8 4:17.89 vs_exe
3 iotop:
3.1功能
是一個(gè)用來監(jiān)視每個(gè)線程的磁盤 I/O 使用狀況的類top 工具,
注:此命令需要自行安裝(yum install iotop)
3.2命令輸出示意圖
Total DISK READ: 50.23 M/s | Total DISK WRITE: 34.25 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
61524 be/4 root 47.65 M/s 0.00 B/s 0.00 % 37.83 % ./relay_server
61539 be/4 root 121.77 K/s 0.00 B/s 0.00 % 26.73 % ./relay_server
61544 be/4 root 700.15 K/s 0.00 B/s 0.00 % 24.89 % ./relay_server
61543 be/4 root 528.92 K/s 0.00 B/s 0.00 % 21.29 % ./relay_server
61541 be/4 root 494.67 K/s 0.00 B/s 0.00 % 21.22 % ./relay_server
61540 be/4 root 323.44 K/s 0.00 B/s 0.00 % 8.62 % ./relay_server
61542 be/4 root 468.04 K/s 0.00 B/s 0.00 % 8.13 % ./relay_server
480 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.02 % [jbd2/sda2-8]
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
3.3命令輸出解析
第一行:
Total DISK READ: 50.23 M/s :磁盤每秒讀出數(shù)據(jù)量
Total DISK WRITE: 34.25 K/s :磁盤每秒寫入數(shù)據(jù)量
下面的是每個(gè)線程的的IO情況:
比較簡單;只解釋一下IO:跟top的wa意義相同,只是此處表示的一個(gè)線程的wa。
3.4常用選項(xiàng)
iotop [-] [d] [p]
參數(shù)說明:
d:指定每兩次屏幕信息刷新之間的時(shí)間間隔。(iotop –d 1:每秒刷新一次)
p:指定線程ID來僅監(jiān)控某個(gè)線程。(iotop –d 1234:只查看pid為1234的進(jìn)程信息)
注:在命令行執(zhí)行過程中按下字母‘o’,可以只查看有IO的線程。
pstree -p:查看進(jìn)程樹,可以輸出進(jìn)程之間的關(guān)系。
ps –eLf:查看線程。ps –ef的高級版
4 vmstat:
4.1功能
查看虛擬內(nèi)存(Virtual Memory)使用狀況的工具
4.2命令輸出示意圖
[yanyun@~/test]$ 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 631376 834896 15108 452024 0 0 4 4 1 2 2 1 97 0 0
4.3命令輸出解析
Memory:同top的第四、五行信息。
swap:內(nèi)存到swap分區(qū)換入換出速率。
io:讀寫磁盤速率
system in:每秒的中斷數(shù),包括時(shí)鐘中斷
system cs:每秒的環(huán)境(上下文)切換數(shù);頻繁切換對系統(tǒng)性能有影響,linux提供了線程對cpu的親和,可以將某個(gè)線程綁定到一個(gè)核運(yùn)行。
cpu:同top輸出的第三行
注:swap項(xiàng)不為零,都用到交換分區(qū)了,內(nèi)存可能已經(jīng)用完已經(jīng)成為系統(tǒng)瓶頸的一項(xiàng)。
4.4常用選項(xiàng)
vmstat 1 10:每秒刷新一次,總共刷新十次退出。
注:下面的選項(xiàng)都是專業(yè)的查看某一特定項(xiàng)的信息,有幾個(gè)輸出一大堆信息,用到時(shí)google吧!
-a:顯示活躍和非活躍內(nèi)存
-f:顯示從系統(tǒng)啟動(dòng)至今的fork數(shù)量
-m:顯示slabinfo
-s:顯示內(nèi)存相關(guān)統(tǒng)計(jì)信息及多種系統(tǒng)活動(dòng)數(shù)量。
-d:顯示磁盤相關(guān)統(tǒng)計(jì)信息。
-p:顯示指定磁盤分區(qū)統(tǒng)計(jì)信息
5 iostat
5.1功能
用于輸出CPU和磁盤I/O相關(guān)的統(tǒng)計(jì)信息
5.2輸出結(jié)果示意圖
[root@ShanWei_119_134_255_208 ~]# iostat -x
Linux 2.6.32-279.el6.x86_64 (ShanWei_119_134_255_208) 07/30/2013 _x86_64_ (16 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.63 0.00 2.25 5.98 0.00 89.14
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 195.42 163.72 194.33 126.28 28464.35 2319.94 96.02 1.16 3.63 1.41 45.30
sdb 0.33 48.97 122.71 2.70 29603.37 413.38 239.34 0.27 2.15 1.00 12.52
5.3命令輸出解釋
avg-cpu段:
%user: 在用戶級別運(yùn)行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系統(tǒng)級別(kernel)運(yùn)行所使用CPU的百分比.
%iowait: CPU等待硬件I/O時(shí),所占用CPU百分比.
%idle: CPU空閑時(shí)間的百分比.
Device段:
tps: 每秒鐘發(fā)送到的I/O請求數(shù)
Blk_read /s: 每秒讀取的block數(shù)
Blk_wrtn/s: 每秒寫入的block數(shù)
Blk_read: 讀入的block總數(shù)
Blk_wrtn: 寫入的block總數(shù)
-x選項(xiàng)可以查看到如下更多信息
rrqm/s:每秒這個(gè)設(shè)備相關(guān)的讀取請求有多少被Merge了
wrqm/s:每秒這個(gè)設(shè)備相關(guān)的寫入請求有多少被Merge了
rsec/s:每秒讀取的扇區(qū)數(shù)
wsec/:每秒寫入的扇區(qū)數(shù)
avgrq-sz: 平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))
avgqu-sz: 平均I/O隊(duì)列長度
await:平均每次設(shè)備I/O操作的等待時(shí)間(單位是毫秒)
svctm: 平均每次設(shè)備I/O操作的服務(wù)時(shí)間 (單位是毫秒)
%util:在統(tǒng)計(jì)時(shí)間內(nèi)所有處理IO時(shí)間,所以該參數(shù)暗示了設(shè)備的繁忙程度
5.4常用選項(xiàng)
iostat -d 2 6:每隔2秒,顯示一次設(shè)備統(tǒng)計(jì)信息.總共輸出6次.
-x:查看設(shè)備的使用率、響應(yīng)時(shí)間
6 dstat
6.1功能