オルタナティブ・ブログ > 吉政忠志のベンチャービジネス千里眼 >

IT業界でベンチャービジネスの支援をしている執筆者が日々の活動ログと感じたことを、徒然なるままに書き綴っていきます。

ZFSテクニカルコラム:第十二回:ARCが公開されました

»

皆さま、こんにちは。吉政創成の吉政でございます。弊社のお客様であるコアマイクロシステムズ様がメールマガジンを発行されました。そこで連載されている人気の初心者向けZFSコラムがありますので、ここでもご紹介します。

なお、メルマガでは、NexentaStor搭載アプライアンスの「Prime STOR」や30万IOPSの「Super SSD」、「Super CACHE」、高信頼高速ファイル共有NAS「NetCluSTOR」のマイナーチェンジをお伝えしています。メルマガの全文は以下をご覧ください。

cnl012.pdfをダウンロード

◆◆>[ テクニカルコラム:かんたん♪ ZFS  ]<◆◆◆◆◆◆◆◆◆◆◆◆

第十二回:ARC

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

 こんにちは。今年もいよいよ終わりが近づきました。あたらしい年がみな
 さんにとって良い年であるようお祈りいたします。

 このコラムでは実際に ZFS を使う上で役に立つ Tips を紹介します。
 今までのファイルシステムとは一味違う ZFS  を活用して面倒なファイル
 管理の苦労を減らしましょう!

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

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

 今回は ARC (Adaptive Replacement Cache) について説明します。ZFS は
 IBM が考案したARC を元にしたキャッシュアルゴリズムを採用しています。

 以下のウェブページの図は ZFS の階層構造を説明したもので、ARC は
 Pooled Storage Layer 上のモジュールとして実装されています。

 http://hub.opensolaris.org/bin/view/Community+Group+zfs/source

 キャッシュ領域はメインメモリ上に確保されます。 ARC は物理メモリの
 3/4 を上限に、可能な限りデータをキャッシュします。もし、OS 全体の
 メモリが不足した場合は、キャッシュデータを捨てメモリを解放します。

 パフォーマンスに大きな影響を与える機構ですので、 ARC の動作状況を
 調べることは大変重要です。

 ARC の動作状況をモニタするスクリプトを二つ紹介しましょう。

 (1) arc_summary.pl (http://www.cuddletech.com/arc_summary.pl)
   このスクリプトは ARC の統計情報を印字します。上の URL からダウ
   ンロードし実行権を与えてください。以下のウェブページに実行例が
   あります。

   http://cuddletech.com/arc_summary/

   [System Memory]
    Physical RAM : 物理メモリ容量
    Free Memory  : 未使用メモリ容量
    LotsFree     : lotsfree カーネルパラメータ

   [ARC Size]
    Current Size : ARC で使用しているメモリ容量
    Target Size  : ターゲットサイズ
    Min Size     : zfs_arc_min で指定された ARC の最小サイズ
    Max Size     : zfs_arc_max で指定された ARC の最小サイズ

   [ARC Size Breakdown]
    Most Recently Used Cache Size   :
       Most Frequently Used Cache Size :

    ARC は MRU と MFU の二つのキャッシュ領域を持ち、キャッシュエ
    ントリのヒットに応じて、それぞれのキャッシュ領域の大きさを変
    えます。ここでは MRU と MFU の割合がパーセンテージで印字され
    ています。

   [ARC Efficency]
    Cache Access Total : キャッシュへのアクセス回数
    Cache Hit Ratio    : キャッシュヒット率
    Cache Miss Ratio   : キャッシュミス率
    REAL Hit Ratio     : MRU と MFU のキャッシュヒット率

    最初の Cache Hit Ratio には MRU と MFU へのヒット以外に、
    MRU Ghost、MFU Ghost へのヒットも含まれています。REAL Hit
    Ratio は MRU と MFU のみのキャッシュヒット率です。

    Data Demand   Efficiency :
    Data Prefetch Efficiency :

    ZFS にはファイルレベルでのプリフェッチ機構 zfetch が実装され
    ています。実際に要求されたデータのキャッシュヒット・ミス比が
    Data Demand Efficiency です。 プリフェッチしたデータのキャッ
    シュヒット・ミス比が Data Prefetch Efficiency です。

    CACHE HITS BY CACHE LIST:
    Anon                       : 新しいキャッシュエントリ
    Most Recently Used         : MRU ヒット回数
    Most Frequently Used       : MFU ヒット回数
    Most Recently Used Ghost   : MRU ゴーストヒット回数
    Most Frequently Used Ghost : MFU ゴーストヒット回数

    ARC はキャッシュデータを削除した後も MRU、MFU それぞれに、
    ゴーストリストを用意し、削除済みデータへのヒットが無いかを
    確認します (MRU ゴースト、MFU ゴーストヒット回数)

    CACHE HITS BY DATA TYPE:
    Demand Data      : デマンドデータにヒットした割合
    Prefetch Data    : プリフェッチデータにヒットした割合
    Demand Metadata  : デマンドメタデータにヒットした割合
    Prefetch Metadat : プリフェッチメタデータにヒットした割合

    CACHE MISSES BY DATA TYPE:
    Demand Data      : デマンドデータでミスした割合
    Prefetch Data    : プリフェッチデータでミスした割合
    Demand Metadata  : デマンドメタデータでミスした割合
    Prefetch Metadat : プリフェッチメタデータでミスした割合

 (2) arcstats.pl (http://blogs.sun.com/realneel/resource/arcstat.pl)
   arc_summary.pl と同じデータを扱いますが、 指定された秒数毎の統
   計を印字します。以下のように実行すると 5 秒おきに印字されます。

 ------------------------------------------------------------------
# ./arcstat.pl 5
  Time  read  miss  miss%  dmis  dm%  pmis  pm%  mmis  mm%  arcsz     c
21:16:27  151K    5K      3    4K    2    1K   32    2K    5   209M    1G
21:16:28     1     0      0     0    0     0    0     0    0   209M    1G
21:16:29     0     0      0     0    0     0    0     0    0   209M    1G
21:16:30     0     0      0     0    0     0    0     0    0   209M    1G
21:16:31     0     0      0     0    0     0    0     0    0   209M    1G
21:16:32     0     0      0     0    0     0    0     0    0   209M    1G
21:16:33     0     0      0     0    0     0    0     0    0   209M    1G
21:16:34     0     0      0     0    0     0    0     0    0   209M    1G
21:16:35    14     0      0     0    0     0    0     0    0   209M    1G
21:16:36    38     0      0     0    0     0    0     0    0   209M    1G
21:16:37    22     0      0     0    0     0    0     0    0   209M    1G

 # ./arcstat.pl -v
 Arcstat version 0.1
 Usage: arcstat.pl [-hvx] [-f fields] [-o file] [interval [count]]
 Field definitions are as follows
  dread : Demand data accesses per second
  Time : Time
  pmis : Prefetch misses per second
   pm% : Prefetch miss percentage
 mtxmis : mutex_miss per second
  arcsz : Arc Size
   mm% : Metadata miss percentage
  mrug : MRU Ghost List hits per second
  hits : Arc reads per second
   mfu : MFU List hits per second
   mh% : Metadata hit percentage
  read : Total Arc accesses per second
  Hit% : Arc Hit percentage
  rmis : recycle_miss per second
  mmis : Metadata misses per second
  mhit : Metadata hits per second
  dmis : Demand Data misses per second
   mru : MRU List hits per second
   ph% : Prefetch hits percentage
  eskip : evict_skip per second
    c : Arc Target Size
  mfug : MFU Ghost List hits per second
  miss% : Arc miss percentage
  miss : Arc misses per second
   dm% : Demand Data miss percentage
   dh% : Demand Data hit percentage
  dhit : Demand Data hits per second
  phit : Prefetch hits per second
  mread : Metadata accesses per second
  pread : Prefetch accesses per second

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

 これらの情報を見て注意しなければいけないのは MRU と MFU へのヒット
 数と、ゴースト MRU と ゴースト MFU へのヒット数です。 もし、ゴース
 トのヒット数が多い時は、一度はキャッシュから追い出されたものの、再
 びヒットしたということです。このような場合はメモリを増やすことで、
 より一層 ARC が効果的に働く可能性があります。
  一方で、メモリを増やすと、CPU 負荷が大きくなります。メモリを増やす
 場合は CPU リソースが逼迫していないことを確認してください。

 今回のコラムでは、ARC の統計情報の収集方法を紹介させていただきまし
 た。次回は圧縮と重複排除について紹介します。

Comment(0)