全部產品
Search
文件中心

Elastic Compute Service:使用atop工具監控Linux系統指標

更新時間:Oct 17, 2025

atop允許使用者通過互動介面即時洞察系統狀態,還能作為後台服務運行,以指定頻率記錄系統與進程的活動快照,並將其儲存為二進位日誌,協助使用者精確回溯並診斷系統問題。

安裝atop

  1. 使用Workbench登入Linux執行個體

  2. 安裝atop。

    Alibaba Cloud Linux 3/2、CentOS 7/8、Fedora

    # 更新軟體包
    sudo yum update -y
    
    # 安裝 atop
    sudo yum install atop -y

    Ubuntu / Debian

    # 更新軟體包
    sudo apt update -y
    
    # 安裝 atop
    sudo apt install atop -y

    CentOS Stream 9、Rocky Linux 9

    # 更新軟體包
    sudo dnf update -y
    
    # 安裝 EPEL 源
    sudo dnf install epel-release -y
    
    # 安裝 atop
    sudo dnf install atop -y

    openSUSE

    # 更新軟體包
    sudo zypper update -y
    
    # 安裝 atop
    sudo zypper install atop atop-daemon -y
  3. 啟動 atop 服務。

    sudo systemctl start atop
  4. 驗證atop是否啟動成功。

    執行sudo systemctl status atop查看服務狀態,若回執資訊包含active(running),表示啟動成功。

使用atop查看即時指標

  1. 執行atop [採樣間隔秒數] [採樣次數]命令進入互動模式。

    # 以預設配置查看(10秒重新整理一次)。
    atop
    
    # 每5秒查看一次系統指標。
    atop 5
    
    # 以10秒為間隔,採集30次系統指標。
    atop 10 30
    
    # 以30秒為間隔,採集10次,並結果寫入檔案。
    atop 30 10 > /tmp/atop.mem
    • 系統資源概覽:匯總了CPU、記憶體、交換空間、磁碟I/O和網路的整體使用方式。

      image

    • 進程級詳情:展示了各個進程的資源消耗詳情。

      image

  2. 在互動模式下,可使用單個字母鍵切換視圖或者排序。

    按鍵

    功能

    用途

    c

    顯示完整命令列

    查看進程啟動的具體參數。

    g

    通用視圖(預設)

    綜合查看 CPU、記憶體增長、磁碟 I/O。

    m/M

    記憶體視圖/按記憶體排序

    用於分析記憶體使用量、頁錯誤,排查記憶體流失。

    d/D

    磁碟視圖/按磁碟排序

    用於分析磁碟 I/O,定位磁碟讀寫高的進程。

    n/N

    網路視圖/按網路排序(需安裝並載入netatop核心模組

    用於分析網路流量,定位網路流量大的進程。

    a

    彙總檢視

    將一個程式的所有線程/進程資源消耗彙總在一起。

    C

    按 CPU 排序

    快速定位消耗 CPU 最多的進程。

    h

    顯示協助

    查看更多快速鍵。

    q

    退出

    退出互動模式。

使用atop查看歷史指標

atop服務成功運行後,會定期在/var/log/atop/目錄下產生以atop_YYYYMMDD格式命名的二進位記錄檔。

atop 的日誌是二進位檔案,使用catlessvim等文字編輯器開啟會顯示亂碼。

讀取歷史日誌

  1. 讀取歷史記錄檔。

    使用atop -r <記錄檔>命令載入指定的記錄檔。

    # 查看當天的日誌,atop會自動尋找當天的記錄檔
    atop -r
    
    # 查看指定日期的日誌
    atop -r /var/log/atop/atop_YYYYMMDD
  2. 在日誌中跳轉到指定時間點。

    載入日誌後,介面顯示的是該記錄檔的第一個時間點快照。

    1. 按 t 鍵:向後跳轉到下一個時間點的快照。

    2. 按 T 鍵(大寫):向前跳轉到上一個時間點的快照。

    3. 按 b 鍵:輸入具體時間(格式 HH:MM),直接跳轉到該時間點。

最佳化 atop 日誌記錄行為

在分析歷史日誌時,若發現預設的日誌記錄頻率(10分鐘一次)對於某些問題來說太過寬泛,或者預設的28天保留時間長度不能滿足監控需求,可通過修改 atop 的設定檔來調整其後台日誌的記錄頻率、保留天數和儲存路徑。

  1. 使用vim或其他文字編輯器開啟設定檔。

    • RHEL 及其衍生版(Alibaba Cloud Linux,CentOS,Fedora,Rocky Linux)。

      sudo vim /etc/sysconfig/atop
    • Debian 及其衍生版(Ubuntu, Debian),openSUSE。

      sudo vim /etc/default/atop
  2. 預設設定檔的內容如下:

    LOGOPTS=""
    LOGINTERVAL=600
    LOGGENERATIONS=28
    LOGPATH=/var/log/atop
    • LOGOPTS:額外的日誌記錄選項。例如,設定-L可在日誌輪轉時建立一個指向最新日誌的符號連結 /var/log/atop/atop_current,方便快速存取。

    • LOGINTERVAL:日誌記錄的採樣間隔,單位是秒。預設值通常是 600(即10分鐘),表示每10分鐘記錄一次系統快照。

    • LOGGENERATIONS:記錄檔的生命週期,單位是天。預設值通常是 28,表示 atop 會自動刪除28天前的舊記錄檔。

    • LOGPATH:記錄檔儲存路徑,預設為/var/log/atop

      如果修改此路徑,請確保新目錄已存在且 atop 進程有寫入許可權。
  3. 配置修改後,需重啟atop服務讓配置生效。

    sudo systemctl restart atop

產生指標報告

atopsar是atop工具包中的一個非互動命令列工具,用於從atop記錄的二進位記錄檔中提取資料並產生系統效能報告。

使用樣本

  • 查看當前系統在 1 分鐘內(12 次,間隔 5 秒)的CPU使用率指標報告。

    atopsar -c 5 12
  • 查看當天指定時間段的記憶體指標報告。

    # 查看當天18:00至18:01的記憶體指標報告
    atopsar -m -b 18:00 -e 18:01
  • 查看指定日期內,指定時間段的記憶體指標報告。

    # 查看2025年8月15日 18:00至18:01的記憶體指標報告。
    atopsar -m -r /var/log/atop/atop_20250815 -b 18:00 -e 18:01

atopsar命令基本文法

atopsar [options] [interval] [count]
  • [options]:用於指定報告類型的標誌,例如-c(CPU),-m(記憶體),-d(磁碟)。

  • [interval]:指定輸出報告的時間間隔,單位為秒。

  • [count]:指定輸出報告的次數。

指標解讀

系統資源概覽

指標類別

指標

詳細說明

單位

ATOP

主機名稱, 日期

顯示當前主機名稱、採樣日期和時間。

-

採樣間隔

顯示兩次採樣之間的時間間隔。

PRC(進程總體情況)

sys

在採樣間隔內,所有進程在核心模式下消耗的CPU總時間。

user

在採樣間隔內,所有進程在使用者模式下消耗的CPU總時間。

#proc

系統當前的總進程數量。

#trun

處於運行中狀態的平均線程數。

#tslpi

處於可中斷睡眠狀態的線程數。

#tslpu

處於不可中斷睡眠狀態的線程數。

#zombie

殭屍進程的數量。

clones

在採樣間隔內,通過clone系統調用建立的新進程/線程數。

個/秒

#exit

在採樣間隔內,退出的進程數量。

個/秒

CPU/cpu(CPU整體/單個CPU核心)

sys%

CPU在核心模式下花費的時間百分比。

%

user%

CPU在使用者模式下花費的時間百分比。

%

irq%

CPU處理硬體中斷(irq)和軟體中斷(softirq)的時間百分比。

%

idle%

CPU處於完全空閑狀態的時間百分比。

%

wait%

CPU因等待磁碟I/O完成而處於空閑狀態的時間百分比。

%

steal%

虛擬CPU等待物理CPU時間的百分比(被宿主機或其他虛擬機器佔用的時間)。

%

guest%

運行虛擬機器所花費的CPU時間的百分比。

%

freq%

CPU的平均運行頻率,相對於其最大頻率的百分比。

%

CPL(CPU負載)

avg1/avg5/avg15

過去1分鐘/5分鐘/15分鐘的系統平均負載。

-

csw

在採樣間隔內,環境切換的次數。

次/秒

intr

在採樣間隔內,發生的中斷總次數。

次/秒

MEM(實體記憶體)

tot

系統實體記憶體總量。

GiB/MiB

free

完全未被使用的空閑記憶體量。

GiB/MiB

cache

用作頁面緩衝的記憶體量,用於快取檔案資料。

GiB/MiB

dirty

在頁面緩衝中,已被修改但尚未寫回磁碟的髒頁大小。

MiB

buff

用作緩衝區快取的記憶體量,用於緩衝塊裝置中繼資料。

MiB

slab

核心用於自身資料結構(slab分配器)的記憶體量。

MiB

shmem

共用記憶體(包括tmpfs)的大小。

MiB

vmbal

(僅限32位系統)用於虛擬記憶體地區的平衡記憶體量。

MiB

SWP(交換分區)

tot

交換分區的總大小。

GiB/MiB

free

閒置交換分區大小。

GiB/MiB

swcac

已被換出但同時又被緩衝的記憶體大小。

MiB

vmcom

已被應用程式申請的虛擬記憶體總量。

GiB/MiB

vmlim

允許申請的虛擬記憶體上限。

GiB/MiB

PAG(分頁活動)

scan

核心在採樣間隔內為回收記憶體而掃描的頁數。

頁/秒

steal

核心在掃描後成功回收的頁數。

頁/秒

stall

核心因記憶體不足而停滯以等待頁面回收的次數。

次/秒

swin

從交換分區換入到實體記憶體的頁面數。

頁/秒

swout

從實體記憶體換出到交換分區的頁面數。

頁/秒

DSK(磁碟)

LVM(邏輯卷)

busy

磁碟繁忙的時間百分比。達到100%表示磁碟飽和。

%

read/write

在採樣間隔內,完成的讀/寫請求數量。

個/秒

KiB/r/KiB/w

每個讀/寫請求的平均資料大小。

KB

Msec/r/Msec/w

每個讀/寫請求的平均耗時(包括排隊和服務時間)。

毫秒

avio

平均I/O請求的服務時間(不含排隊時間)。

毫秒

NET(網路)

transport

TCP和UDP層的收發包統計。

包/秒

network

IP層的收發包、轉寄包統計。

包/秒

*if*

顯示每個網路介面的活動情況。

-

pcki/pcko

介面接收/發送的資料包數量。

包/秒

spdi/spdo

介面接收/發送的速率。

Mbps

erri/erro

介面接收/發送時發生的錯誤數。

個/秒

drpi/drpo

介面接收/發送時丟棄的資料包數。

個/秒

進程級詳情

視圖

指標

詳細說明

單位

通用視圖(預設)

PID

進程ID。系統的唯一進程標識符。

-

S

進程狀態。R-運行中, S-可中斷睡眠, D-不可中斷睡眠, Z-殭屍, E-已退出。

-

CPU%

CPU使用率。

%

MEM%

記憶體使用量率。

%

THR

線程數。

PAG

主要缺頁錯誤。表示進程需要從磁碟讀取資料到記憶體的次數,是衡量磁碟I/O壓力的一個指標。

次/秒

CMD

命令名。進程的可執行檔名。按 c 鍵後會顯示完整命令列。

-

記憶體視圖

VSIZE

虛擬記憶體大小。進程向系統申請的虛擬位址空間總大小。

KiB/MiB/GiB

RSIZE

常駐記憶體大小。進程當前實際佔用實體記憶體的大小。

KiB/MiB/GiB

SHR

共用記憶體大小。

KiB/MiB/GiB

RGROW

常駐記憶體增長量。正數表示記憶體消耗在增加,負數表示在減少。

KiB

VGROW

虛擬記憶體增長量。

KiB

磁碟視圖

DSK%

磁碟活動百分比。進程產生的磁碟I/O繁忙時間佔總磁碟繁忙時間的百分比。

%

RDDSK/WRDSK

讀取/寫入的磁碟資料。

KiB/MB

WCANCL

取消的寫入量。進程寫入頁面緩衝後,在資料被同步到磁碟前又被刪除的資料量。

KiB/MB

網路視圖

NET%

網路活動百分比。進程產生的網路流量占所有進程總流量的百分比。

%

TCPSND/TCPRCV

TCP發送/接收量。

KiB/MB

UDPSND/UDPRCV

UDP發送/接收量。

KiB/MB

應用於生產環境

  • 磁碟空間規劃atop日誌大小與採集頻率、系統進程數和保留天數正相關。通過ls -lh /var/log/atop/命令觀察單個記錄檔的大小,然後乘以LOGGENERATIONS的值來估算總空間需求。

  • 監控間隔:對於需要更細粒度分析的情境,可將預設配置LOGINTERVAL調整為30秒。但請注意,縮短間隔會增加磁碟 I/O 和 atop 進程的 CPU 開銷,請根據執行個體負載合理配置。

常見問題

  1. 執行 atop -r 時提示 stat raw file: No such file or directory,是什麼原因?

    這個錯誤表示atop找不到指定日期的記錄檔。可能的原因有:

    1. 指定的日期atop服務並未運行。

    2. 記錄檔因輪轉策略已被刪除(超過了LOGGENERATIONS設定的保留數量)。

    3. 查詢的是未來的日期。

      請檢查/var/log/atop目錄下實際存在的記錄檔列表。

  2. 如何減少atop佔用的磁碟空間?

    可通過修改配置減少磁碟空間佔用,修改配置後,需重啟atop服務:

    1. 減少日誌保留天數:在設定檔中調低LOGGENERATIONS的值,例如從28改為14

    2. 降低採集頻率:在設定檔中調高LOGINTERVAL的值,例如從600改為1200

  3. 為什麼在 atop 互動介面按 n 鍵看不到按進程統計的網路流量?

    atop預設不包含按進程統計網路流量的功能。要啟用此功能,需要額外安裝並載入netatop核心模組。

    1. 安裝核心開發包及編譯所需軟體環境。

      sudo yum install -y kernel-devel dkms elfutils-libelf-devel
    2. 下載netatop源碼至指定目錄。

      cd /usr/src/ && sudo wget https://www.atoptool.nl/download/netatop-3.2.2.tar.gz
    3. 解壓源碼並進入源碼目錄。

      sudo tar -zxvf netatop-3.2.2.tar.gz && cd netatop-3.2.2
    4. 基於源碼構建並安裝模組和精靈。

      sudo make && sudo make install
    5. 啟動netatop服務。

      sudo systemctl start netatop
    6. 驗證netatop是否安裝成功。

      執行atop進入互動操作介面,按n鍵查看,若進程詳情列表中包含NET列,表示安裝成功。

      image