テクニカルコラム かんたん♪ZFS
第九回:システムモニタ(2010年7月29日発行)

  こんにちは。暑い日が続きますが、みなさんいかがお過ごしでしょうか。
  このコラムでは実際に ZFS を使う上で役に立つ Tips を紹介します。

  今までのファイルシステムとは一味違う ZFS  を活用して面倒なファイル
  管理の苦労を減らしましょう!

 -------------------------------------------------------------------

  どんなに便利なファイルシステムでも、読み書きが遅いといった不満があ
  ると採用できません。

  そこで、ZFS のパフォーマンス改善方法について、何回かに分けて紹介し
  ます。今回はシステムのモニタ方法です。

  A chain is only as strong as its weakest link. (鎖全体の強さはその
  鎖の中で最も弱い環の強さにしかならない) という原則があります。あた
  りまえのことのように思えますが、多くの物事にあてはまる原則です。

  ストレージシステムのパフォーマンスにも、この「最も弱い環の原則」を
  あてはめることができます。例えば SSD を使用していても、 ネットワー
  クが 100 Mbps の転送能力しかないと、サービスがその速度で頭打ちにな
  ります。一カ所でも弱い部分があると、全体のパフォーマンスがそのレベ
  ルに引き下げられてしまうのです。

  パフォーマンス改善を行う時、負荷に対して処理能力を持て余している部
  分を補強してもほとんど改善は望めません。一方、処理能力を目一杯使っ
  ている部分を補強すると、大きな改善を期待することができます。

  パフォーマンスを改善するには、処理状況をモニタし、システムの最も弱
  い部分を発見するのが、最初の一歩となります。このモニタは、実際に改
  善したい処理状況 (高負荷) の時に実施します。


  1.  iostat
      iostat はディスク毎の I/O 統計情報を表示します。このコマンドに
      より物理ディスク毎のパフォーマンスを把握することができます。

      $ iostat -xn 1
                        extended device statistics
        r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
        0.1    0.0    0.7    0.0  0.0  0.0    0.0    0.9   0   0 c1d0
        0.1    0.0    0.6    0.0  0.0  0.0    0.0    0.1   0   0 c1d1
        0.2    2.3    0.2   17.1  0.0  0.0    1.3    0.4   0   0 c2d0
        0.2    2.3    0.2   17.1  0.0  0.0    1.4    0.4   0   0 c2d1
        0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c0t0d0
                        extended device statistics
        r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
        0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c1d0
        0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c1d1
        0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c2d0
        0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c2d1
        0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c0t0d0

     計測値の意味は次の通りです。

     r/s    : Read  I/O [回/sec]
     w/s    : Write I/O [回/sec]
     kr/s   : Read  転送バイト数 [KB/sec]
     kw/s   : Write 転送バイト数 [KB/sec]
     wait   : 待ち I/O トランザクション数
     actv   : 処理 I/O トランザクション数
     wsvc_t : I/O トランザクション平均待ち時間 [msec]
     asvc_t : I/O トランザクション平均処理時間 [msec]
     %w     : キュー待ち時間割合 [%]
     %b     : デバイス処理時間割合 [%]

     ディスクが処理能力の限界に達しているかどうかを判定するには %b
     を見るのが良いしょう。この値が 100 % と表示されている場合は、ディ
     スク性能がボトルネックになっている疑いがあります。


  2.  mpstat
      mpstat は CPU の統計情報を表示します。このコマンドにより CPU
      の活動状況を把握することができます。

      $ mpstat  1
        CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
          0  131   0    0  1321  119  207    3    0    0    0   289    1   1   0  97
          0   24   0    0  1321  110  195    0    0    0    0   329    0   0   0 100
          0    0   0    0  1314  114  190    0    0    0    0   314    0   1   0  99
          0    0   0    0  1297  108  217    1    0    0    0   464    2   1   0  97
          0    0   0    0  1310  108  191    0    0    0    0   314    0   1   0  99
          0    0   0    0  1327  114  193    0    0    0    0   315    0   0   0 100
          0    0   0    0  1309  108  192    0    0    0    0   315    0   1   0  99
          0    0   0    0  1312  110  190    0    0    0    0   313    0   1   0  99

     計測値の意味は次の通りです。

     CPU    : CPU 番号
     minf   : マイナーフォルト回数
     mjf    : メジャーフォルト回数
     xcal   : プロセスをまたぐコール回数
     intr   : 割り込み回数
     ithr   : スレッドによる割り込み
     csw    : コンテキストスイッチ
     icsw   : タイムスライスを使い切ったコンテキストスイッチ
     migr   : スレッド移行 (別プロセッサへ)
     smtx   : ミューテックススピン回数
     srw    : 読み取り書き込みロックスピン回数
     syscl  : システムコール回数
     usr    : ユーザ処理時間割合 [%]
     sys    : システム処理時間割合 [%]
     wt     : I/O 待ち時間割合 [%]
     idl    : アイドル時間割合 [%]

     CPU が忙しい場合は usr や sys の割合が増えます。逆に I/O やネッ
     トワークが遅い場合は wt の割合が増えます。


  3.  vmstat
      vmstat はメモリ統計情報を表示します。このコマンドによりメモリ
      使用状況を把握することができます。

      $ vmstat 1
       kthr      memory            page            disk          faults      cpu
       r b w   swap  free  re  mf pi po fr de sr cd cd cd cd   in   sy   cs us sy id
       0 0 0 1032356 122772 13 131 0  0  0  0  0  0  0  2  2 1321  289  207  1  1 97
       0 0 0 1019420 109136 13 58  0  0  0  0  0  0  0  0  0 1319  404  186  0  1 99
       0 0 0 1019340 109120 0   0  0  0  0  0  0  0  0  0  0 1296  323  176  1  1 98
       0 0 0 1019340 109164 0   0  0  0  0  0  0  0  0  0  0 1317  330  184  0  1 99
       0 0 0 1019340 109184 0   0  0  0  0  0  0  0  0  0  0 1313  442  197  1  1 98
       0 0 0 1019340 109192 0   0  0  0  0  0  0  0  0  0  0 1323  325  185  0  0 100
       0 0 0 1019340 109200 0   0  0  0  0  0  0  0  0  3  3 1606  318  311  1  3 96
       0 0 0 1019340 109200 0   0  0  0  0  0  0  0  0  0  0 1324  325  180  0  0 100
       0 0 0 1019340 109232 0   0  0  0  0  0  0  0  0  0  0 1309  321  179  0  1 99

      注目すべき測定値は free (未使用メモリ [KB]) です。

      メモリに関しては ARC (Adaptive Replacement Cache) とも関連しま
      す。プロセス、スレッド毎のメモリ使用量を知るには 'ps -el' を実
      行します。


  以上、基本的なシステムモニタコマンドを紹介させていただきました。
  次回は、 DTrace を使用した、システム情報の収集方法について紹介しま
  す。

  (つづく)


  ■ 参考文献

   (1) サンマイクロシステムズ、"SunOS リファレンスマニュアル 1 :
        ユーザコマンド"、Part No. 819-1210-13、2007 年 7 月

   (2) サンマイクロシステムズ、"SunOS リファレンスマニュアル 1M :
        システム管理コマンド"、Part No. 819-1211-13、2007 年 7 月

 (高田 浩生)
世界最高峰の技術で、世界最高性能のストレージを
Copyright 2020 Core Micro Systems Inc., All rights reserved.