Linuxでは、sysstatユーティリティによってサイジングに必要な情報を網羅的に取得することができます。RHEL5であれば、以下のようにyumコマンドで簡単にインストールすることができます。
# yum install sysstat -y
sysstatユーティリティには、sar、iostat、mpstatなどいくつかのコマンドラインインターフェイスが含まれます。これらのツールを用いて前述の4つのハードウェアリソースの使用状況を確認します。
都合の良いことに、sysstatユーティリティをインストールすると、ハードウェアリソース状況を取得する処理が自動的にcronタスクとして登録され、10分間隔でデータを記録してくれます。このデータはバイナリ形式で、/var/log/sa/以下に「saxx」という名称で日ごとに保存されています。
このデータを読み出すには、sarコマンドを用います。以降ではこのsarコマンドを用いて、各種ハードウェアリソース状況を確認する手段を述べます。
■CPU使用率
CPU使用率データの表示は、sarコマンドのデフォルトオプションです。つまり何もオプションを指定しないでsarコマンドを実行すると、同日中のCPU使用率のデータが時系列表示され、最終行に平均値が表示されます。
# sar 11:00:01 PM CPU %user %nice %system %iowait %steal %idle 11:10:01 PM all 0.09 0.00 0.07 0.00 0.01 99.83 11:20:01 PM all 2.13 0.00 6.64 0.07 0.34 90.82 11:30:01 PM all 0.60 0.00 2.42 0.00 0.01 96.96 11:40:01 PM all 0.59 0.00 2.43 0.00 0.01 96.97 11:50:01 PM all 0.53 0.00 2.42 0.00 0.02 97.04 (途中省略) Average: all 0.51 0.00 0.46 79.91 0.12 19.00
別の日のデータを表示させたい場合には、/var/log/sa/以下のsaxxファイルを-fオプションで指定することによって、任意の日付のデータを表示することができます。
# sar -f /var/log/sa/sa17 (出力結果は省略)
この出力結果で重要なのは、%user列と%system列です。この2つの値の合計が一般的なCPU使用率となります。以下のコマンドでCPU使用率の平均値を取得できます。
# sar | grep Average | awk '{ print $3+$5"%" }' 0.97%
■メモリ使用量
メモリの利用状況は-rオプションで表示できます。
# sar -r 05:40:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad 10:20:01 AM 7565416 1105816 12.75 388496 146472 524156 124 0.02 16 10:30:01 AM 7558760 1112472 12.83 393316 146776 524156 124 0.02 16 10:40:01 AM 7550620 1120612 12.92 399068 146912 524156 124 0.02 16 (途中省略) Average: 5785 256359 97.79 1469 138471 0 0 0.00 0
この出力結果で重要なのはkbmemused列、kbbuffers列、kbcached列です。kbmemusedの値は、用途を問わずOSが確保していたメモリ量をキロバイト単位で示しています。kbbuffersとkbcachedは、その消費メモリ量の中でページキャッシュとして確保されていた容量をキロバイト単位で示しています。
Linux OSは、ファイルシステムのデータをできる限りページキャッシュに載せようとするので、OSをある程度の時間稼働させておくと、kbmemusedは物理メモリ量に近い値にまで上昇します。しかし、実際にカーネルやプロセス空間によって確保されている容量はここからkbbuffersとkbcachedを引いた値になります。以下のコマンドによって、この値の平均値をキロバイト単位で取得できます。
# sar -r | grep Average | awk '{ print $3-$5-$6"Kbyte" }' 116419Kbyte
上記の例では、システム稼働に最低限必要なメモリ量は約96Mbytesということになります。
ただし、Linux OSにおいてページキャッシュはシステムの動作を高速化させるのに重要な役割を果たしているため、メモリ割り当てがあまりに少ないと、全体的な性能が落ち込んでしまいます。一時的に大量のメモリを必要とするような特定のコンパイル処理などでは、正常に動作しなくなる可能性もあります。また、プロセス空間に確保されているメモリがスワップしてしまっているようでは、システムとして完全にメモリ不足に陥っているといえます。
従って必要メモリの算出においては、上記の値はあくまでも「最低限必要なメモリの指標」という認識にとどめておき、実際に仮想マシンに割り当てるメモリは、そのシステム上のアプリケーションの動作要件をターゲットとして考えるのがよいでしょう。
■ネットワーク帯域幅
ネットワーク帯域の利用状況は-nオプションで表示できます。ただし、このままではすべてのインターフェイスに関するデータが表示されますので、適宜、対象となるインターフェイス名をgrepで引っ掛けてください。
# sar -n DEV 12:40:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 12:50:01 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:50:01 AM eth0 6.02 0.00 944.60 0.14 0.00 0.00 0.00 12:50:01 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:00:02 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 01:00:02 AM eth0 4.79 0.00 835.48 0.07 0.00 0.00 0.00 01:00:02 AM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 (途中省略) Average: lo 712.27 712.27 245016.84 245016.84 0.00 0.00 0.00 Average: eth0 153.02 104.25 11788.12 211079.32 0.00 0.00 0.00 Average: sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
この出力結果で重要なのは、rxbyt列とtxbyt列です。これらはそれぞれ1秒間に「受信したデータ量」と「送信したデータ量」をバイト単位で示しています。以下のコマンドで対象となるインターフェイスのそれぞれの平均値をバイト単位で取得できます。
# sar -n DEV | grep eth0 | grep Average | awk '{ print "Rx:"$5"byte/s\nTx:"$6"byte/s" }' Rx:11788.12byte/s Tx:211079.32byte/s
■ディスク帯域幅
ディスク帯域幅は-bオプションで表示できます。
# sar -b 12:40:01 AM tps rtps wtps bread/s bwrtn/s 12:50:01 AM 0.11 0.00 0.11 0.00 1.32 01:00:02 AM 0.11 0.00 0.11 0.00 1.31 01:10:01 AM 0.14 0.01 0.13 0.16 1.50 01:20:01 AM 0.11 0.00 0.11 0.00 1.31 01:30:01 AM 0.11 0.00 0.11 0.00 1.31 01:40:01 AM 9.82 9.43 0.39 155.98 14.07 (途中省略) Average: 44.17 43.65 0.52 929.57 9.34
この出力結果で重要なのは、bread/s列とbwrtn/s列です。これらはそれぞれ秒間にディスクから「読み出したデータ量」と「書き込んだデータ量」をブロック単位で示しています。以下のコマンドでそれぞれの平均値をブロック単位で取得できます。
# sar -b | grep Average | awk '{ print "Read:"$5"block/s\nWrite:"$6"block/s" }' Read:929.57block/s Write:9.34block/s
ここまででサイジングに必要な情報の1つ目となる、移行対象となるサーバのハードウェアリソース利用状況を取得することができました。
Copyright © ITmedia, Inc. All Rights Reserved.