平常工作會涉及到一些 linux 效能分析的問題,因此決定總結一下常用的一些效能分析手段,僅供參考。
說到效能分析,基本上就是 cpu、記憶體、磁碟 io 以及網路這幾個部分,本文先來看 cpu 這個部分。
cpu基礎資訊
進行效能分析之前,首先得知道 cpu 有哪些資訊,可以通過以下方法檢視 cpu 配置資訊。
lscpu
在 linux 下,類似 ls*** 這樣的命令都是用來檢視基本資訊的,如 ls 檢視當前目錄檔案資訊,lscpu 就用來檢視 cpu 資訊,類似還有 lspci 檢視 pci 資訊。
/proc 目錄是核心透傳出來給使用者態使用的,裡面記錄著很多資訊檔案,比如還有記憶體檔案 meminfo 等。可以使用 cat /proc/cpuinfo 檢視 cpu 資訊
這裡顯示的資訊可以具體到每個邏輯核上
cpu使用情況分析
知道了 cpu 的基本資訊,我們就可以使用另外的命令來對 cpu 的使用情況分析一通了。
top
相信大家對下面這玩意不陌生,windows 的任務管理器,top 的作用和它是一樣的
可以看得出來28天沒關機了。。
top 顯示的效果雖說不像它這麼華麗,但已然讓人驚呼他倆怎麼長得這麼像。
我們重點關注這麼幾個字段:
- us 使用者空間占用 cpu 時間比例
- sy 系統占用 cpu 時間比例
- ni 使用者空間改變過優先順序的程序占用 cpu 時間比例
- id cpu 空閒時間比
- wa io等待時間比(io等待高時,可能是磁碟效能有問題了)
- hi 硬體中斷
- si 軟體中斷
- st steal time
和 top 一樣的還有乙個改進版的工具:htop,功能和 top 一樣的,只不過比 top 表現更炫酷,使用更方便,可以看下它的效果。
ps可能很多人會忽略這個命令,覺得這不是檢視程序狀態資訊的嗎,其實非也,這個命令配合它的引數能顯示很多功能。比如 ps aux。如果配合 watch,可以達到跟 top 一樣的效果,如:watch -n 1 "ps aux"(-n 1 表示每隔 1s 更新一次)
這個命令基本能看出當前機器的執行狀態和問題,非常強大。可以使用 vmstat n 後面跟乙個數字,表示每隔 ns 顯示系統的狀態,資訊包括 cpu、記憶體和 io 等。
幾個關鍵的字段:
這個工具強大之處在於它不僅可以分析 cpu,還可以分析記憶體、io 等資訊,猶如瑞士軍刀。
dstat
這個命令也很強大,能顯示 cpu 使用情況,磁碟 io 情況,網路發包情況和換頁情況,而且輸出是彩色的,可讀性比較強,相對於 vmstat 更加詳細和直觀。使用時可以直接輸入命令,也可以帶相關引數。
程序使用 cpu 情況分析
上面說的是系統級的分析,現在來看單個程序的 cpu 使用情況分析,以便於我們能對占用 cpu 過多的程序進行除錯和分析,優化程式效能。
其實前面 top 和 ps 這樣的命令就可以看每個程序的 cpu 使用情況,但我們需要更專業的命令。
pidstat
這個命令預設統計系統資訊,也包括 cpu、記憶體和 io 等,我們常用pidstat -u -p pid [times] 來顯示 cpu 統計資訊。如下統計 pid = 802 的 cpu 資訊。
這個命令用來分析程序的系統呼叫情況,可以看程序都呼叫了哪些庫和哪些系統呼叫,進而可以進一步優化程式。比如我們分析 ls 的系統呼叫情況,就可以用 strace ls:
可以看到,乙個簡單的 ls 命令,其實有不少系統呼叫的操作。
一文掌握 Linux 效能分析之記憶體篇
前面我們已經學習了 cpu 篇,這篇來看下記憶體篇。同樣在分析記憶體之前,我們得知到怎麼檢視系統記憶體資訊,有以下幾種方法。這個檔案記錄著比較詳細的記憶體配置資訊,使用cat proc meminfo檢視。我們比較關心的是下面幾個字段 上面資訊沒有 memused 的值,雖然可以用現有的值大致估算出...
一文掌握 TensorFlow 基礎
在後面的課程中我們將主要使用 tensorflow 來實現各種模型的應用,所以在本節我們先來看一下 tensorflow 的基礎知識點。tensorflow 是乙個深度學習庫,由 google 開源,可以對定義在 tensor 張量 上的函式自動求導。tensor 張量 意味著 n 維陣列,flow...
必備!一文掌握Wordpress外掛程式
什麼是外掛程式?wordpress是乙個非常強大的建站系統,而在我們建站的過程中,外掛程式的使用必不可少。外掛程式是wordpress功能的擴充套件,也是wordpress得以獨步天下的 殺手鐗 其外掛程式實現了名副其實的 即插即用 全球有超過100萬的wordpress外掛程式,涵蓋電商 表單 郵...