Linux

sysstat sar 只收集 cpu 使用情況

  • December 29, 2020

sar使用收集實時系統統計資訊時遇到問題。當我執行如下 sar 命令時,我得到了正確的輸出:

$ sar -r 1 -o /tmp/memory_usage
Linux 4.15.0-70-generic ()  29/12/20    _x86_64_    (60 CPU)

18:26:55    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
18:26:56     30855140  78554416  51599624     62.58    321400  48906356   3491612      4.18  25558204  23859156        36
18:26:57     30855124  78554456  51599640     62.58    321400  48906392   3491612      4.18  25558204  23859212        72
18:26:58     30855204  78554536  51599560     62.58    321400  48906424   3491612      4.18  25558204  23859212       104
18:26:59     30855188  78554576  51599576     62.58    321400  48906456   3491612      4.18  25558204  23859268       136
18:27:00     30855204  78554648  51599560     62.58    321400  48906492   3491612      4.18  25558204  23859324       172
18:27:01     30855048  78554492  51599716     62.58    321400  48906524   3491612      4.18  25558228  23859324         0
^C
Average:     30855151  78554521  51599613     62.58    321400  48906441   3491612      4.18  25558208  23859249        87

但是,當我載入輸出文件時,似乎只記錄了cpu使用情況?

$ sar -f /tmp/memory_usage
Linux 4.15.0-70-generic ()  29/12/20    _x86_64_    (60 CPU)

18:26:55        CPU     %user     %nice   %system   %iowait    %steal     %idle
18:26:56        all      0.00      0.00      0.02      0.00      0.02     99.97
18:26:57        all      0.00      0.00      0.02      0.00      0.02     99.97
18:26:58        all      0.00      0.00      0.02      0.00      0.02     99.97
18:26:59        all      0.00      0.00      0.02      0.00      0.02     99.97
18:27:00        all      0.00      0.00      0.00      0.00      0.00    100.00
18:27:01        all      0.02      0.00      0.02      0.00      0.02     99.95
Average:        all      0.00      0.00      0.01      0.00      0.01     99.97

這是我的系統資訊:

$ uname -a
Linux 4.15.0-70-generic #79-Ubuntu SMP Tue Nov 12 10:36:11 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

我正在執行通過 apt 安裝的 sar 11.6.1,雖然我啟用了 sysstat 服務,但我沒有配置任何 cron 數據收集(如果有的話):

$ systemctl status sysstat
● sysstat.service - Resets System Activity Data Collector
  Loaded: loaded (/lib/systemd/system/sysstat.service; enabled; vendor preset: enabled)
  Active: active (exited) since Tue 2020-12-29 16:56:29 GMT; 1h 34min ago
    Docs: man:sa1(8)
          man:sadc(8)
          man:sar(1)
 Process: 52376 ExecStart=/usr/lib/sysstat/debian-sa1 --boot (code=exited, status=0/SUCCESS)
Main PID: 52376 (code=exited, status=0/SUCCESS)

Dec 29 16:56:29  systemd[1]: Starting Resets System Activity Data Collector...
Dec 29 16:56:29  systemd[1]: Started Resets System Activity Data Collector.

知道我做錯了什麼嗎?為什麼文件中沒有記錄記憶體使用情況?我是否配置錯誤,或者這是不可能實現的sar?任何和所有的幫助將不勝感激。

我是白痴,找到答案了。顯然,當您告訴sar將系統統計資訊收集到文件中時,它會將所有內容輸出到文件中,而不僅僅是您傳遞的選項。

因此,該命令sar -r 1 -o /tmp/memory_usage的真正含義是:“以每秒一個的採樣率擷取所有選項,並將它們記錄在給定的文件中。此外,以相同的速率將記憶體統計資訊輸出到終端”。

由於所有統計資訊都記錄在輸出文件中,因此可以使用與實時相同的選項進行查詢。正如我所料,該命令sar -r -f /tmp/memory_usage輸出從文件中收集的記憶體使用情況。

引用自:https://unix.stackexchange.com/questions/626682