システムリソースの測定

稼働中のシステムが、どのようにリソースを使っているかを確認する方法のまとめ。
直近のシステム動向を確認し、将来に向けた対策を考える。 稼働状況表示
CommandPackageDescription
iostatsysstat端末やデバイス, CPU操作, カーネル I/O
iotopiotop稼働中のディスク I/O, SWAP の概要をリアルタイムで表示
sadfsysstatシステム統計レポートを様々な形式で出力(JSON,XMLなど)
sarsysstat指定したカウンタのシステム統計レポートの表示
topprocps-ng稼働中システムのリアルタイム概要, タスク一覧表示
uptimeprocps-ng稼働時間、ログイン状況、平均負荷の表示
vmstatprocps-ngプロセス, メモリ, ブロック I/O, CPU 稼働状況表示
wprocps-ngログイン状況詳細表示

iostat

$ iostat 2 4
Linux 3.10.0-1160.31.1.el7.x86_64 (cent79)	06/28/21	_x86_64_	(1 CPU)

avg-cpu:  %user	  %nice %system %iowait	 %steal	  %idle
	   0.68	   0.00	  99.32	   0.00	   0.00	   0.00

Device:		   tps	  kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda	       1586.30	       0.00    803111.64	  0    1172543
dm-0	       1586.30	       0.00    803121.92	  0    1172558
dm-1		  0.00	       0.00	    0.00	  0	     0
		:

iotop

画面上部に読込・書込の帯域幅を表示、ラベルについては以下。
itemDescription
TIDThread ID:PIDと読み替えても問題ない
PRIO優先度 (class/level)
USERユーザ名
DISK READ読込速度
DISK WRITE書込速度
SWAP INSWAP IN の時間
IO>I/Oの消費時間
COMMANDコマンドライン
ubuntuの例 --------

sadf

sarで収集したデータを複数のフォーマット (CSV, XML, JSON, etc.) で表示。
# sadf 
cent79	-1	2021-06-28 02:25:20 UTC	LINUX-RESTART
cent79	598	2021-06-28 02:40:01 UTC	all	%user	0.10
cent79	598	2021-06-28 02:40:01 UTC	all	%nice	0.00
cent79	598	2021-06-28 02:40:01 UTC	all	%system	0.17
cent79	598	2021-06-28 02:40:01 UTC	all	%iowait	0.02
		:

sar

システム稼働情報の収集、レポート、保存を行う。
$ sar
Linux 3.10.0-1160.11.1.el7.x86_64 (cent79) 	2021年01月25日 	_x86_64_	(1 CPU)

00時00分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
00時10分01秒     all      0.01      0.00      0.08      0.01      0.00     99.90
00時20分01秒     all      0.01      0.00      0.07      0.01      0.00     99.90
01時00分01秒     all      0.01      0.00      0.07      0.01      0.00     99.91
		: 

uptime

uptime(1) は、システムが何時起動し、現在まで何時間稼働しているか、直近の一定期間の負荷状況(1分、5分、15分)を表示する。
この10分間程度で負荷増加減のトレンドを把握する指針(負荷が高くなる方向なのか、低くなるのか)。

$ uptime
 12:17:19 up 22:56,  2 users,  load average: 0.05, 0.04, 0.05
xloadは、このデータをグラフ化する。

vmstat

ラベルのフルスペルと、備考
ClassLabelComment
procsr: Running実行中プロセス(CPU割当中)
b: Blocked入出力まち
swapsi: Swap inSWAP からページをメモリに回復
so: Swap outページをSWAPへ退避
iobi: Block inブロック書込み
bo: Block outブロック読込
systemin: Interupt 秒あたり割り込み発生回数
cs: Context switch秒あたりコンテキストスイッチ回数
cpuus: User areaユーザ領域での活動割合
sy: System areaOS領域での活動割合
id: Idle休眠割合
wa: Wait待ち時間割合
st: StolenHyperviser 処理割合
ページ : 仮想記憶で扱う基本単位(4KB)
  • swap(si/so)が多いという事は実メモリ容量不足である。
  • io(si/so)が多い場合、メモリ増強により改善される可能性がある。(cache/buffer)
  • system(in)が多い場合はハードウエア障害・低性能の可能性がある。
  • system(cs)が多い場合はプロセス数が多いという事になる。
  • cpu(us)が多い場合はアプリケーションの設計に依存している。
  • cpu% のは100% を超えることはないが、 uptime(1) はジョブ数なので 1.0 を超える事がある。
    ( 4 core CPU であれば、ジョブ数 4 で cpu 100% となる。)

w

1行目は uptime と同じ。
$ w
 13:01:41 up  1:45,  2 users,  load average: 0.00, 0.01, 0.28
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
student  tty1                      11:16    1:43m  0.02s  0.02s -bash
student  pts/1    192.168.56.1     11:18    5.00s  0.02s  0.00s w
参考資料
ハードウエア情報を表示する
Enterprise Linux システムリソース管理パフォーマンス管理とチューニング