萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 系統效能監控關鍵參數解析:CPU、記憶體、磁碟、網路資料來源與計算方式

1. CPU 使用率 — /proc/stat

每行格式:cpuN user nice system idle iowait ... (單位:jiffies,即核心嘀嗒數)。

範例:cpu0 256279030 0 11832528 1637168262

計算 1 秒間 CPU 負載:

# 讀取兩次間隔 1 秒
user_diff = user2 - user1
total_diff = (user+nice+sys+idle+iowait)_diff
%user = (user_diff * 100) / total_diff
# gkrellm 公式: ((200 * diff / HZ) + 1) / 2

HZ (CPU_TICKS_PER_SECOND) 通常為 100、250 或 1000,可用 getconf CLK_TCK 查詢。

2. 記憶體使用 — /proc/meminfo

關鍵欄位:

  • MemTotal、MemFree、MemAvailable (核心 3.14+ 可用記憶體估算)
  • Buffers、Cached:可回收快取
  • SwapTotal、SwapFree

實際可用記憶體 ≈ MemFree + Buffers + Cached (或直接用 MemAvailable)。

3. 磁碟空間 — statfs() 系統呼叫

避免解析 /proc/mounts, /proc/partitions, df 等不一致來源,直接呼叫:

struct statfs buf;
statfs("/mount/point", &buf);
總空間 = buf.f_bsize * buf.f_blocks
可用空間 = buf.f_bsize * buf.f_bavail

4. 磁碟 I/O — /proc/diskstats 或 /proc/partitions

欄位含義 (kernel 2.6+):major minor device reads reads_merged sectors_read ms_reading writes writes_merged sectors_written ms_writing io_in_progress ms_io ms_weighted。
採樣兩次取差值得每秒讀寫扇區數/請求數/等待時間。

5. 網路流量 — /proc/net/dev

每介面提供:Receive bytes packets errs drop ... Transmit bytes packets errs drop ...。
同樣採樣兩次取差值計算位元組/封包速率。

copyright © 萬盛學電腦網 all rights reserved