1. 程式人生 > >linux 系統性能 檢測 命令 atop

linux 系統性能 檢測 命令 atop

atop 主要可以 監測 cpu,記憶體,硬碟,網路效能,以及 實時讀寫 日誌。

基本用法 

1.檢視  atop , 實時重新整理 按 a ,退出 按q

2.儲存日誌  atop -w log.txt

3.檢視 輸出日誌  atop -r log.txt , 按 t 檢視 下一個樣本的效能資料 ,按T檢視 上一個樣本的效能資料。

4. -P 可以 將 日誌 輸出成可解析的格式,預設是 壓縮的格式,都是亂碼。

引言

Linux以其穩定性,越來越多地被用作伺服器的作業系統(當然,有人會較真地說一句:Linux只是作業系統核心:)。但使用了Linux作為底層的作業系統,是否我們就能保證我們的服務做到7*24地穩定呢?非也,要知道業務功能是由系統上跑的程式實現的,要實現業務功能的穩定性,選擇Linux只是邁出的第一步,我們更多地工作是不讓業務程式成為穩定性的短板。

當我們的伺服器出現問題的時候,外在的表現是業務功能不能正常提供,內在的原因,從程式的角度看,可能是業務程式的問題(程式自身的bug),也可能是伺服器上人為的誤操作(不當地執行指令碼或命令);從系統資源的角度看,可能是CPU搶佔、記憶體洩漏、磁碟IO讀寫異常、網路異常等。出現問題後,面對各種各樣可能的原因,我們應如何著手進行分析?我們有什麼工具進行問題定位嗎?

atop簡介

本文要介紹的atop就是一款用於監控Linux系統資源與程序的工具,它以一定的頻率記錄系統的執行狀態,所採集的資料包含系統資源(CPU、記憶體、磁碟和網路)使用情況和程序執行情況,並能以日誌檔案的方式儲存在磁碟中,伺服器出現問題後,我們可獲取相應的atop日誌檔案進行分析。atop是一款開源軟體,我們可以從

這裡獲得其原始碼和rpm安裝包。

atop使用方法

在安裝atop之後,我們在命令列下敲入”atop"命令即可看到系統當前的執行情況:

atop預設檢視

系統資源監控欄位含義

上圖中列出了不少欄位以及數值,各欄位的含義是什麼?我們應該怎麼看?以上每個欄位的含義都是相對取樣週期而言的,下面我們先來關注上圖顯示的上半部分。

ATOP列:該列顯示了主機名、資訊取樣日期和時間點

PRC列:該列顯示程序整體執行情況

  1. sys、usr欄位分別指示程序在核心態和使用者態的執行時間
  2. #proc欄位指示程序總數
  3. #zombie欄位指示僵死程序的數量
  4. #exit欄位指示atop取樣週期期間退出的程序數量

CPU列:該列顯示CPU整體(即多核CPU作為一個整體CPU資源)的使用情況,我們知道CPU可被用於執行程序、處理中斷,也可處於空閒狀態(空閒狀態分兩種,一種是活動程序等待磁碟IO導致CPU空閒,另一種是完全空閒)

  1. sys、usr欄位指示CPU被用於處理程序時,程序在核心態、使用者態所佔CPU的時間比例
  2. irq欄位指示CPU被用於處理中斷的時間比例
  3. idle欄位指示CPU處在完全空閒狀態的時間比例
  4. wait欄位指示CPU處在“程序等待磁碟IO導致CPU空閒”狀態的時間比例

CPU列各個欄位指示值相加結果為N00%,其中N為cpu核數。

cpu列:該列顯示某一核cpu的使用情況,各欄位含義可參照CPU列,各欄位值相加結果為100%

CPL列:該列顯示CPU負載情況

  1. avg1、avg5和avg15欄位:過去1分鐘、5分鐘和15分鐘內執行佇列中的平均程序數量
  2. csw欄位指示上下文交換次數
  3. intr欄位指示中斷髮生次數

MEM列:該列指示記憶體的使用情況

  1. tot欄位指示實體記憶體總量
  2. free欄位指示空閒記憶體的大小
  3. cache欄位指示用於頁快取的記憶體大小
  4. buff欄位指示用於檔案快取的記憶體大小
  5. slab欄位指示系統核心佔用的記憶體大小

SWP列:該列指示交換空間的使用情況

  1. tot欄位指示交換區總量
  2. free欄位指示空閒交換空間大小

PAG列:該列指示虛擬記憶體分頁情況

swin、swout欄位:換入和換出記憶體頁數

DSK列:該列指示磁碟使用情況,每一個磁碟裝置對應一列,如果有sdb裝置,那麼增多一列DSK資訊

  1. sda欄位:磁碟裝置標識
  2. busy欄位:磁碟忙時比例
  3. read、write欄位:讀、寫請求數量

NET列:多列NET展示了網路狀況,包括傳輸層(TCP和UDP)、IP層以及各活動的網口資訊

  1. XXXi  欄位指示各層或活動網口收包數目
  2. XXXo 欄位指示各層或活動網口發包數目

程序檢視

為了更全面地展示程序資訊,atop提供了多種程序檢視。

預設檢視(Generic information)

進入atop資訊介面,我們看到的就是程序資訊的預設檢視(上圖下半部分),按g鍵可以從其他檢視跳到預設檢視。

atop預設檢視

從上圖中,我們可以看到PID為3061的find程序在退出前在核心模式下佔用了3.43秒CPU時間,在使用者模式下佔用了0.96秒CPU時間,共使用CPU時間為4.39秒,相對10分鐘取樣週期,CPU時間佔用比例為1%,ST列表示程序狀態,N表示該程序是前一個取樣週期新生成的程序,E表示該程序已退出,EXC列指示程序的退出碼。從程序名在“<>”符號中,我們亦可知該程序已退出。

記憶體檢視(Memory consumption)

記憶體檢視展示了程序使用記憶體情況,按m鍵可進入記憶體檢視。

atop記憶體檢視

上圖下半部分展示了每個程序佔用的虛擬記憶體空間(VSIZE)、記憶體空間(RSIZE)大小,以及在上一個取樣週期中虛擬記憶體和實體記憶體增長大小(VGROW、RGROW),MEM列指示程序所佔實體記憶體大小。

從上圖的PAG列的資訊,我們可以知道此時系統記憶體負載較高,出現頁換出情況,從程序檢視中VGROW和RGROW列可看出VirtualBox程序佔用記憶體量大量增長,部分程序佔用的記憶體減少(VGROW或RGROW欄位為負值),為VirtualBox程序騰出空間。

命令檢視(Command line)

按c鍵我們可以進入命令檢視,該檢視展示了與每個程序相對應的命令。

atop命令檢視

有時我們某位“馬大哈”同事執行了某個指令碼或命令,使得系統資源佔用率異常飆高,這時,我們可以很容易地通過atop的命令檢視找到導致異常的命令。

atop日誌

每個時間點取樣頁面組合起來就形成了一個atop日誌檔案,我們可以使用"atop -r XXX"命令對日誌檔案進行檢視。那以什麼形式儲存atop日誌檔案呢?

對於atop日誌檔案的儲存方式,我們可以這樣:

  1. 每天儲存一個atop日誌檔案,該日誌檔案記錄當天資訊
  2. 日誌檔案以"atop_YYYYMMDD"的方式命名
  3. 設定日誌失效期限,自動刪除一段時間前的日誌檔案

其實atop開發者已經提供了以上日誌儲存方式,相應的atop.daily指令碼可以在原始碼目錄下找到。在atop.daily指令碼中,我們可以通過修改INTERVAL變數改變atop資訊取樣週期(預設為10分鐘);通過修改以下命令中的數值改變日誌儲存天數(預設為28天):

(sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \; )&

最後,我們修改cron檔案,每天凌晨執行atop.daily指令碼:

0 0 * * * root /etc/cron.daily/atop.daily

小結

本文對Linux系統資源及程序監控工具atop進行了介紹,對atop所記錄資訊中的部分欄位的含義以及程序檢視進行了分析,最後講述了atop日誌檔案的儲存方式。

atop工具會根據終端介面的大小調整所顯示的欄位,因此你使用atop時看到的部分欄位可能與以上截圖不相同。若想更深入地瞭解atop工具中欄位含義和各種程序檢視,請猛擊Reference連結。