なぜ難しい?キャッシュ サイジングの考え方や目安、構成例を紹介:Infinio Accelerator


どのくらいのメモリをキャッシュに割り当てる必要がありますか?また、正しいサイズはどのように調べればいいですか?

これは、Infinioのようなキャッシュによる高速化を使用する際によく聞く質問です。しかし、この答えを正確に行うことはとても難しくなっています。

技術的な観点のみでなく、これは結婚指輪のアナロジーとも一致します。ある男性が婚約者に喜んでもらえるように、ダイヤの指輪を購入しようと考えているが、支払える金額には上限があり、さらに指輪を購入する際のオプションは多岐にわたります。しかも男性が良いと思った指輪が必ずしも相手の女性にとって「正しい」ものとは限らず、価値観や好み、流行など人、その時々によって異なります。

同様に、アプリケーションとそのI/Oアクセスパターンに応じて、「正しい」キャッシュサイズは全ての環境で異なります。Infinioのようなサーバサイドのキャッシュの目的は、高速なI/Oアクセスを提供し、ストレージへのリクエストを削減することです。そのため、ESXiサーバ上で実行されているVMが使用する仮想ディスクのデータブロックをキャッシュ上に保持する必要が有ります。このとき、キャッシュが小さいと、ヒットしないデータブロックについて低速なディスクなどからデータを取得されます。また、キャッシュが大きくするためには、ワークロードを実行している運用VMの使用できるリソースをキャッシュによって消費する必要が有ります。

I/Oワーキングセット

キャッシュを行う際に、ワークロードで発生するI/Oを完全にキャッシュするのであれば、そのサイズはESXiサーバ上で発生するI/Oのワーキングセットとなります。I/Oワーキングセットは実際にディスクへ読み書きされるデータであり、ディスク上のデータのサイズではありません。ワーキングセットは、アプリケーションが実行される全てのVMからアクセスされるデータの組み合わせであるため、決定が難しい場合がよくあります。これは、複数VMにわたる、仮想ディスクの合計サイズに必ずしも依存しているわけではありません。

上記の図はディスク全体に対して、少量のブロックにしかアクティブなアクセスがない場合を表しています。この図の場合、巨大なディスク全体のうちI/Oワーキングセットは小さなサイズであり、I/Oワーキングセット分のデータをキャッシュが簡単に取り込むことができます。

ディスク全体のサイズに比べて相対的にI/Oワーキングセットは小さくなる場合が一般的です。例えば、オンライン注文システムでは、日中に頻繁な更新が集中するというケースは一般的です。この場合、更新されるレコードに対応するデータブロックのみであり、これは小さなワーキングセットとなります。また、大きなワーキングセットが発生するバッチ処理は、サーバ上の負荷が少ない時間帯に、実施するようスケジュールされます。

つまり、全ての環境、また環境内においても適用される一つの答えなく、その環境のワークロード状況やESXiサーバ間でのVMの移動(vMotion)などにより、その時々で完全にキャッシュ行うためのサイズも変わる可能性があるということです。

キャッシュサイズの変更方法

Infinioのお客様の中には、ハイブリッドアレイベンダーのキャッシュサイジングを目安にするケースもあります。ハイブリッドアレイはハードディスクドライブの10%のサイズをキャッシュ層として持つ傾向があります。そのほかのInfinioのお客様はキャッシュサイズの推奨最小サイズである8GB RAMから始め、様子を見ながらサイズを大きくしています。また、さらに他のお客様では利用可能なリソースを確認し、割り当てることができる全てのリソースをキャッシュに割り当てることもあります。どのような場合も、Infinioであれば簡単にリソースをキャッシュサイズに割り当て変更できます(ダウンタイムは不要)。

結婚指輪により、婚約者とつながっているわけではありません。幸せに暮らすためには、結婚生活と同様に変化する要求と作業負荷を伴う動的なシステムに柔軟に対応する必要があります。サーバ上にワークロードを定期的に確認し、調整を行うことが運用全体の円滑化にもつながり、システムの応答速度は改善され、ユーザの満足度を向上させます。

関連トピックス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください