ウェブサイト検索

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)。

あなたはおそらくそれも好きでしょう:

  1. Linux パフォーマンスを監視するための 20 のコマンド ライン ツール – パート 1
  2. 13 Linux パフォーマンス監視ツール – パート 2
  3. Perf - Linux 用のパフォーマンス監視および分析ツール
  4. Nmon: Linux システムパフォーマンスの分析と監視

結論として、あなたがシステム管理者であれば、高い負荷平均は実際に心配する必要があります。 CPU コア数を超えて負荷平均値が高い場合は、CPU に対する需要が高いことを意味し、CPU コア数を下回る負荷平均値が低い場合は、CPU が十分に活用されていないことを示します。