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
iostat(以前の記事に追加) と mpstat » code.zobe.jp
2012/06/19 at 18:23 (UTC 9) Link to this comment
[…] iostatについてのトピックを以前に書きましたが、インフラエンジニアのつぶやき さんのところにある iostatのおすすめの使い方と見方 が大変わかりやすいです。 […]
hdd diskの詳細調査
2014/04/22 at 11:46 (UTC 9) Link to this comment
[…] http://code.zobe.jp/2012/02/disk_load_check_with_iostat/ […]