![Linux性能分析工具_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a1.gif)
![Linux性能分析工具_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a2.gif)
![Linux性能分析工具_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a3.gif)
![Linux性能分析工具_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a4.gif)
![Linux性能分析工具_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/29/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a/c9ac9046-fd6f-4e8a-8804-ad29cfc0783a5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Linux 性能分析工具(vmstat,iostat,sar). /proc/partitions iostat 的數(shù)據(jù)的主要來源是 /proc/partitions,所以需要先看看 /proc/partitions 中有些什么。 # cat /proc/partitions major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq 3 0 hda 12521. /proc/partitionsiostat 的數(shù)據(jù)的主要來源是 /proc/partitions,所以需要先看看/pr
2、oc/partitions 中有些什么。# cat /proc/partitionsmajor minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq3 0 hda 12524 31127 12941 25534 -1 3 1 hda1 13 71 168 140 0 0 0 0 0 140 1403 2 1 hda2 0 0 0 0 0 0 0 0 0 0 03 5 hda5 100 477 665 620 1 1 2 30 0 610 6503 6 hda6 518 92 4616 27
3、70 257 3375 29056 0 46520 3 7 hda7 11889 30475 12683 22158 0 major: 主設備號。3 代表 hda。minor: 次設備號。7 代表 No.7 分區(qū)。#blocks: 設備總塊數(shù) (1024 bytes/block)。*1024 = (bytes) 2Gname: 設備名稱。如 hda7。rio: 完成的讀 I/O 設備總次數(shù)。指真正向 I/O 設備發(fā)起并完成的讀操作數(shù)目, 也就是那些放到 I/O 隊列中的讀請求。注意很多進程發(fā)起的讀操作 (read()很可能會和其他的操作進行 merge,不一定每個 read() 調用 都引起一
4、個 I/O 請求。rmerge: 進行了 merge 的讀操作數(shù)目。rsect: 讀扇區(qū)總數(shù) (512 bytes/sector)ruse: 從進入讀隊列到讀操作完成的時間累積 (毫秒)。上面的例子顯示從開機開始,讀 hda7 操作共用了約340秒。wio: 完成的寫 I/O 設備總次數(shù)。wmerge: 進行了 merge 的寫操作數(shù)目。wsect: 寫扇區(qū)總數(shù)wuse: 從進入寫隊列到寫操作完成的時間累積 (毫秒)running: 已進入 I/O 請求隊列,等待進行設備操作的請求總數(shù)。上面的例子顯 示 hda7 上的請求隊列長度為 0。use: 扣除重疊等待時間的凈等待時間 (毫秒)。一般比
5、 (ruse+wuse) 要小。比 如 5 個讀請求同時等待了 1 毫秒,那么 ruse值為5ms, 而 use值為 1ms。use 也可以理解為I/O隊列處于不為空狀態(tài)的總時間。hda7 的I/O 隊列非空時間為 509 秒,約合8分半鐘。 aveq: 在隊列中總的等待時間累積 (毫秒) (約等于ruse+wuse) 2. iostat 結果解析# iostat -xLinux 2.4.21-9.30AX (localhost) 2004年07月14日avg-cpu: %user %nice %sys %idle3.85 0.00 0.95 95.20Device: rrqm/s wrqm/
6、s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util/dev/hda 1.70 1.70 0.82 0.82 19.88 20.22 9.94 10.11 24.50 11.83 57.81 610.76 99.96/dev/hda1 0.00 0.00 0.00 0.00 0.01 0.00 0.00 0.00 12.92 0.00 10.77 10.77 0.00/dev/hda5 0.02 0.00 0.00 0.00 0.03 0.00 0.02 0.00 6.60 0.00 6.44 6.04
7、0.00/dev/hda6 0.01 0.38 0.05 0.03 0.43 3.25 0.21 1.62 46.90 0.15 193.96 52.25 0.41/dev/hda7 1.66 1.33 0.76 0.79 19.41 16.97 9.70 8.49 23.44 0.79 51.13 19.79 3.07rrqm/s: 每秒進行 merge 的讀操作數(shù)目。即 delta(rmerge)/swrqm/s: 每秒進行 merge 的寫操作數(shù)目。即 delta(wmerge)/sr/s: 每秒完成的讀 I/O 設備次數(shù)。即 delta(rio)/sw/s: 每秒完成的寫 I/O 設備
8、次數(shù)。即 delta(wio)/srsec/s: 每秒讀扇區(qū)數(shù)。即 delta(rsect)/swsec/s: 每秒寫扇區(qū)數(shù)。即 delta(wsect)/srkB/s: 每秒讀K字節(jié)數(shù)。是 rsect/s 的一半,因為每扇區(qū)大小為512字節(jié)。wkB/s: 每秒寫K字節(jié)數(shù)。是 wsect/s 的一半。avgrq-sz: 平均每次設備I/O操作的數(shù)據(jù)大小 (扇區(qū))。即 delta(rsect+wsect)/delta(rio+wio)avgqu-sz: 平均I/O隊列長度。即 delta(aveq)/s/1000 (因為aveq的單位為毫秒)。await: 平均每次設備I/O操作的等待時間 (毫
9、秒)。即 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系統(tǒng)已經滿負荷,該磁盤可能存在瓶頸。svctm 一般要小于 await (因為同時等待的請求的等待時間被重復計算了),svctm 的大小一般和磁盤性能有關,CPU/內存的負荷也會
10、對其有影響,請求過多也會間接導致 svctm 的增加。await 的大小一般取決于服務時間(svctm) 以及I/O 隊列的長度和 I/O 請求的發(fā)出模式。如果 svctm 比較接近 await,說明I/O 幾乎沒有等待時間;如果 await 遠大于 svctm,說明 I/O 隊列太長,應用得到的響應時間變慢,如果響應時間超過了用戶可以容許的范圍,這時可以考慮更換更快的磁盤,調整內核 elevator 算法,優(yōu)化應用,或者升級 CPU。隊列長度(avgqu-sz)也可作為衡量系統(tǒng) I/O 負荷的指標,但由于 avgqu-sz 是按照單位時間的平均值,所以不能反映瞬間的 I/O 洪水。 3. I
11、/O 系統(tǒng) vs. 超市排隊舉一個例子,我們在超市排隊 checkout 時,怎么決定該去哪個交款臺呢? 首當是看排的隊人數(shù),5個人總比20人要快吧? 除了數(shù)人頭,我們也常??纯辞懊嫒速徺I的東西多少,如果前面有個采購了一星期食品的大媽,那么可以考慮換個隊排了。還有就是收銀員的速度了,如果碰上了連錢都點不清楚的新手,那就有的等了。另外,時機也很重要,可能 5 分鐘前還人滿為患的收款臺,現(xiàn)在已是人去樓空,這時候交款可是很爽啊,當然,前提是那過去的 5 分鐘里所做的事情比排隊要有意義 (不過我還沒發(fā)現(xiàn)什么事情比排隊還無聊的)。I/O 系統(tǒng)也和超市排隊有很多類似之處: r/s+w/s 類似于交款人的總
12、數(shù) 平均隊列長度(avgqu-sz)類似于單位時間里平均排隊人的個數(shù) 平均服務時間(svctm)類似于收銀員的收款速度 平均等待時間(await)類似于平均每人的等待時間 平均I/O數(shù)據(jù)(avgrq-sz)類似于平均每人所買的東西多少 I/O 操作率 (%util)類似于收款臺前有人排隊的時間比例。 我們可以根據(jù)這些數(shù)據(jù)分析出 I/O 請求的模式,以及 I/O 的速度和響應時間。 4. 一個例子# iostat -x 1avg-cpu: %user %nice %sys %idle16.24 0.Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s
13、 wkB/s avgrq-sz avgqu-sz await svctm %util/dev/cciss/c0d00.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29/dev/cciss/c0d0p10.00 44.90 1.02 27.55 8.16 579.59 4.08 289.80 20.57 22.35 78.21 5.00 14.29/dev/cciss/c0d0p20.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0
14、.00上面的 iostat 輸出表明秒有 28.57 次設備 I/O 操作: delta(io)/s = r/s +w/s = 1.02+27.55 = 28.57 (次/秒) 其中寫操作占了主體 (w:r = 27:1)。平均每次設備 I/O 操作只需要 5ms 就可以完成,但每個 I/O 請求卻需要等上78ms,為什么? 因為發(fā)出的 I/O 請求太多 (每秒鐘約 29 個),假設這些請求是同時發(fā)出的,那么平均等待時間可以這樣計算: 平均等待時間 = 單個 I/O 服務時間 * ( 1 + 2 + + 請求總數(shù)-1) / 請求總數(shù)應用到上面的例子: 平均等待時間 = 5ms * (1+2+2
15、8)/29 = 70ms,和iostat 給出的 78ms 的平均等待時間很接近。這反過來表明 I/O 是同時發(fā)起的。每秒發(fā)出的 I/O 請求很多 (約 29 個),平均隊列卻不長 (只有 2 個 左右),這表明這 29 個請求的到來并不均勻,大部分時間 I/O 是空閑的。一秒中有 14.29% 的時間 I/O 隊列中是有請求的,也就是說,85.71% 的時間里I/O 系統(tǒng)無事可做,所有 29 個 I/O 請求都在142毫秒之內處理掉了。delta(ruse+wuse)/delta(io) = await = 78.21 = delta(ruse+wuse)/s =78.21 * delta(
16、io)/s = 78.21*28.57 = 2232.8,表明每秒內的I/O請求總共需要等待2232.8ms。所以平均隊列長度應為 2232.8ms/1000ms = 2.23,而 iostat給出的平均隊列長度 (avgqu-sz) 卻為 22.35,為什么?! 因為 iostat 中有bug,avgqu-sz 值應為 2.23,而不是 22.35。用vmstat監(jiān)視內存使用情況vmstat是Virtual Meomory Statistics(虛擬內存統(tǒng)計)的縮寫,可對操作系統(tǒng)的虛擬內存、進程、CPU活動進行監(jiān)視。它是對系統(tǒng)的整體情況進行統(tǒng)計,不足之處是無法對某個進程進行深入分析。vmst
17、at的語法如下:程序代碼vmstat -V -n delay countprocs memory page disk faults cpu r b w swap free re mf mi po fr de sr f0 s0 s1 s2 in sy cs us sy id 0 0 0 14888 19120 0 4 2 11 10 0 0 0 0 0 8 198 2158 98 11 19 69 SWAP的單位應該是K,不是M。還有兩個比較重要的參數(shù)是PI、PO,表示內存的調入、調出頁面,單位也是K,但是多大值作為一個衡量標準,我也不清楚,不知道是否有經驗值。 還有,最好使用vmstat t
18、n命令,例如 vmstat 5 5,表示在T(5)秒時間內進行N(5)次采樣。如果只使用vmstat,無法反映真正的系統(tǒng)情況,試一下,看看結果就知道了。 procs: r在運行隊列中等待的進程數(shù) b在等待io的進程數(shù) w可以進入運行隊列但被替換的進程 memoy swap現(xiàn)時可用的交換內存(k表示) free空閑的內存(k表示) pages re回收的頁面 mf非嚴重錯誤的頁面 pi進入頁面數(shù)(k表示) po出頁面數(shù)(k表示) fr空余的頁面數(shù)(k表示) de提前讀入的頁面中的未命中數(shù) sr通過時鐘算法掃描的頁面 disk 顯示每秒的磁盤操作。 s表示scsi盤,0表示盤號 fault 顯示每
19、秒的中斷數(shù) in設備中斷 sy系統(tǒng)中斷 cycpu交換 cpu 表示cpu的使用狀態(tài) cs用戶進程使用的時間 sy系統(tǒng)進程使用的時間 idcpu空閑的時間 解釋: 如果 r經常大于 4 ,且id經常少于40,表示cpu的負荷很重。 如果pi,po 長期不等于0,表示內存不足。 如果disk 經常不等于0, 且在 b中的隊列 大于3, 表示 io性能不好。在使用UNIX操作系統(tǒng)的過程中,我們常常會用到各種各樣的問題,比如系統(tǒng)運行速度 突然變慢,系統(tǒng)容易死機或者主機所帶的終端常出現(xiàn)死機,這時我們常常猜測,是硬 盤空間太小,還是內存不足?I/O出現(xiàn)瓶頸,或者是系統(tǒng)的核心參數(shù)出了問題?這時, 我們應該
20、考慮使用系統(tǒng)給我們提供的sar命令來對系統(tǒng)作一個了解,該命令是系統(tǒng)維護 的重要工具,主要幫助我們掌握系統(tǒng)資源的使用情況,特別是內存和CPU 的使用情況, 是UNIX系統(tǒng)使用者應該掌握的工具之一。 sar 命令行的常用格式:sar options -A -o file t n在命令行中,n 和t 兩個參數(shù)組合起來定義采樣間隔和次數(shù),t為采樣間隔,是必須有 的參數(shù),n為采樣次數(shù),是可選的,默認值是1,-o file表示將命令結果以二進制格式 存放在文件中,file 在此處不是關鍵字,是文件名。options 為命令行選項,sar命令 的選項很多,下面只列出常用選項:-A:所有報告的總和。 -u:C
21、PU利用率 -v:進程、I節(jié)點、文件和鎖表狀態(tài)。 -d:硬盤使用報告。 -r:沒有使用的內存頁面和硬盤塊。 -g:串口I/O的情況。 -b:緩沖區(qū)使用情況。 -a:文件讀寫情況。 -c:系統(tǒng)調用情況。 -R:進程的活動情況。 -y:終端設備活動情況。 -w:系統(tǒng)交換活動。下面將舉例說明。例一:使用命令行 sar -u t n例如,每60秒采樣一次,連續(xù)采樣5次,觀察CPU 的使用情況,并將采樣結果以二進制 形式存入當前目錄下的文件zhou中,需鍵入如下命令:# sar -u -o zhou 60 5屏幕顯示:SCO_SVscosysv3.2v5.0.5i8038610/01/2001 14:4
22、3:50%usr%sys%wio%idle(-u) 14:44:5001494 14:45:5002493 14:46:5002296 14:47:5002593 14:48:5002296 Average 02494在顯示內容包括:%usr:CPU處在用戶模式下的時間百分比。 %sys:CPU處在系統(tǒng)模式下的時間百分比。 %wio:CPU等待輸入輸出完成時間的百分比。 %idle:CPU空閑時間百分比。在所有的顯示中,我們應主要注意%wio和%idle,%wio的值過高,表示硬盤存在I/O瓶頸, %idle值高,表示CPU較空閑,如果%idle值高但系統(tǒng)響應慢時,有可能是CPU等待分配內存,
23、 此時應加大內存容量。%idle值如果持續(xù)低于10,那么系統(tǒng)的CPU處理能力相對較低,表 明系統(tǒng)中最需要解決的資源是CPU。如果要查看二進制文件zhou中的內容,則需鍵入如下sar命令:# sar -u -f zhou可見,sar命令即可以實時采樣,又可以對以往的采樣結果進行查詢。例二:使用命行sar -v t n例如,每30秒采樣一次,連續(xù)采樣5次,觀察核心表的狀態(tài),需鍵入如下命令:# sar -v 30 5屏幕顯示: SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001 10:33:23 proc-sz ov inod-sz ov file-sz ov lo
24、ck-sz (-v) 10:33:53305/321 01337/2764 01561/1706040/128 10:34:23308/321 01340/2764 01587/1706037/128 10:34:53305/321 01332/2764 01565/1706036/128 10:35:23308/321 01338/2764 01592/1706037/128 10:35:53308/321 01335/2764 01591/1706037/128顯示內容包括:proc-sz:目前核心中正在使用或分配的進程表的表項數(shù),由核心參數(shù)MAX-PROC控制。inod-sz:目前核心中
25、正在使用或分配的i節(jié)點表的表項數(shù),由核心參數(shù) MAX-INODE控制。file-sz: 目前核心中正在使用或分配的文件表的表項數(shù),由核心參數(shù)MAX-FILE控 制。ov:溢出出現(xiàn)的次數(shù)。Lock-sz:目前核心中正在使用或分配的記錄加鎖的表項數(shù),由核心參數(shù)MAX-FLCKRE 控制。顯示格式為實際使用表項/可以使用的表項數(shù)顯示內容表示,核心使用完全正常,三個表沒有出現(xiàn)溢出現(xiàn)象,核心參數(shù)不需調整,如 果出現(xiàn)溢出時,要調整相應的核心參數(shù),將對應的表項數(shù)加大。例三:使用命行sar -d t n例如,每30秒采樣一次,連續(xù)采樣5次,報告設備使用情況,需鍵入如下命令:# sar -d 30 5屏幕顯示:
26、SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001 11:06:43 device%busyavquer+w/sblks/savwait avserv (-d) 11:07:13 wd-01.472.754.6714.73 5.50 3.14 11:07:43 wd-00.4318.77 3.078.6625.11 1.41 11:08:13 wd-00.772.782.777.264.94 2.77 11:08:43 wd-01.1011.18 4.1011.26 27.32 2.68 11:09:13 wd-01.9721.78 5.8634.0669.6
27、6 3.35 Average wd-01.1512.11 4.0915.1931.12 2.80顯示內容包括:device: sar命令正在監(jiān)視的塊設備的名字。 %busy: 設備忙時,傳送請求所占時間的百分比。 avque: 隊列站滿時,未完成請求數(shù)量的平均值。 r+w/s: 每秒傳送到設備或從設備傳出的數(shù)據(jù)量。 blks/s: 每秒傳送的塊數(shù),每塊512字節(jié)。 avwait: 隊列占滿時傳送請求等待隊列空閑的平均時間。 avserv: 完成傳送請求所需平均時間(毫秒)。在顯示的內容中,wd-0是硬盤的名字,%busy的值比較小,說明用于處理傳送請求的有 效時間太少,文件系統(tǒng)效率不高,一般來
28、講,%busy值高些,avque值低些,文件系統(tǒng) 的效率比較高,如果%busy和avque值相對比較高,說明硬盤傳輸速度太慢,需調整。例四:使用命行sar -b t n例如,每30秒采樣一次,連續(xù)采樣5次,報告緩沖區(qū)的使用情況,需鍵入如下命令:# sar -b 30 5屏幕顯示:SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001 14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b) 14:55:290147100 52178 00 14:55:590186100 52579 00 14:56:294232 98 85886 00 14:56:590125100 52376 00 14:57:290 89100 41266 00 Average 1156 99 52880 00顯示內容包括:bread/s: 每秒從硬盤讀入系統(tǒng)緩沖區(qū)buffer的物理塊數(shù)。 lread/s: 平均每秒
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開學典禮觀后感范文15篇
- 愚人節(jié)主題方案(資料11篇)
- 感恩父母孝順父母的演講稿6篇
- 產品營銷策劃實施方案
- 初級會計實務-《初級會計實務》預測試卷162
- 個人車輛出租給公司進行項目運輸協(xié)議(2025版)3篇
- 二零二五版房地產售后服務代理銷售合同2篇
- 2025版跨境電商平臺實習生試用期勞動合同規(guī)范3篇
- 二零二五版施工混凝土分包合同施工環(huán)境保護協(xié)議3篇
- 部編版一年級語文下冊識字5《動物兒歌》精美課件
- 江西省部分學校2024-2025學年高三上學期1月期末英語試題(含解析無聽力音頻有聽力原文)
- 基底節(jié)腦出血護理查房
- 工程公司總經理年終總結
- 2024年海南省高考地理試卷(含答案)
- 【企業(yè)盈利能力探析的國內外文獻綜述2400字】
- 三年級上冊數(shù)學口算題1000道帶答案
- 蘇教版(2024新版)一年級上冊科學全冊教案教學設計
- 期末綜合測試卷一(試題)-2023-2024學年一年級下冊數(shù)學滬教版
- 江西警察學院治安學專業(yè)主干課程教學大綱 文檔
- 醫(yī)美整形銷售培訓課件
- 芯片研發(fā)項目計劃表模板
評論
0/150
提交評論