一文掌握 Linux 性能分析之 CPU 篇


本文首發於我的公眾號 Linux雲計算網絡(id: cloud_dev),專注於干貨分享,號內有 10T 書籍和視頻資源,后台回復「1024」即可領取,歡迎大家關注,二維碼文末可以掃。

平常工作會涉及到一些 Linux 性能分析的問題,因此決定總結一下常用的一些性能分析手段,僅供參考。

說到性能分析,基本上就是 CPU、內存、磁盤 IO 以及網絡這幾個部分,本文先來看 CPU 這個部分。

CPU 基礎信息

進行性能分析之前,首先得知道 CPU 有哪些信息,可以通過以下方法查看 CPU 配置信息。

lscpu

在 Linux 下,類似 lsxxx 這樣的命令都是用來查看基本信息的,如 ls 查看當前目錄文件信息,lscpu 就用來查看 CPU 信息,類似還有 lspci 查看 PCI 信息。

可以看到我的機器配置很低,1 核 2.5GHz(在阿里雲買的最低配的服務器)。

/proc/cpuinfo

/proc 目錄是內核透傳出來給用戶態使用的,里面記錄着很多信息文件,比如還有內存文件 meminfo 等。可以使用 cat /proc/cpuinfo 查看 CPU 信息。

這里顯示的信息可以具體到每個邏輯核上,由於我只有一個核,所以只顯示一組信息。

dmidecode

這個命令是用來獲取 DMI(Desktop Management Interface)硬件信息的,包括 BIOS、系統、主板、處理器、內存、緩存等等。對於 CPU 信息,可以使用 dmidecode -t processor 來查看。

CPU 使用情況分析

知道了 CPU 的基本信息,我們就可以使用另外的命令來對 CPU 的使用情況分析一通了。

top

相信大家對下面這玩意不陌生,Windows 的任務管理器,top 的作用和它是一樣的。

top 顯示的效果雖說不像它這么華麗,但已然讓人驚呼他倆怎么長得這么像。

我們重點關注這么幾個字段:

  • load average:三個數字分別表示最近 1 分鍾,5 分鍾和 15 分鍾的負責,數值越大負載越重。一般要求不超過核數,比如對於單核情況要 < 1。如果機器長期處於高於核數的情況,說明機器 CPU 消耗嚴重了。

  • %Cpu(s):表示當前 CPU 的使用情況,如果要查看所有核(邏輯核)的使用情況,可以按下數字 “1” 查看。這里有幾個參數,表示如下:

- us    用戶空間占用 CPU 時間比例
- sy    系統占用 CPU 時間比例
- ni    用戶空間改變過優先級的進程占用 CPU 時間比例
- id    CPU 空閑時間比
- wa    IO等待時間比(IO等待高時,可能是磁盤性能有問題了)
- hi    硬件中斷
- si    軟件中斷
- st    steal time

每個進程的使用情況:這里可以羅列每個進程的使用情況,包括內存和 CPU 的,如果要看某個具體的進程,可以使用 top -p pid 查看。

和 top 一樣的還有一個改進版的工具:htop,功能和 top 一樣的,只不過比 top 表現更炫酷,使用更方便,可以看下它的效果。

ps

可能很多人會忽略這個命令,覺得這不是查看進程狀態信息的嗎,其實非也,這個命令配合它的參數能顯示很多功能。比如 ps aux。如果配合 watch,可以達到跟 top 一樣的效果,如:watch -n 1 "ps aux"(-n 1 表示每隔 1s 更新一次)

vmstat

這個命令基本能看出當前機器的運行狀態和問題,非常強大。可以使用 vmstat n 后面跟一個數字,表示每隔 ns 顯示系統的狀態,信息包括 CPU、內存和 IO 等。

更多更詳細的內容大家可以關注我的公眾號查看,那里的閱讀體驗還更好一些。


我的公眾號 「Linux雲計算網絡」(id: cloud_dev) ,號內有 10T 書籍和視頻資源,后台回復 「1024」 即可領取,分享的內容包括但不限於 Linux、網絡、雲計算虛擬化、容器Docker、OpenStack、Kubernetes、工具、SDN、OVS、DPDK、Go、Python、C/C++編程技術等內容,歡迎大家關注。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM