目錄表

[*nix] Resources Monitor: Top Command

0x00 前言

top 指令是 linux 上對於系統監控一個基本的指令

最近在找工作剛好被問到的一些細節

藉由這個機會來整理一下 top 指令的相關訊息


0x01 Top Command Overview

這邊是基本的 Top Command Output,沒有使用額外參數

FreeBSD:

Ubuntu:

輸出大致上分為上方的系統統計資訊區與下方的個別工作資源區

這邊在 FreeBSD 圖中有 ARC (Adaptive Replacement Cache) 是因為我在 FreeBSD 使用了 ZFS,這種檔案系統以 ARC 取代了傳統的 LRU (Least Recently Used) 快取

ARC 中結合了不同快取清單,包含了 top command 中顯示的 MRU (Most Recently Used) 及 MFU (Most Frequently Used),這部分之後另開篇幅說明


0x02 系統資源區

Line 1: General Information

Line 2: Task

這裡顯示了 processes 的數量與狀態

Line 3: CPU

CPU 資訊這部分我覺得 FreeBSD 比較直覺可讀,Ubuntu 則是比較細項一些

Line4: Memory

這裡 FreeBSD 的輸出就比較細了,我們把 FreeBSD 跟 Ubuntu 分開討論

FreeBSD:

Ubuntu:

引用一下我在 LinuxHowTo 看到的解釋:

Buffers are associated with a specific block device, and cover caching of filesystem metadata as well as tracking in-flight pages. The cache only contains parked file data. That is, the buffers remember what's in directories, what file permissions are, and keep track of what memory is being written from or read to for a particular block device. The cache only contains the contents of the files themselves.

我的理解是 buffer 會包含了比較詳細的 filesystem metadata,像是資料在哪個資料夾,檔案權限等,cache 則是單純的資料內容

Line 5: Swap

系統執行程式時是從硬碟將程式載入記憶體,而系統中 CPU 會輪流執行不同程式,許多的程式被載入記憶體,而當下沒有在運行的程式若記憶體空間被需要的時候很有可能就會被 Swap Out 了

Swap 是硬碟上的一塊空間,CentOS 官網建議一般若記憶體大小 < 2GB 建議分配的 Swap 大小為記憶體大小的兩倍,若 > 2GB 的話,則建議是記憶體大小 + 2GB

前面圖中可以看到,FreeBSD 上我的 RAM 約為 1GB,Swap 則設為 2GB

Ubuntu 部分在 DigitalOcean 上的預設安裝則是沒有切 Swap


0x03 工作資源區

top 指令的下半部就是個別 task 所使用的資源跟狀態了

這裡的欄位我以 ubuntu 為主來討論


0x03 參考資料