NetApp Tech OnTap
ディスクドライブを増設せずにパフォーマンスを強化

NetApp Performance Acceleration Module


Tech OnTapの読者ならご存知かと思いますが、ストレージシステムのランダムリードパフォーマンスは、ドライブ数(ストレージシステム内のドライブ総数)およびドライブ回転速度(RPM)によって大きく左右されます。残念ながら、ストレージパフォーマンスを高めるためにドライブを増やすと、必要な電力、冷却能力、およびスペースも大きくなります。また、ディスクドライブが大容量化する速度にパフォーマンスが追いついていないため、多くのアプリケーションでは、キャパシティが不要にもかかわらず、最適なパフォーマンスを達成するために余分なディスクスピンドルが必要になりがちです。

NetAppがPerformance Acceleration Module(PAM)を開発した目的は、ランダムリードパフォーマンスとスピンドル数の相互関係を断ち切り、少ない電力、冷却能力、およびスペースでストレージシステムのパフォーマンスを高めることでした。パフォーマンスの重要な側面の1つに、遅延すなわちレスポンス時間(特定の読み取り要求を満たすための所要時間)が挙げられます。PAMに関しては、CPU高負荷(80%)時における平均読み取り遅延時間を大幅に削減するという目標が立てられましたが、これは最初の製品リリースで達成することができました。社内テストでは、PAMによってMicrosoft® Exchange、VMware®、ファイルサービス、Perforceなどの一般的なアプリケーションが著しく高速化されることが確認されています。

この記事ではPAMについて詳しく検証します。具体的な内容は次のとおりです。

  • PAMハードウェアおよびソフトウェアの概要
  • 読み取りキャッシングストラテジー
  • Predictive Cache Statistics(PCS)の使用:PAMによるメリットの有無をモジュール購入前に判断

PAMの概要

簡単にいうと、PAMは第2レイヤキャッシュ、すなわち、WAFL®バッファキャッシュから追い出されたブロックを格納するキャッシュです(WAFLはNetApp® Write Anywhere File Layoutの略であり、NetAppによるディスク上でのデータレイアウト方法を定義しています。WAFLバッファキャッシュは、システムメモリ内でWAFLによって維持される読み取りキャッシュです)。PAMを使用しないシステムでは、システムメモリに存在しないデータを読み取ろうとすると、かならずディスク読み取りが発生します。一方PAMを使用した場合、ストレージシステムではディスク読み取りを実行する前に、インストールされているモジュールのいずれかに要求対象データがキャッシュ済みかどうかを確認します。Data ONTAP®はシステムメモリで一連のキャッシュタグを維持しているので、カードにアクセスせずにPAMにブロックが存在するかどうかを判別できます。そのため、キャッシュヒットの場合には1度のDMA動作しか必要としないので、アクセス遅延が短縮されます。どのようなキャッシュについても言えることですが、重要なのはキャッシュに何を書き込むかを決定するアルゴリズムです。この点については、以下の項で詳しく説明します。

PAMは、あらゆるタイプのワークロードにおいて読み取りを高速化できますが、最もメリットが高いのは、小容量のランダムリードの比率が高いワークロード(メッセージング、ファイルベースアプリケーション、ホームディレクトリなど)の場合です。この種のワークロードは、データ転送に比べて、ドライブヘッドを正しい位置までシークする動作に時間がかかるので、ディスクドライブで処理するのは容易ではありません。

VMware DRS

図1)ランダムリード ― PAMを使用する場合と使用しない場合

PAMはハードウェアとソフトウェアを組み合わせたものです(PAMソフトウェアはFlexScaleといいます)。ハードウェアを有効にするには、ライセンスが必要です。PAMハードウェアモジュールは、カードあたり16 GBのDDR2メモリへのデュアルチャネルDMAアクセスを提供する¾レングスのPCIeカードと、キャッシュタスクの高速化に必要なオンボードインテリジェンスを提供するカスタムコーディングされたField-Programmable Gate Array(FPGA)で実装されます。表1に、ストレージシステムあたりでサポート可能なモジュールの最大数を示します。

 

FAS/V-Series
モジュールの最大数 拡張キャッシュメモリ
FAS6080 / V6080
FAS6070 / V6070
    SA600
5 80GB
FAS6040 / V6040
FAS6030 / V6030
FAS3170 / V3170
4 64GB
FAS3070 / V3070
FAS3140 / V3140
    SA300
2 32GB
FAS3040 / V3040 1 16GB

表1)コントローラあたりでサポート可能なPAMモジュールの最大数(システムタイプ別)

PAMは高度な耐障害性を提供するように設計されています。このモジュールはキャッシュとして機能するので、ディスク読み取りを優先するため、訂正不可能なエラーは廃棄します。カードからの訂正不可能なエラーの比率が一定のしきい値を超えた場合、そのカードは自動的に無効になり、システムは非キャッシュ動作に戻ります。このとき、サービスが中断したりリブートが必要になったりすることはありません。ビットエラーの検出にはECCが使用されます。CPUからカードメモリに移動し、さらにCPUに戻るデータ配信は、データCRCによってエンドツーエンドで保護されます。

モジュールが無効になると、エラーメッセージによって問題が発生したモジュールが通知されるので、そのモジュールを取り外すことができます。NetApp AutoSupportを有効に設定している場合、このメッセージはNetAppにも送信され、(サービス契約の内容に応じて)サポート担当者が対処します。

インテリジェントキャッシング

PAMに実装されたキャッシングポリシーは、ストレージシステムに対する小規模ブロックのランダムリードアクセスを最適化することを目的としています。ランダムリードとは、ストレージシステムのディスク上の非連続的な位置から読み取りを行うことです。互いに論理的に近い位置で読み取り処理が行われるわけではないため、局所的な読み取りの際のワークロードと比べると処理が煩雑になり、多くのディスクシーク動作が必要なので、読み取り処理の平均遅延時間が長くなります。これらの読み取り処理は文字どおりランダムなので、次に必要となるブロックを予測して先読み(プリフェッチ)しておくことはできません。

これとは対照的に、シーケンシャルリードの場合は、連続する大量のデータをディスクから一度に読み取って処理できるのが通常です。このようなシーケンシャルリード処理を認識し、事前にデータを読み取る優れたアルゴリズムもあります。したがって、このようなデータはディスクから読み取るようにし、再度要求される可能性があるランダムアクセスデータ用には、使用可能な読み取りキャッシュを保持するのが得策です。

これがまさに、PAMキャッシングアルゴリズムの目的です。このアルゴリズムでは、デフォルトで、ランダムに読み取られた価値の高いデータを価値の低いシーケンシャルなデータとは区別してキャッシュに保存し、時間のかかるディスク読み取りを回避します。

PAMキャッシュはWAFLの後方に実装されている点に注意してください。この位置に実装されている理由は、ここならデータに関して豊富な情報が入手でき、何をキャッシュし何をキャシュしないかについて、よりインテリジェントな判断が可能になるからです。
NetAppは、固有のニーズに応じてキャッシュ動作を変更する機能も提供しています。PAMでは次の3つの動作モードをサポートしています。

  • デフォルトモード:データとメタデータをキャッシュします。
  • メタデータモード:メタデータだけをキャッシュします。
  • ロープライオリティモード:シーケンシャルリードなど、優先度の低いデータのキャッシングを有効にします。

デフォルトモード
デフォルトモードでは、ユーザデータとメタデータの両方がキャッシュされます。これはData ONTAPでWAFLバッファキャッシュに実装されているキャッシングポリシーと類似しています。NFS、CIFSなどのファイルサービスプロトコルの場合、メタデータには、ファイルおよびディレクトリ構造の維持に必要なデータが含まれます。SANの場合、メタデータには、LUN内データのブックキーピングに使用される少数のブロックが含まれます。

このモードは、ワーキングセットのサイズがPAMキャッシュのサイズ以下である場合に使用するのが最適です。また、アクセスが頻繁なデータのホットスポットがあり、そのデータが確実にキャッシュに存在するようにする目的でも、このモードが役立ちます。

メタデータモード
このモードでは、名前のとおりストレージシステムのメタデータだけがキャッシュされます。多くのランダムワークロードでは、キャッシュが役立つような時間内で、アプリケーションデータが再利用されることはほとんどありません。しかし、これらのワークロードではメタデータが再利用される傾向があるので、メタデータをキャッシュすればパフォーマンスが向上する可能性があります。メタデータだけをキャッシュすることは、データセットが大きすぎて効率的にキャッシュできない場合にも適しています(たとえば、PAMのキャッシュサイズを上回るサイズのアクティブデータセットなど)。

ロープライオリティモード
ロープライオリティモードでは、通常のデータおよびメタデータだけでなく、通常は除外される優先度の低いデータについてもキャッシングが有効になります。このカテゴリに含まれる優先度の低いデータとしては、大容量のシーケンシャルリードと最近の書き込みデータが挙げられます。書き込みワークロードは全体的に高負荷であり、書き込みによってキャッシュがオーバーフローし、より価値のある他のデータがイジェクトされる可能性があるため、書き込みはキャッシュから除外されるのが普通です。さらに、書き込みワークロードは書き込みのあと読み取られる可能性が少ない(書き込みを実行するシステム上で、すでにローカルにキャッシュされている場合が多い)ため、一般的にはキャッシュの対象としては適しません。

ロープライオリティモードは、データを書き込み、一定時間(アップストリームキャッシュでのデータ追い出しなど)のあとに同じデータの読み取りを行うアプリケーションで役立つ場合があります。たとえば、新しいデータを作成してリンクを配布し、しばらく経つとWebユーザによってアクセスされるWebベースアプリケーションの場合、このモードを使用するとディスク読み取りを回避できます。ある種のWebアプリケーションでは、最初の読み取りまでの経過時間が長いため、データをディスクから読み取らなければなりません(その後のデータ参照がアップストリームキャッシュで処理できる程度に頻繁であったとしても同様です)。このようなアプリケーションでロープライオリティモードのPAMを使用すれば、キャッシュヒットとなってディスク読み取りを行わずに済むため、高速化が可能になります。

ここで読者は、ご自分のワークロードに対してPAMが有効かどうか、また、どのモードを選べばよいかが気になるところでしょう。

PCS:PAMによってパフォーマンスが改善されるかどうかの判断

ご使用中のストレージシステムでキャッシュの追加が役立つかどうかを判断していただくため、NetAppではPredictive Cache Statistics(PCS)ソフトウェアを開発しました。このソフトウェアは現在、Data ONTAP 7.3以降のリリースで使用可能です。PCSを使用すると、システムメモリの2倍、4倍、8倍に相当するキャッシュを追加した場合の効果を予測できます。

PCSを使用して、PAMによってワークロードパフォーマンスが改善されるかどうか、いくつのモジュールが必要かを判断できます。さらにPCSでは、それぞれの動作モードをテストし、デフォルト、メタデータ、ロープライオリティのうち、どのモードが最適かを判断できます。

PCSの使用を開始するには、次のコマンドでこの機能を有効にします。

options flexscale.enable pcs

ストレージシステムのCPU利用率が常に80%を超えている場合には、PCSを有効にしないでください。PCSを有効にしたあと、シミュレートされたキャッシュの「ウォームアップ」、すなわちデータブロックの収集を行う必要があります。キャッシュをウォームアップしたら、NetApp perfstatツール(英語)を使用し、データを表示して分析することができます。

上記の手順では、デフォルトのキャッシングモード(メタデータと通常のユーザデータの両方を含む)によるキャッシングがシミュレートされます。デフォルト以外の動作モードもテストできます。

メタデータモードを有効にするには:

options flexscale.normal_data_blocks off

ロープライオリティモードを有効にするには:

options flexscale.normal_data_blocks on

options flexscale.lopri_blocks on

テストが終わったら、PCSを無効にします。

options flexscale.enable off

PCSを有効にした状態で次のコマンドを使用すると、動作状況を確認できます。

> stats show -p flexscale-pcs

図2に出力例を示します。

VMware DRS

図2)PCSの出力例

このデータを理解するためのポイントを、次に説明します。

  • Hit÷(Invalidate+Evict)の割合が小さい場合、大量のデータが使用されずに廃棄されています。インスタンス(ec0、ec1、ec2)が小さすぎる可能性があります。
  • (Hit+Miss)÷Invalidate の割合が小さすぎる場合、ワークロードに大量の更新が含まれている可能性があります。メタデータモードに切り替えて、Hit%をもう一度チェックしてください。
  • 使用状況が安定していてInvalidateとEvictが少ない場合は、ワーキングセットが適切な状態です。
  • キャッシュが処理するKB/秒は、1ブロックあたりHit/s×4 KBにほぼ相当します。

PCSでシミュレートされている3種類のキャッシュは、カスケーディングキャッシュである点に注意してください。上記の例で、ec0はサイズ8 GBの最初のキャッシュ、ec1はサイズ8 GBの2番目のキャッシュ、ec3はサイズ16 GBの3番目のキャッシュを表します。32 GBキャッシュのヒット/秒は、3つのキャッシュすべてのヒット/秒を合計したものです。カスケーディングキャッシュの主な利点は、32 GBキャッシュの正確なヒット率を測定するプロセスで、8 GBキャッシュおよび16 GBキャッシュのヒット率の推定値も得られる点です。その結果、3つの推定値からヒット率の曲線が得られ、中間サイズのキャッシュを使用した場合のヒット率を推定することができます。

PAMとFlexShare

FlexShare™は、システムリソース(プロセッサ、メモリ、およびI/O)の優先順位をボリュームレベルで設定できるData ONTAPオプションです。このオプションによって、コントローラが高負荷の時に、特定のボリュームのワークロードに、より多くのリソースを割り当てることが可能になります。FlexShareはPAMと完全に互換性があり、FlexShareで行った設定が、PAMキャッシュに格納されたデータに適用されます。FlexShareを使用すると、PAMで実装するグローバルポリシーをベースに、きめ細かな制御を適用できます。たとえば、FlexShareで特定のボリュームに高いプライオリティを設定すると、そのボリュームからのデータに対してはキャッシュ内で高い優先順位が与えられます。

まとめ

昨今の限られたIT予算のなかで、あらゆる投資から最高のパフォーマンスを引き出しながら、電力、冷却能力、およびスペースの所要量を抑えることは、従来以上に重要になっています。PAMならこれが可能です。PAMではワークロード固有のニーズに対応するように、キャッシングモードを柔軟に調節できます。PCSを使用すれば、ご使用のシステムでPAMを使用するメリットがあるかどうか、いくつのモジュールが必要か、どの設定が適しているかを、PAMの購入に先立って判断することができます。


Naresh Patel Naresh Patel
NetApp、テクニカルディレクター、パフォーマンスエンジニアリング担当

Nareshはパフォーマンス研究の分野で博士号を取得し、NetAppでの9年間を含め、22年以上にわたってハードウェアおよびソフトウェアシステムのパフォーマンス評価に取り組んでいます。

Dave Tanis Dave Tanis
NetApp、シニアプロダクトマネージャー、パフォーマンスおよびPAM担当

Daveはシステムエンジニアリングおよびマーケティング分野で幅広い経験があります。19年に及ぶキャリアのなかで、R&Dパフォーマンスエンジニアリング、ネットワーク管理、およびプロダクトマネジメントにも携わっています。

Paul Updike Paul Updike
NetApp、テクニカルマーケティングエンジニア

IT業界で16年のキャリアを持つPaulは、さまざまなハイパフォーマンス環境、学術環境、およびエンジニアリング環境に携わってきました。6年前にNetAppに入社して以来、Data ONTAPおよびストレージシステムのパフォーマンスに関するベストプラクティスを専門として活躍しています。


関連情報