»

2月 07

iostatコマンドでディスクにかかっている負荷をモニタする

iostat というコマンドで、今ディスクにかかっている負荷を計測できるとのことで、試してみた。

CentOS 5.7 がインストールされている環境に、yumコマンドで iostat コマンドを導入した。そして無負荷時、一定負荷時、さらに負荷をかけた場合の、iostatコマンドの実行結果が得られた。ディスクのボリュームごとの、読み込みブロック数、書き込みブロック数が、リアルタイムに確認できた。

今回の対象OSは CentOS 5.7。yumコマンドでパッケージがあるか検索してみたところ、あった。コマンド名「iostat」で検索すると、それが含まれているパッケージ名が「sysstat」であると教えてくれた。

yumコマンドで検索:

[root@server ~]# yum search iostat
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
 * rpmforge: fr2.rpmfind.net
 * updates: ftp.jaist.ac.jp
Excluding Packages in global exclude list
Finished
101 packages excluded due to repository priority protections
=================================================== Matched: iostat ====================================================
dstat.noarch : Versatile resource statistics tool
ifstat.x86_64 : Interface statistics
kderadiostation.x86_64 : Tool which presents you a list of internet streaming radio stations
sysstat.x86_64 : システム監視コマンドの sar と iostat
yumコマンドでsysstatパッケージの内容を表示:
[root@server ~]# yum info sysstat
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
 * rpmforge: fr2.rpmfind.net
 * updates: ftp.jaist.ac.jp
Excluding Packages in global exclude list
Finished
101 packages excluded due to repository priority protections
Available Packages
Name       : sysstat
Arch       : x86_64
Version    : 7.0.2
Release    : 11.el5
Size       : 187 k
Repo       : base
Summary    : システム監視コマンドの sar と iostat
URL        : http://perso.orange.fr/sebastien.godard/
License    : GPL
Description: このパッケージは Linux 用の sar と iostat を提供します。sar と
           : iostat でディスク、ネットワーク、およびその他の I/O アクティビティを
           : システムとして監視できます。

そこでさっそくインストールしてみる。

[root@server ~]# yum install sysstat
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
 * rpmforge: fr2.rpmfind.net
 * updates: ftp.jaist.ac.jp
Excluding Packages in global exclude list
Finished
101 packages excluded due to repository priority protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sysstat.x86_64 0:7.0.2-11.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                     Arch                       Version                          Repository                Size
========================================================================================================================
Installing:
 sysstat                     x86_64                     7.0.2-11.el5                     base                     187 k

Transaction Summary
========================================================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 187 k
Is this ok [y/N]: y
Downloading Packages:
sysstat-7.0.2-11.el5.x86_64.rpm                                                                  | 187 kB     00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : sysstat                                                                                          1/1

Installed:
  sysstat.x86_64 0:7.0.2-11.el5

試しに動かしてみる。hda2を、1秒おきに100回計測。中断するにはCtrl-Cを押す。なお、環境によってデバイス名は異なるため、マネをする際はdfコマンドなどで、お手持ちの環境の計測対象デバイスを探していただきたい。

[root@server ~]# iostat -d /dev/hda2 1 100

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.24         6.52         3.43    8732298    4589104

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.99        15.84         0.00         16          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              2.94         0.00        54.90          0         56

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

負荷のないマシンならこのとおり。
ためしにWebサーバとして稼働しているマシンで計測してみると以下のようになった。

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3             28.00         0.00       312.00          0        312

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3             10.00         0.00      1376.00          0       1376

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3             28.71         0.00       950.50          0        960

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3             78.00         0.00      1840.00          0       1840

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3             41.00         0.00      1328.00          0       1328

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3             58.00         0.00       688.00          0        688

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda3             18.00         0.00       840.00          0        840

おそらくログファイルへの書き出しを行っているのか、低速ながら頻繁に Write を行っている様子がうかがえた。

意図的に負荷をかけてみるとどうなるか。
負荷のかかっていないマシンで、sshの窓をもうひとつ増やして、
負荷をかけるプログラムを同時に走らせてみた。

負荷をかける側でやったことは次の通り。

[root@server ~]# hdparm -ft /dev/hda2

/dev/hda2:
 Timing buffered disk reads:  650 MB in  3.00 seconds = 216.51 MB/sec

結果、やや遅れる形で次のように結果が得られた。

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              8.91         7.92       110.89          8        112

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2            800.00    102407.92         0.00     103432          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2           1675.49    225882.35         0.00     230400          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2           4810.89    768253.47         0.00     775936          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2           1181.00    172360.00         0.00     172360          0

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda2              0.00         0.00         0.00          0          0

負荷をかける側では確かに、読み込み、を行っているため、その通りに大きい負荷がかかっているところを確認することができた。

 

 

2 pings

  1. iostat(以前の記事に追加) と mpstat » code.zobe.jp

    […] iostatについてのトピックを以前に書きましたが、インフラエンジニアのつぶやき さんのところにある iostatのおすすめの使い方と見方 が大変わかりやすいです。 […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>