1. 程式人生 > >常用機器性能評估工具

常用機器性能評估工具

1.2 idl lan ios 等待隊列 騰訊 info 裏的 結果

楊海春,曾在從興技術有限公司擔任主要設計開發崗,熟悉移動計費系統整體系統架構。目前就職於騰訊計算機系統有限公司,擔任工程師職位,熟悉日誌計費系統,離線計算等場景。

軟件系統跑在機器上,處理能力受硬件制約,所以,單機處理能力會有上限。評估機器處理能力的上限,檢查程序的瓶頸在哪,有助於程序性能分析。

主要的幾大硬件:CPU、內存、網絡、磁盤。本文主要結合本人經驗介紹這幾大硬件的性能評估工具。

1.CPU性能評估

1.1 vmstat 工具

使用舉例:

vmstat 1 10

第一個參數:采樣頻率

第二個參數:采樣次數

結果參數:

--procs--

r:運行和等待CPU時間片的進程數

b:等待資源的進程數。如等待網絡I/O

如果r值長期大於CPU的個數, 則CPU遇到瓶頸

--cpu--

us:用戶進程消耗CPU時間百分比

sy :內核進程消耗的CPU時間百分比

如上圖,跑了幾個耗cpu的程序,發現us長期接近100,cpu已經跑滿了。這個時候,可能需要考慮優化應用服務算法了。

一般:如果us長時間大於50,需要考慮優化程序算法等。

sy + us > 80 可能存在CPU瓶頸了

1.2 Sar工具

舉例:sar -u 1 5

%idle值高,表示CPU較空閑。

如果idle值持續低於10,表示系統中目前的瓶頸在CPU。

如上圖,CPU已經達到瓶頸了。

2. 內存性能評估

2.1 free 工具

舉例:free –g or free –m

-g:以GB為單位查看

-m:以MB為單位查看

關註第二行:

-buffers/cache=Mem行:used-buffers-cached

+buffers/cache=Mem行:free+buffers+cached

一般第二行 +buffers/cache 表示應用程序可使用的內存。

cached裏的內容,一般可以釋放給應用程序使用。

釋放cached裏的內存,看是否可用:

echo 3 > /proc/sys/vm/drop_caches

再查看內存:

發現末完全釋放,只釋放了一部分。(與上面的圖比較)

檢查:發現部分共享內存占用,無法釋放,應用程序也就無法使用這部分了。

刪除目前沒有使用的共享內存:

ipcs -m | awk ‘$6 == 0 {system("ipcrm -m "$2)}‘

再執行

echo 3 > /proc/sys/vm/drop_caches

再執行

free –m

cached裏的內存又釋放了一些。

剩下的,部分的共享內存,應用程序正常使用,無法釋放。

所以,真正可用的內存,應該是 2400M左右。

還可以使用cat /proc/meminfo查看

3. 磁盤性能評估

3.1 iostat工具

舉例:

 iostat -d -x -k 1 10

-d 表示,顯示設備(磁盤)使用狀態

-x將用於顯示和io相關的擴展數據

-k某些使用block為單位的列強制使用Kilobytes為單位

await I/O請求的平均等待時間,單位毫秒;值越小,性能越好;

svctm I/O請求的平均服務時間,單位毫秒

%util 統計時間內有百分幾的時間用於I/O操作。接近100,表示磁盤已經接近滿負荷運行了。

如上圖,如果await時間遠大於svctm,表示等待I/O隊列的時候太大,磁盤已經達到瓶頸了。

3.2 Sar工具

舉例:

sar –d 1 10

avwait:隊列占滿時傳送請求等待隊列空閑的平均時間。

avserv:完成傳送請求所需平均時間(毫秒)。

%util: 100磁盤已經繁忙了。

看寫入速度,100多M每秒。要提高寫入速度,可以換更快的盤。

4. 網卡性能監控

4.1 ss工具

舉例:

ss -a -tp -s|grep agent

ss –s

查看現有連接數等:

常用選項:

-a 顯示所有的sockets

-l 顯示正在監聽的

-n 顯示數字IP和端口,不通過域名服務器

-p 顯示使用socket的對應的程序

-s 打印出統計信息。

5. 整體性能評估工具

5.1 Top工具

舉例:

 top

%us:指的是cpu用在用戶態程序上的時間;

%sy:指的是cpu用在內核態程序上的時間;

%ni:指的是用在nice優先級調整過的用戶態程序上的時間;

%id:指的是cpu空閑時間;

load average:

任務隊列的平均長度

1分鐘、5分鐘、15分鐘前到現在平均值

三個值長時間大於CPU核數的話,表示機器很繁忙。上圖開了8個耗CPU程序,可以發現,1分鐘均值已經越過CPU個數(機器CPU個數為8核)

常用機器性能評估工具