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

2021-09-26 00:00:43 字數 2728 閱讀 3696

平常工作會涉及到一些 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外掛程式,涵蓋電商 表單 郵...