この記事では、システム/CPU負荷と負荷平均に関する重要なLinuxシステム管理タスクの1つであるパフォーマンスモニタリングについて説明します。
さらに進む前に、すべてのUnix系システムでこれら2つの重要なフレーズを理解しましょう:
- システム負荷/CPU負荷 – LinuxシステムにおけるCPUの過剰または過少利用の測定;CPUによって実行されているプロセスの数または待機状態にあるプロセスの数。
- 負荷平均 – 1分、5分、15分の期間にわたる平均システム負荷。
Linuxでは、負荷平均は、実行中または割り込み不可能な状態としてタグ付けされたプロセスの実行キュー内のプロセスの実行平均とされています。
注意:
- Linuxや他のUnix系システムで動作しているほとんどのシステムは、ユーザーに負荷平均値をどこかで表示する可能性があります。
- A downright idle Linux system may have a load average of zero, excluding the idle process.
- ほとんどのUnix系システムは、実行中または待機状態のプロセスのみをカウントします。しかし、Linuxでは、割り込み不可能なスリープ状態のプロセスも含まれており、他のシステムリソース(ディスクI/Oなど)を待っています。
Linuxシステム負荷平均のモニタリング方法
システム負荷平均を監視する方法には、システムが稼働している時間やユーザー数と負荷平均を表示するuptimeなどが含まれます:
$ 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コア数に関連してこれを明らかにします。さらに、topやglancesなどの他のよく知られたツールを使用することもできます。これらは実行中のLinuxシステムのリアルタイム状態を表示します:
Topコマンド
$ 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ツール
$ 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つの処理ユニットを持ち、クアッドコアは4つの処理ユニットを持つということです。
さらに、インテルが最初に導入した並列コンピューティングを改善するためのプロセッサ技術であるハイパースレッディングもあります。
ハイパースレッディングでは、1つの物理CPUコアがオペレーティングシステムに対して2つの論理CPUコアとして表示されます(しかし実際には1つの物理ハードウェアコンポーネントがあります)。
1つのCPUコアは一度に1つのタスクしか実行できないため、複数のCPU/プロセッサ、マルチコアCPU、ハイパースレッディングなどの技術が生まれました。
複数のCPUがあると、複数のプログラムを同時に実行できます。現在のインテル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%)利用されていました。CPU上で1つのプロセスが実行されていました(1.00)、過去1分間。
- CPUは平均して60%アイドル状態でした。CPU時間を待っているプロセスはありませんでした(0.40)、過去5分間。
- CPUは平均して235%過負荷状態でした。CPU時間を待っているプロセスが2.35個いました(3.35)、過去15分間。
デュアルコアシステムの場合、これは次のようになります:
- 1つのCPUは平均して100%アイドル状態で、1つのCPUが使用されていました。CPU時間を待っているプロセスはありませんでした(1.00)、過去1分間。
- CPUは平均して160%アイドル状態でした。CPU時間を待っているプロセスはありませんでした(0.40)、過去5分間。
- CPUは平均して135%過負荷状態でした。CPU時間を待っているプロセスが1.35個いました(3.35)、過去15分間。
次のようなものもお勧めです:
- Linuxパフォーマンスを監視するための20のコマンドラインツール – パート1
- Linuxパフォーマンス監視ツール13選 – パート2
- Linux用のパフォーマンスモニタリングおよび分析ツール、Perf
- Nmon: Linuxシステムパフォーマンスの分析とモニタリング
結論として、システム管理者である場合、高い負荷平均値は本当に心配すべきです。高い場合、CPUコア数を超えると、CPUへの需要が高いことを示し、CPUコア数を下回る低い負荷平均値は、CPUが過小利用されていることを示します。
Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/