標籤:
http://c.biancheng.net/cpp/html/2782.htmlLinux系統效能分析
這篇教程的目的是向大家介紹一些免費的系統效能分析工具(命令),使用這些工具可以監控系統資源使用方式,便於發現效能瓶頸。
系統的整體效能取決於各種資源的平衡,類似木桶理論,某種資源的耗盡會嚴重阻礙系統的效能。
Linux中需要監控的資源主要有 CPU、主存(記憶體)、硬碟空間、I/O時間、網路時間、應用程式等。
影響系統效能的主要因素有:
| 因素 |
說明 |
| 使用者態CPU |
CPU在使用者態運行使用者程式所花費的時間,包括庫調用,但是不包括核心花費的時間。 |
| 核心態CPU |
CPU在核心態運行系統服務所花費的時間。所有的 I/O 操作都需要調用系統服務,程式員可以通過阻塞 I/O 傳輸來影響這部分的時間。 |
| I/O 時間和網路時間 |
響應 I/O 請求、處理網路連接所花費的時間。 |
| 記憶體 |
切換上下文和交換資料(虛擬記憶體頁匯入和匯出)花費的時間。 |
| 應用程式 |
程式等待啟動並執行時間——CPU正在運行其他程式,等待切換到當前程式。 |
說明:一般認為使用者態CPU和核心態CPU花費的時間小於70%時是良好狀態。
下面的命令可以用來監控系統效能並作出相應調整:
| 命令 |
說明 |
| nice |
啟動程式時指定進程優先順序。 |
| renice |
調整現有進程的優先順序。 |
| netstat |
顯示各種網路相關資訊,包括網路連接情況、路由表、介面狀態(Interface Statistics)、masquerade 串連、多播成員 (Multicast Memberships)等。實際上,netstat 用於顯示與IP、TCP、UDP和ICMP協議相關的統計資料,一般用於檢驗本機各連接埠的網路連接情況。 |
| time |
檢測一個命令已耗用時間以及資源(CPU、記憶體、I/O等)使用方式。 |
| uptime |
查看系統負載情況。 |
| ps |
查看系統中進程的資源使用方式(瞬時狀態,不是動態監控)。 |
| vmstat |
報告虛擬記憶體使用方式。 |
| gprof |
精確剖析器的效能,能給出函數調用時間、調用次數、調用關係等。 |
| top |
即時監控系統中各個進程資源的資源使用方式。 |
常用命令組合:
- vmstat、sar、mpstat檢測是否存在CPU瓶頸;
- vmstat、free檢測是否存在記憶體瓶頸;
- iostat檢測是否存在磁碟I/O瓶頸;
- netstat檢測是否存在網路I/O瓶頸。
Linux系統效能分析