Linux の負荷平均を理解し、Linux のパフォーマンスを監視する
この記事では、Linux システム管理の重要なタスクの 1 つである、システム/CPU の負荷と平均負荷に関するパフォーマンスの監視について説明します。
先に進む前に、すべての Unix 系システムにおける次の 2 つの重要なフレーズを理解しましょう。
- システム負荷/CPU 負荷 – Linux システムにおける CPU の過剰使用または過小使用の測定値です。 CPUによって実行中または待機状態にあるプロセスの数。
- 負荷平均 – 1 分、5 分、15 分の一定期間にわたって計算された平均システム負荷です。
Linux では、負荷平均は、実行中または中断不可としてタグ付けされた (カーネル) 実行キュー内のプロセスの実行平均であると技術的に考えられています。
次の点に注意してください:
- Linux またはその他の Unix 系システムを搭載したほとんどのシステムではないにせよ、すべてのシステムでユーザーのどこかに負荷平均値が表示される可能性があります。
- 完全にアイドル状態の Linux システムでは、アイドル状態のプロセスを除いて、負荷平均がゼロになることがあります。
- ほぼすべての Unix 系システムは、実行状態または待機状態のプロセスのみをカウントします。しかし、これは Linux の場合には当てはまりません。Linux には、中断できないスリープ状態のプロセスが含まれます。ディスク I/O などの他のシステム リソースを待機しているもの。
Linux システム負荷平均を監視する方法
システムの稼働時間を示すアップタイム、ユーザー数と負荷平均など、システム負荷平均を監視する方法は数多くあります。
uptime
07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
数値は左から右に読み取られ、上記の出力は次のことを意味します。
- 過去 1 分間の負荷平均は 1.98 です。
- 過去 5 分間の負荷平均は 2.15 です。
- 過去 15 分間の負荷平均は 2.21 です。
平均負荷が高いということは、システムが過負荷になっていることを意味します。多くのプロセスが CPU 時間を待っています。
これについては、CPU コアの数に関連して次のセクションで説明します。さらに、実行中の Linux システムのリアルタイム状態を表示する top や Glanses などのよく知られたツールや、その他の多くのツールも使用できます。
トップコマンド
top
top - 12:51:42 up 2:11, 1 user, load average: 1.22, 1.12, 1.26
Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.4 us, 2.9 sy, 0.3 ni, 74.8 id, 4.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8069036 total, 388060 free, 4381184 used, 3299792 buff/cache
KiB Swap: 3906556 total, 3901876 free, 4680 used. 2807464 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6265 tecmint 20 0 1244348 170680 83616 S 13.3 2.1 6:47.72 Headset
2301 tecmint 9 -11 640332 13344 9932 S 6.7 0.2 2:18.96 pulseaudio
2459 tecmint 20 0 1707692 315628 62992 S 6.7 3.9 6:55.45 cinnamon
2957 tecmint 20 0 2644644 1.035g 137968 S 6.7 13.5 50:11.13 firefox
3208 tecmint 20 0 507060 52136 33152 S 6.7 0.6 0:04.34 gnome-terminal-
3272 tecmint 20 0 1521380 391324 178348 S 6.7 4.8 6:21.01 chrome
6220 tecmint 20 0 1595392 106964 76836 S 6.7 1.3 3:31.94 Headset
1 root 20 0 120056 6204 3964 S 0.0 0.1 0:01.83 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
....
視線ツール
glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic) Uptime: 2:16:06
CPU 16.4% nice: 0.1% LOAD 4-core MEM 60.5% active: 4.90G SWAP 0.1%
user: 10.2% irq: 0.0% 1 min: 1.20 total: 7.70G inactive: 2.07G total: 3.73G
system: 3.4% iowait: 2.7% 5 min: 1.16 used: 4.66G buffers: 242M used: 4.57M
idle: 83.6% steal: 0.0% 15 min: 1.24 free: 3.04G cached: 2.58G free: 3.72G
NETWORK Rx/s Tx/s TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0 525Kb 31Kb
lo 2Kb 2Kb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command
wlp2s0 0b 0b 14.6 13.3 2.53G 1.03G 2957 tecmint 0 S 51:49.10 0 40K /usr/lib/firefox/firefox
7.4 2.2 1.16G 176M 6265 tecmint 0 S 7:08.18 0 0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O R/s W/s 4.9 3.9 1.63G 310M 2459 tecmint 0 R 7:12.18 0 0 cinnamon --replace
ram0 0 0 4.2 0.2 625M 13.0M 2301 tecmint -11 S 2:29.72 0 0 /usr/bin/pulseaudio --start --log-target=syslog
ram1 0 0 4.2 1.3 1.52G 105M 6220 tecmint 0 S 3:42.64 0 0 /usr/lib/Headset/Headset
ram10 0 0 2.9 0.8 409M 66.7M 6240 tecmint 0 S 2:40.44 0 0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11 0 0 2.9 1.8 531M 142M 1690 root 0 S 6:03.79 0 0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12 0 0 2.6 0.3 79.3M 23.8M 9651 tecmint 0 R 0:00.71 0 0 /usr/bin/python3 /usr/bin/glances
ram13 0 0 1.6 4.8 1.45G 382M 3272 tecmint 0 S 6:25.30 0 4K /opt/google/chrome/chrome
...
これらのツールによって表示される負荷平均は、/proc/loadavg ファイルに読み込まれます。このファイルは、次のように cat コマンドを使用して表示できます。
cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
負荷平均をグラフ形式で監視するには、次をチェックしてください: ttyload – ターミナルで Linux 負荷平均の色分けされたグラフを表示します
デスクトップ マシンには、システム負荷平均を表示するために使用できるグラフィカル ユーザー インターフェイス ツールがあります。
CPU 数との関係におけるシステム平均負荷の理解
CPU コアの数がパフォーマンスに及ぼす影響を明らかにすることなく、システム負荷やシステム パフォーマンスを説明することはできません。
マルチプロセッサ対マルチコア
- マルチプロセッサ – 2 つ以上の物理 CPU が 1 つのコンピュータ システムに統合されているものです。
- マルチコア プロセッサ – 並列で動作する少なくとも 2 つ以上の個別のコア (または処理ユニットとも呼ばれます) を備えた単一の物理 CPU です。つまり、デュアルコアには 2 つのプロセッシング ユニットが 2 つあり、クアッドコアには 4 つのプロセッシング ユニットがあるというようになります。
さらに、並列コンピューティングを向上させるために Intel が初めて導入した、ハイパー スレッディングと呼ばれるプロセッサ テクノロジもあります。
ハイパー スレッディングでは、オペレーティング システムでは 1 つの物理 CPU コアが 2 つの論理 CPU コアのように見えます (ただし、実際には物理ハードウェア コンポーネントは 1 つです)。
単一の CPU コアは一度に 1 つのタスクしか実行できないため、複数の CPU/プロセッサ、マルチコア CPU、ハイパー スレッディングなどのテクノロジが実現されました。
複数の CPU を使用すると、複数のプログラムを同時に実行できます。現在の Intel CPU は、マルチコアとハイパースレッディング テクノロジーの両方を組み合わせて使用しています。
システムで使用可能な処理ユニットの数を確認するには、次のように nproc または lscpu コマンドを使用します。
nproc
4
OR
lscpu
次に示すように grep コマンドを使用して処理ユニットの数を確認する別の方法。
grep 'model name' /proc/cpuinfo | wc -l
4
ここで、システム負荷をさらに理解するために、いくつかの仮定を立てます。以下の負荷平均があるとします。
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
単一コア システムでは、これは次のことを意味します。
- CPU は平均して完全 (100%) 使用されていました。過去 1 分間に 1 つのプロセスが CPU (1.00) 上で実行されていました。
- CPU は平均 60% アイドル状態でした。過去 5 分間に CPU 時間 (0.40) を待機しているプロセスはありませんでした。
- CPU は平均 235% の過負荷になりました。過去 15 分間に 2.35 のプロセスが CPU 時間 (3.35) を待機していました。
デュアルコア システムでは、これは次のことを意味します。
- 1 つの CPU は平均 100% アイドル状態で、1 つの CPU が使用されていました。過去 1 分間に CPU 時間 (1.00) を待機しているプロセスはありませんでした。
- CPU は平均 160% アイドル状態でした。 CPU 時間を待っているプロセスはありませんでした。過去 5 分間で (0.40)。
- CPU は平均 135% の過負荷になりました。 1.35 プロセスが CPU 時間を待機していました。最後の 15 分間で (3.35)。
あなたはおそらくそれも好きでしょう:
- Linux パフォーマンスを監視するための 20 のコマンド ライン ツール – パート 1
- 13 Linux パフォーマンス監視ツール – パート 2
- Perf - Linux 用のパフォーマンス監視および分析ツール
- Nmon: Linux システムパフォーマンスの分析と監視
結論として、あなたがシステム管理者であれば、高い負荷平均は実際に心配する必要があります。 CPU コア数を超えて負荷平均値が高い場合は、CPU に対する需要が高いことを意味し、CPU コア数を下回る負荷平均値が低い場合は、CPU が十分に活用されていないことを示します。