システム管理コラム集LINE社に2000年の創業時から在籍。このブログでは日々経験していることを記録するようにしています。昨日に引き続きストレージのネタに行きたいと思います。今日はキャッシュ容量の考え方を書きます。最近のハイエンドストレージのキャッシュは大容量です。代理店さんからストレージの提案をいただくと、最近では1GBなんて当たり前。4GBや8GBは割と普通で、まれに64GBなんて提案をいただいたこともあります(64GBっていったらハードディスク容量と変わんないよ~^^)。ストレージのキャッシュは非常に高価なので、今回は最適なキャッシュ容量の考え方を述べてみたいと思います。【そもそもストレージのキャッシュって何?】キャッシュする・・・貯蔵するということなのですが、IEのキャッシュやWEBキャッシュサーバと違ってストレージのキャッシュって何を貯蔵するのかちょっとわかりにくいです。ストレージにおけるキャッシュの役割はベンダーによっても違うようですが主に下記の3点に集約されるようです。1最近アクセスしたデータ(読み取りキャッシュ)2使用を見越してディスクから読み取られたデータ(先読みキャッシュ)3最近書き込まれたデータ(書き込みキャッシュ)【キャッシュのヒット率と利用率について考える】これを踏まえてキャッシュのヒット率と利用率について考えてみたいと思います。最適なキャッシュ容量を考える上で重要なのはリードの場合はキャッシュのヒット率、ライトの場合はキャッシュ利用率です。IEのキャッシュやWEBキャッシュサーバの場合はキャッシュ容量を大きくすればするほどキャッシュヒット率が向上していきますが、ストレージの場合は場合によります。ここではシーケンシャルリード、ランダムリード、シーケンシャルライト、ランダムライトの4パターンで考えて見ましょう。■シーケンシャルリード連続したデータをリードする場合です。この場合は先読みキャッシュ機能のおかげで高いキャッシュヒット率が期待できます。このアクセスが多い場合はキャッシュ容量を増やせるだけ増やすのがよいでしょう。■ランダムリードランダムにデータをリードする場合です。この場合は上記キャッシュ機能123のいずれにもひっかからないのでこのアクセスが多い場合はキャッシュヒット率を上げるためにキャッシュ容量を増やすことは得策ではありません。■シーケンシャルライト連続したデータをライトする場合です。この場合は書き込みキャッシュ機能のおかげで高いキャッシ利用率が期待できます。■ランダムライトランダムにデータをライトする場合です。この場合も書き込みキャッシュ機能のおかげで高いキャッシ利用率が期待できます。【考察】ストレージキャッシュはランダムリードに弱いです。DBはランダムリードが多いと思われるのでDB用途にストレージを購入する場合はこの弱点回避のためにはキャッシュ容量を増やすこと以外の別の手段を取る必要があります。効果的なのは一番アクセスが多いデータだけに限ってキャッシュ上に全てのデータを置くことだとかいろいろ考えられますね。それは今回の趣旨と違うのでまたいつか別の機会にでも。システム管理コラム集というブログに遭遇しました。大規模サイトでの様々な運用ノウハウが掲載されてます。