性能調優的主要目的是使系統能夠有效的利用各種資源,最大的發揮應用程式和系統之間的性能融合,使應用高效、穩定的運作。但是,衡量系統資源使用率好壞的标準沒有一個嚴格的定義,針對不同的系統和應用也沒有一個統一的說法,是以,這裡提供的标準其實是一個經驗值,表15.1給出了判定系統資源利用狀況的一般準則:
表1給出了判定系統資源利用狀況的一般準則:
表1
其中:
%user:表示CPU處在使用者模式下的時間百分比。
%sys:表示CPU處在系統模式下的時間百分比。
%iowait:表示CPU等待輸入輸出完成時間的百分比。
swap in:即si,表示虛拟記憶體的頁導入,即從SWAP DISK交換到RAM。
swap out:即so,表示虛拟記憶體的頁導出,即從RAM交換到SWAP DISK。
linux下性能分析工具還有很多,例如uptime可以檢查CPU的平均負載,free可以檢視系統記憶體的使用狀況,ps、top可以配合監控系統的程序運作狀态,netstat可以監測網絡流量狀況
例如,linux系統下的一個網站系統,使用者反映,網站通路速度很慢,有時無法通路。
針對這個問題,第一步要做的是檢測網絡,可以通過ping指令檢查網站的域名解析是否正常,同時,ping伺服器位址的延時是否過大等等,通過這種方式,首先排除網絡可能出現的問題;如果網絡沒有問題,接着進入第二步,對linux系統的記憶體使用狀況進行檢查,因為網站響應速度慢,一般跟記憶體關聯比較大,通過free、vmstat等指令判斷記憶體資源是否緊缺,如果記憶體資源不存在問題,進入第三步,檢查系統CPU的負載狀況,可以通過sar、vmstat、top等指令的輸出綜合判斷CPU是否存在過載問題,如果CPU沒有問題,繼續進入第四步,檢查系統的磁盤I/O是否存在瓶頸,可以通過iostat、vmstat等指令檢查磁盤的讀寫性能,如果磁盤讀寫也沒有問題,linux系統自身的性能問題基本排除,最後要做的是檢查程式本身是否存在問題。通過這樣的思路,層層檢測,步步排查,性能問題就“無處藏身”,查找出現性能問題的環節也就變得非常簡單。
1、vmstat
vmstat是Virtual Meomory Statistics(虛拟記憶體統計)的縮寫,很多linux發行版本都預設安裝了此指令工具,利用vmstat指令可以對作業系統的記憶體資訊、程序狀态、CPU活動等進行監視,不足之處是無法對某個程序進行深入分析。
vmstat使用文法如下:
vmstat [-V] [-n] [delay [count]]
各個選項及參數含義如下:
l -V:表示列印出版本資訊,是可選參數。
l -n:表示在周期性循環輸出時,輸出的頭部資訊僅顯示一次。
l delay:表示兩次輸出之間的間隔時間。
l count:表示按照“delay”指定的時間間隔統計的次數。預設為1。
例如:
vmstat 3
表示每3秒鐘更新一次輸出資訊,循環輸出,按ctrl+c停止輸出。
vmstat 3 5
表示每3秒更新一次輸出資訊,統計5次後停止輸出。
下面是vmstat指令在某個系統的輸出結果:
[root@node1 ~]# vmstat 2 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 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0
0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0
0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0
對上面每項的輸出解釋如下:
procs
r清單示運作和等待cpu時間片的程序數,這個值如果長期大于系統CPU的個數,說明CPU不足,需要增加CPU。
b清單示在等待資源的程序數,比如正在等待I/O、或者記憶體交換等。
memory
swpd清單示切換到記憶體交換區的記憶體數量(以k為機關)。如果swpd的值不為0,或者比較大,隻要si、so的值長期為0,這種情況下一般不用擔心,不會影響系統性能。
free清單示目前空閑的實體記憶體數量(以k為機關)
buff清單示buffers cache的記憶體數量,一般對塊裝置的讀寫才需要緩沖。
cache清單示page cached的記憶體數量,一般作為檔案系統cached,頻繁通路的檔案都會被cached,如果cache值較大,說明cached的檔案數較多,如果此時IO中bi比較小,說明檔案系統效率比較好。
swap
si清單示由磁盤調入記憶體,也就是記憶體進入記憶體交換區的數量。
so清單示由記憶體調入磁盤,也就是記憶體交換區進入記憶體的數量。
一般情況下,si、so的值都為0,如果si、so的值長期不為0,則表示系統記憶體不足。需要增加系統記憶體。
IO項顯示磁盤讀寫狀況
Bi清單示從塊裝置讀入資料的總量(即讀磁盤)(每秒kb)。
Bo清單示寫入到塊裝置的資料總量(即寫磁盤)(每秒kb)
這裡我們設定的bi+bo參考值為1000,如果超過1000,而且wa值較大,則表示系統磁盤IO有問題,應該考慮提高磁盤的讀寫性能。
system 顯示采集間隔内發生的中斷數
in清單示在某一時間間隔中觀測到的每秒裝置中斷數。
cs清單示每秒産生的上下文切換次數。
上面這2個值越大,會看到由核心消耗的CPU時間會越多。
CPU項顯示了CPU的使用狀态,此列是我們關注的重點。
us列顯示了使用者程序消耗的CPU 時間百分比。us的值比較高時,說明使用者程序消耗的cpu時間多,但是如果長期大于50%,就需要考慮優化程式或算法。
sy列顯示了核心程序消耗的CPU時間百分比。Sy的值較高時,說明核心消耗的CPU資源很多。
根據經驗,us+sy的參考值為80%,如果us+sy大于 80%說明可能存在CPU資源不足。
id 列顯示了CPU處在空閑狀态的時間百分比。
wa列顯示了IO等待所占用的CPU時間百分比。wa值越高,說明IO等待越嚴重,根據經驗,wa的參考值為20%,如果wa超過20%,說明IO等待嚴重,引起IO等待的原因可能是磁盤大量随機讀寫造成的,也可能是磁盤或者磁盤控制器的帶寬瓶頸造成的(主要是塊操作)。
綜上所述,在對CPU的評估中,需要重點注意的是procs項r列的值和CPU項中us、sy和id列的值。
2、sar指令
sar指令很強大,是分析系統性能的重要工具之一,通過sar指令,可以全面的擷取系統的CPU、運作隊列、磁盤I/O、分頁(交換區)、記憶體、CPU中斷、網絡等性能資料。
sar使用格式為:
sar [options] [g1] [-o filename] [interval [count] ]
l options 為指令行選項,sar指令的選項很多,下面隻列出常用選項:
Ø -A:顯示系統所有資源裝置(CPU、記憶體、磁盤)的運作狀況。
Ø -u:顯示系統所有CPU在采樣時間内的負載狀态。
Ø -P:顯示目前系統中指定CPU的使用情況。
Ø -d:顯示系統所有硬碟裝置在采樣時間内的使用狀況。
Ø -r:顯示系統記憶體在采樣時間内的使用狀況。
Ø -b:顯示緩沖區在采樣時間内的使用情況。
Ø -v:顯示程序、檔案、I節點和鎖表狀态。
Ø -n:顯示網絡運作狀态。參數後面可跟DEV、EDEV、SOCK和FULL。DEV顯示網絡接口資訊,EDEV顯示網絡錯誤的統計資料,SOCK顯示套接字資訊,FULL顯示三個所有的資訊。它們可以單獨或者一起使用。
Ø -q:顯示了運作隊列的大小,它與系統當時的平均負載相同。
Ø -R:顯示程序在采樣時間内的活動情況。
Ø -y:顯示終端裝置在采樣時間内的活動情況。
Ø -w:顯示系統交換活動在采樣時間内的狀态。
l -o filename:表示将指令結果以二進制格式存放在檔案中,filename是檔案名。
l interval:表示采樣間隔時間,是必須有的參數。
l count:表示采樣次數,是可選參數,預設值是1。
要檢視系統CPU的整體負載狀況,每3秒統計一次,統計5次,可以使用以下組合:
sar –u 3 5
系統的CPU計數是從0開始的,如果要檢視第二顆CPU的運作負載,使用下面組合:
sar –P 1 3 5
要檢視系統磁盤的讀寫性能,使用以下組合:
sar -d 3 5
同理,檢視系統記憶體使用情況、網絡運作狀态,可以分别使用下面指令:
sar -r 5 2
sar -n DEV 5 3
下面是sar指令對某個系統的CPU統計輸出:
[root@webserver ~]# sar -u 3 5
Linux 2.6.9-42.ELsmp (webserver) 11/28/2008 _i686_ (8 CPU)
11:41:24 AM CPU %user %nice %system %iowait %steal %idle
11:41:27 AM all 0.88 0.00 0.29 0.00 0.00 98.83
11:41:30 AM all 0.13 0.00 0.17 0.21 0.00 99.50
11:41:33 AM all 0.04 0.00 0.04 0.00 0.00 99.92
11:41:36 AM all 0.29 0.00 0.13 0.00 0.00 99.58
11:41:39 AM all 0.38 0.00 0.17 0.04 0.00 99.41
Average: all 0.34 0.00 0.16 0.05 0.00 99.45
對上面每項的輸出解釋如下:
%user列顯示了使用者程序消耗的CPU 時間百分比。
%nice列顯示了運作正常程序所消耗的CPU 時間百分比。
%system列顯示了系統程序消耗的CPU時間百分比。
%iowait列顯示了IO等待所占用的CPU時間百分比
%steal列顯示了在記憶體相對緊張的環境下pagein強制對不同的頁面進行的steal操作 。
%idle列顯示了CPU處在空閑狀态的時間百分比。
這個輸出是對系統整體CPU使用狀況的統計,每項的輸出都非常直覺,并且最後一行Average是個彙總行,是上面統計資訊的一個平均值。
需要注意的一點是:第一行的統計資訊中包含了sar本身的統計消耗,是以%user列的值會偏高一點,不過,這不會對統計結果産生多大影響。
在一個多CPU的系統中,如果程式使用了單線程,會出現這麼一個現象,CPU的整體使用率不高,但是系統應用卻響應緩慢,這可能是由于程式使用單線程的原因,單線程隻使用一個CPU,導緻這個CPU占用率為100%,無法處理其它請求,而其它的CPU卻閑置,這就導緻 了整體CPU使用率不高,而應用緩慢 現象的發生 。
針對這個問題,可以對系統的每個CPU分開查詢,統計每個CPU的使用情況:
[root@webserver ~]# sar -P 0 3 5
Linux 2.6.9-42.ELsmp (webserver) 11/29/2008 _i686_ (8 CPU)
06:29:33 PM CPU %user %nice %system %iowait %steal %idle
06:29:36 PM 0 3.00 0.00 0.33 0.00 0.00 96.67
06:29:39 PM 0 0.67 0.00 0.33 0.00 0.00 99.00
06:29:42 PM 0 0.00 0.00 0.33 0.00 0.00 99.67
06:29:45 PM 0 0.67 0.00 0.33 0.00 0.00 99.00
06:29:48 PM 0 1.00 0.00 0.33 0.33 0.00 98.34
Average: 0 1.07 0.00 0.33 0.07 0.00 98.53
這個輸出是對系統的第一顆CPU的資訊統計,需要注意的是,sar中對CPU的計數是從0開始的,是以,“sar -P 0 3 5”表示對系統的第一顆CPU進行資訊統計,“sar -P 4 3 5”則表示對系統的第五顆CPU進行統計。依次類推。可以看出,上面的系統有八顆CPU。
通過sar –n組合顯示系統的網絡運作狀态
sar提供四種不同的選項來顯示網絡統計資訊,通過“-n”選項可以指定4個不同類型的開關:DEV、EDEV、SOCK和FULL。DEV顯示網絡接口資訊,EDEV顯示關于網絡錯誤的統計資料,SOCK顯示套接字資訊,FULL顯示所有三個開關。請看下面的一個輸出:
[root@webserver ~]# sar -n DEV 2 3
Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU)
02:22:31 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:22:33 PM lo 31.34 31.34 37.53 37.53 0.00 0.00 0.00
02:22:33 PM eth0 199.50 279.60 17.29 344.12 0.00 0.00 0.00
02:22:33 PM eth1 5.47 4.98 7.03 0.36 0.00 0.00 0.00
02:22:33 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:22:33 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:22:35 PM lo 67.66 67.66 74.34 74.34 0.00 0.00 0.00
02:22:35 PM eth0 159.70 222.39 19.74 217.16 0.00 0.00 0.00
02:22:35 PM eth1 3.48 4.48 0.44 0.51 0.00 0.00 0.00
02:22:35 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
02:22:35 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
02:22:37 PM lo 4.52 4.52 9.25 9.25 0.00 0.00 0.00
02:22:37 PM eth0 102.51 133.67 20.67 116.14 0.00 0.00 0.00
02:22:37 PM eth1 27.14 67.34 2.42 89.26 0.00 0.00 0.00
02:22:37 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 34.61 34.61 40.48 40.48 0.00 0.00 0.00
Average: eth0 154.08 212.15 19.23 226.17 0.00 0.00 0.00
Average: eth1 11.98 25.46 3.30 29.85 0.00 0.00 0.00
Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
IFACE表示網絡接口裝置。
rxpck/s表示每秒鐘接收的資料包大小。
txpck/s表示每秒鐘發送的資料包大小。
rxkB/s表示每秒鐘接收的位元組數。
txkB/s表示每秒鐘發送的位元組數。
rxcmp/s表示每秒鐘接收的壓縮資料包。
txcmp/s表示每秒鐘發送的壓縮資料包。
rxmcst/s表示每秒鐘接收的多點傳播資料包。
通過“sar –n”的輸出,可以清楚的顯示網絡接口發送、接收資料的統計資訊。此外還可以通過“sar -n EDEV 2 3”來統計網絡錯誤資訊等
3、iostat指令
iostat是I/O statistics(輸入/輸出統計)的縮寫,主要的功能是對系統的磁盤I/O操作進行監視。它的輸出主要顯示磁盤讀寫操作的統計資訊,同時也會給出CPU使用情況。同vmstat一樣,iostat也不能對某個程序進行深入分析,僅對系統的整體情況進行分析。
iostat一般都不随系統安裝,要使用iostat工具,需要在系統上安裝一個Sysstat的工具包,Sysstat是一個開源軟體,官方位址為http://pagesperso-orange.fr/sebastien.godard
可以選擇源代碼包或rpm包的方式安裝,這裡不在講述安裝過程,安裝完畢,系統會多出3個指令:iostat、sar和mpstat。然後就可以直接在系統下運作iostat指令了。
iostat使用文法如下:
iostat [ -c | -d ] [ -k ] [ -t ] [ -x [ device ] ] [ interval [ count ] ]
各個選項及參數含義如下:
-c:顯示CPU的使用情況。
-d:顯示磁盤的使用情況。
-k:每秒以k bytes為機關顯示資料。
-t:列印出統計資訊開始執行的時間。
-x device:指定要統計的磁盤裝置名稱,預設為所有的磁盤裝置。
interval:指定兩次統計間隔的時間;
count:按照“interval”指定的時間間隔統計的次數。
看下面的一個輸出:
[root@webserver ~]# iostat -c
avg-cpu: %user %nice %system %iowait %steal %idle
2.52 0.00 0.30 0.24 0.00 96.96
在這裡,我們使用了“-c”參數,隻顯示系統CPU的統計資訊,輸出中每項代表的含義與sar指令的輸出項完全相同
通過“iostat –d”指令組合也可以檢視系統磁盤的使用狀況,請看如下輸出:
[root@webserver ~]# iostat -d 2 3
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 1.87 2.58 114.12 6479462 286537372
sda 0.00 0.00 0.00 0 0
sda 1.00 0.00 12.00 0 24
Blk_read/s表示每秒讀取的資料塊數。
Blk_wrtn/s表示每秒寫入的資料塊數。
Blk_read表示讀取的所有塊數
Blk_wrtn表示寫入的所有塊數。
這裡需要注意的一點是:上面輸出的第一項是系統從啟動以來到統計時的所有傳輸資訊,從第二次輸出的資料才代表在檢測的時間段内系統的傳輸值。
可以通過Blk_read/s和Blk_wrtn/s的值對磁盤的讀寫性能有一個基本的了解,如果Blk_wrtn/s值很大,表示磁盤的寫操作很頻繁,可以考慮優化磁盤或者優化程式,如果Blk_read/s值很大,表示磁盤直接讀取操作很多,可以将讀取的資料放入記憶體中進行操作。對于這兩個選項的值沒有一個固定的大小,根據系統應用的不同,會有不同的值,但是有一個規則還是可以遵循的:長期的、超大的資料讀寫,肯定是不正常的,這種情況一定會影響系統性能。
“iostat –x”組合還提供了對每個磁盤的單獨統計,如果不指定磁盤,預設是對所有磁盤進行統計,請看下面的一個輸出:
[root@webserver ~]# iostat -x /dev/sda 2 3
avg-cpu: %user %nice %system %iowait %steal %idle
2.45 0.00 0.30 0.24 0.00 97.03
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.01 12.48 0.10 1.78 2.58 114.03 62.33 0.07 38.39 1.30 0.24
3.97 0.00 1.83 8.19 0.00 86.14
Device:rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 195.00 0.00 18.00 0.00 1704.00 94.67 0.04 2.50 0.11 0.20
4.04 0.00 1.83 8.01 0.00 86.18
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 4.50 0.00 7.00 0.00 92.00 13.14 0.01 0.79 0.14 0.10
這個輸出基本與“sar –d”相同,需要說明的幾個選項的含義為:
rrqm/s表示每秒進行merged的讀操作數目。
wrqm/s表示每秒進行 merge 的寫操作數目。
r/s表示每秒完成讀I/O裝置的次數。
w/s表示每秒完成寫I/O裝置的次數。
rsec/s表示每秒讀取的扇區數。
wsec/s表示每秒寫入的扇區數。
4、free指令
free是監控linux記憶體使用狀況最常用的指令,看下面的一個輸出:
[root@webserver ~]# free -m
total used free shared buffers cached
Mem: 8111 7185 925 0 243 6299
-/+ buffers/cache: 643 7468
Swap: 8189 0 8189
“free –m”表示以M為機關檢視記憶體使用情況,在這個輸出中,我們重點關注的應該是free列與cached列的輸出值,由輸出可知,此系統共8G記憶體,系統空閑記憶體還有925M,其中,Buffer Cache占用了243M,Page Cache占用了6299M,由此可知系統緩存了很多的檔案和目錄,而對于應用程式來說,可以使用的記憶體還有7468M,當然這個7468M包含了Buffer Cache和Page Cache的值。在swap項可以看出,交換分區還未使用。是以從應用的角度來說,此系統記憶體資源還非常充足。
一般有這樣一個經驗公式:應用程式可用記憶體/系統實體記憶體>70%時,表示系統記憶體資源非常充足,不影響系統性能,應用程式可用記憶體/系統實體記憶體<20%時,表示系統記憶體資源緊缺,需要增加系統記憶體,20%<應用程式可用記憶體/系統實體記憶體<70%時,表示系統記憶體資源基本能滿足應用需求,暫時不影響系統性能。
free指令還可以适時的監控記憶體的使用狀況,使用“-s”參數可以在指定的時間段内不間斷的監控記憶體的使用情況:
[root@webserver ~]# free -b -s 5
Mem: 8505901056 7528706048 977195008 0 260112384 6601158656
-/+ buffers/cache: 667435008 7838466048
Swap: 8587149312 163840 8586985472
Mem: 8505901056 7526936576 978964480 0 260128768 6601142272
-/+ buffers/cache: 665665536 7840235520
Mem: 8505901056 7523987456 981913600 0 260141056 6601129984
-/+ buffers/cache: 662716416 7843184640
其中,“-b”表示以千位元組(也就是1024位元組為機關)來顯示記憶體使用情況。
5、uptime指令
uptime是監控系統性能最常用的一個指令,主要用來統計系統目前的運作狀況,輸出的資訊依次為:系統現在的時間、系統從上次開機到現在運作了多長時間、系統目前有多少登陸使用者、系統在一分鐘内、五分鐘内、十五分鐘内的平均負載。看下面的一個輸出:
[root@webserver ~]# uptime
18:52:11 up 27 days, 19:44, 2 users, load average: 0.12, 0.08, 0.08
這裡需要注意的是load average這個輸出值,這三個值的大小一般不能大于系統CPU的個數,例如,本輸出中系統有8個CPU,如果load average的三個值長期大于8時,說明CPU很繁忙,負載很高,可能會影響系統性能,但是偶爾大于8時,倒不用擔心,一般不會影響系統性能。相反,如果load average的輸出值小于CPU的個數,則表示CPU還有空閑的時間片,比如本例中的輸出,CPU是非常空閑的。
6、netstat指令
通過netstat –i組合檢測網絡接口狀況
netstat指令提供了網絡接口的詳細資訊,請看下面的輸出:
[root@webserver ~]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 1313129253 0 0 0 1320686497 0 0 0 BMRU
eth1 1500 0 494902025 0 0 0 292358810 0 0 0 BMRU
lo 16436 0 41901601 0 0 0 41901601 0 0 0 LRU
Iface表示網絡裝置的接口名稱。
MTU表示最大傳輸單元,機關位元組。
RX-OK/TX-OK表示已經準确無誤的接收/發送了多少資料包。
RX-ERR/TX-ERR表示接收/發送資料包時産生了多少錯誤。
RX-DRP/TX-DRP表示接收/發送資料包時丢棄了多少資料包。
RX-OVR/TX-OVR表示由于誤差而遺失了多少資料包。
Flg表示接口标記,其中:
L:表示該接口是個回環裝置。
B:表示設定了廣播位址。
M:表示接收所有資料包。
R:表示接口正在運作。
U:表示接口處于活動狀态。
O:表示在該接口上禁用arp。
P:表示一個點到點的連接配接。
正常情況下,RX-ERR/TX-ERR、RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都應該為0,如果這幾個選項的值不為0,并且很大,那麼網絡品質肯定有問題,網絡傳輸性能也一定會下降。
當網絡傳輸存在問題是,可以檢測網卡裝置是否存在故障,如果可能,可以更新為千兆網卡或者光纖網絡,還可以檢查網絡部署環境是否合理。
4.3 通過netstat –r組合檢測系統的路由表資訊
在網絡不通,或者網絡異常時,首先想到的就是檢查系統的路由表資訊,“netstat –r”的輸出結果與route指令的輸出完全相同,請看下面的一個執行個體:
[root@webserver ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.10.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.200.0 * 255.255.255.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
default 10.10.1.254 0.0.0.0 UG 0 0 0 eth0
關于輸出中每項的具體含義,已經在前面章節進行過詳細介紹,這裡不再多講,這裡我們重點關注的是default行對應的值,default項表示系統的預設路由,對應的網絡接口為eth0。
7、top指令
top是一個動态顯示過程,即可以通過使用者按鍵來不斷重新整理目前狀态.如果在前台執行該指令,它将獨占前台,直到使用者終止該程式為止. 比較準确的說,top指令提供了實時的對系統處理器的狀态監視.它将顯示系統中CPU最“敏感”的任務清單.該指令可以按CPU使用.記憶體使用和執行時間對任務進行排序;而且該指令的很多特性都可以通過互動式指令或者在個人定制檔案中進行設定
說明:前五行都統計系統整體資訊的 下面是程序資訊區
第一行: 跟uptime 一樣,分别是目前時間13:48 系統運作時間3 days 目前登入使用者數1user 系統負載load average:,即任務隊列的平均長度
2 第二、三行為程序和CPU的資訊。當有多個CPU時,這些内容可能會超過兩行
Tasks: 96 total 程序總數
1 running 正在運作的程序數
95 sleeping 睡眠的程序數
0 stopped 停止的程序數
0 zombie 僵屍程序數
Cpu(s): 0.0% us 使用者空間占用CPU百分比 檢視CPU使用率
1.0% sy 核心空間占用CPU百分比
0.0% ni 使用者程序空間内改變過優先級的程序占用CPU百分比
100.0% id 空閑CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
0.0% st
3 最後兩行為記憶體資訊
Mem:506708k total 實體記憶體總量
477080k used 使用的實體記憶體總量
29628k free 空閑記憶體總量
113736k buffers 用作核心緩存的記憶體量
Swap: 1015800k total 交換區總量
112 used 使用的交換區總量
1015688k free 空閑交換區總量
169384k cached 緩沖的交換區總量
記憶體中的内容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆寫,
該數值即為這些内容已存在于記憶體中的交換區的大小。
相應的記憶體再次被換出時可不必再對交換區寫入。
4 程序資訊區
PID 程序ID PPID 父程序ID
PR 優先級
NI nice值 負值表示高優先級,正值表示低優先級
VIRT 程序使用的虛拟記憶體總量,機關kb。VIRT=SWAP+RES
RES 程序使用的、未被換出的實體記憶體大小,機關kb。RES=CODE+DATA
SHR 共享記憶體大小,機關kb
S 程序狀态 D=不可中斷的睡眠狀态R=運作 S=睡眠 T=跟蹤/停止 Z=僵屍程序
%CPU 上次更新到現在的CPU時間占用百分比
%MEM 程序使用的實體記憶體百分比
TIME+ 程序使用的CPU時間總計,機關1/100秒
COMMAND 指令名/指令行
二 以上隻是預設情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示内容。
1 通過f鍵可以選擇顯示的内容。按 f 鍵之後會顯示列的清單,按 a-z 即可顯示或隐藏對應的列,最後按Enter鍵确定