SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

性能改善ノウハウを現場から直送! NTTデータのよりぬき『週刊まかせいのう』

Linux OSリソースのパフォーマンス分析(1) ~ OSリソースを取得してみよう

性能改善ノウハウを現場から直送! NTTデータのよりぬき『週刊まかせいのう』 第5回


OSリソースを取得してみよう(続き)

vmstat - メモリの情報が得られる点で重要なコマンド

実行コマンド

vmstat 10 | awk '{print(strftime("%Y/%m/%d %H:%M:%S"),$0);fflush();}'

実行結果テキスト表示

2015/10/26 13:13:57 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
2015/10/26 13:13:57  r  b   swpd   free  buff  cache    si   so    bi    bo   in   cs us sy id wa st
2015/10/26 13:13:57  1  0   3084 109320 124712 628832    0    0     0    28    0    0  0  0 100  0  0
2015/10/26 13:14:07  0  0   3084 108948 124712 629000    0    0     0   100  112  113  0  0 100  0  0
2015/10/26 13:14:17  0  0   3084 108940 124696 628976    0    0     0   108  111  113  0  0 100  0  0
2015/10/26 13:14:27  1  0   3084 109072 124712 629000    0    0     0   102   95  113  0  0 100  0  0

vmstatはCPU、メモリ、ストレージなど幅広い情報を薄く広く出すコマンドです。CPUやストレージの情報は粒度が粗いため利用しませんが、メモリの情報が得られる点が重要です。 ただし、メモリ情報はvmstatだけでは不足することがあるため、/proc/meminfoの情報も必要になります。

/proc/meminfoを参照

while [ 1 ]
  do
     cat /proc/meminfo|awk '{print(strftime("%Y/%m/%d %H:%M:%S"),$0);fflush();}' 
     sleep 10
  done

実行結果

2015/10/26 15:08:59 MemTotal:        1011932 kB
2015/10/26 15:08:59 MemFree:          108196 kB
2015/10/26 15:08:59 Buffers:          177340 kB
2015/10/26 15:08:59 Cached:           516408 kB
2015/10/26 15:08:59 SwapCached:          332 kB
2015/10/26 15:08:59 Active:           629792 kB
2015/10/26 15:08:59 Inactive:         124720 kB
2015/10/26 15:08:59 Active(anon):      47732 kB
2015/10/26 15:08:59 Inactive(anon):    57004 kB
2015/10/26 15:08:59 Active(file):     582060 kB
2015/10/26 15:08:59 Inactive(file):    67716 kB
2015/10/26 15:08:59 Unevictable:           0 kB
2015/10/26 15:08:59 Mlocked:               0 kB
2015/10/26 15:08:59 SwapTotal:       2031608 kB
2015/10/26 15:08:59 SwapFree:        2028524 kB
2015/10/26 15:08:59 Dirty:                52 kB
2015/10/26 15:08:59 Writeback:             0 kB
2015/10/26 15:08:59 AnonPages:         60552 kB
2015/10/26 15:08:59 Mapped:            50252 kB
2015/10/26 15:08:59 Shmem:             43972 kB
2015/10/26 15:08:59 Slab:             118652 kB
2015/10/26 15:08:59 SReclaimable:      90064 kB
2015/10/26 15:08:59 SUnreclaim:        28588 kB
2015/10/26 15:08:59 KernelStack:        2440 kB
2015/10/26 15:08:59 PageTables:         6860 kB
2015/10/26 15:08:59 NFS_Unstable:          0 kB
2015/10/26 15:08:59 Bounce:                0 kB
2015/10/26 15:08:59 WritebackTmp:          0 kB
2015/10/26 15:08:59 CommitLimit:     2537572 kB
2015/10/26 15:08:59 Committed_AS:    1084120 kB
2015/10/26 15:08:59 VmallocTotal:   34359738367 kB
2015/10/26 15:08:59 VmallocUsed:      342908 kB
2015/10/26 15:08:59 VmallocChunk:   34359380056 kB
2015/10/26 15:08:59 HardwareCorrupted:     0 kB
2015/10/26 15:08:59 AnonHugePages:     30720 kB
2015/10/26 15:08:59 HugePages_Total:       0
2015/10/26 15:08:59 HugePages_Free:        0
2015/10/26 15:08:59 HugePages_Rsvd:        0
2015/10/26 15:08:59 HugePages_Surp:        0
2015/10/26 15:08:59 Hugepagesize:       2048 kB
2015/10/26 15:08:59 DirectMap4k:        9920 kB
2015/10/26 15:08:59 DirectMap2M:     1030144 kB

iostat - ストレージの読み書きや待機キューなどの情報を出力

実行コマンド

iostat -d  -mx 10 | awk '{print(strftime("%Y/%m/%d %H:%M:%S"),$0);fflush();}'

実行結果テキスト表示

2015/10/26 13:15:43 Linux 2.6.32-358.el6.x86_64 (localhost.localdomain)         2015年10月26日  _x86_64_        (2 CPU)
2015/10/26 13:15:43
2015/10/26 13:15:43 Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
2015/10/26 13:15:43 sda               0.00    13.55    0.00    0.67     0.00     0.06   167.51     0.01   11.82  10.08   0.68
2015/10/26 13:15:43 dm-0              0.00     0.00    0.00   14.14     0.00     0.06     8.00     0.13    9.38   0.48   0.68
2015/10/26 13:15:43 dm-1              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00   20.05   1.89   0.00
2015/10/26 13:15:43 dm-2              0.00     0.00    0.00    0.00     0.00     0.00     8.04     0.00 1056.13   0.49   0.00
2015/10/26 13:15:43
2015/10/26 13:15:53 Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
2015/10/26 13:15:53 sda               0.00    24.10    0.00    0.50     0.00     0.10   392.00     0.00    8.00   8.00   0.40
2015/10/26 13:15:53 dm-0              0.00     0.00    0.00   24.50     0.00     0.10     8.00     0.15    6.14   0.16   0.40
2015/10/26 13:15:53 dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
2015/10/26 13:15:53 dm-2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
2015/10/26 13:15:53

iostatは、ストレージに対する読み込み/書き込みのスループットや、待機キューの状態などの情報を出力します。こちらもデバイスごとに情報が出力されるため、一度の実行でも出力が複数行になります。

sar - ネットワーク入出力の転送量などを出力

実行コマンド

sar -n DEV 10 | awk '{print(strftime("%Y/%m/%d %H:%M:%S"),$0);fflush();}'

実行結果テキスト表示

2015/10/26 13:16:57 Linux 2.6.32-358.el6.x86_64 (localhost.localdomain)         2015年10月26日  _x86_64_        (2 CPU)
2015/10/26 13:17:07
2015/10/26 13:17:07 13時16分57秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
2015/10/26 13:17:07 13時17分07秒        lo      0.60      0.60      0.19      0.19      0.00      0.00      0.00
2015/10/26 13:17:07 13時17分07秒      eth0      1.30      0.80      0.11      0.10      0.00      0.00      0.00
2015/10/26 13:17:07 13時17分07秒     wlan0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
2015/10/26 13:17:17
2015/10/26 13:17:17 13時17分07秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
2015/10/26 13:17:17 13時17分17秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
2015/10/26 13:17:17 13時17分17秒      eth0      0.60      0.10      0.09      0.06      0.00      0.00      0.00
2015/10/26 13:17:17 13時17分17秒     wlan0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

ネットワークの情報もインタフェースごとに出力されるため、一度の実行で複数行が出力されます。入出力の転送量が主な情報です。

ここで紹介したどのコマンドも10秒間隔で情報を出力し、[Ctrl-C]キーを押す(ブレイクする)まで出力を続けます[4]。 また、どのコマンドも非常に多くの情報が出力されています。これらの出力結果をもとにした解析方法については、次回で解説していきたいと思います。

[4]: 引数を追加して、出力回数を制限することもできます。

次のページ
OSリソース情報を取得するときの注意点

この記事は参考になりましたか?

性能改善ノウハウを現場から直送! NTTデータのよりぬき『週刊まかせいのう』連載記事一覧

もっと読む

この記事の著者

若山 勝吾(株式会社NTTデータ 「まかせいのう」チーム)(ワカヤマ ショウゴ)

NTTデータの性能プロフェッショナルチーム「まかせいのう」の古参メンバ。12年前、大規模プロジェクトの性能課題に直面し、満身創痍になる日々を経験する。からくも性能改善できたときの喜びをきっかけに、現場の教訓とともに性能の道を歩むことを決意する。今では、50を超えるプロジェクトにて、お客様とともに性能...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9067 2016/02/24 02:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー