対話型シミュレーター
LRU キャッシュヒット率と容量効果シミュレーター
ヒット率曲線、スタック距離模式図、遅延内訳を並べ、容量追加がどこまで効くかを確認します。
パラメータ入力
一時停止中はスライダーを動かすと結果が即座に更新されます。
LRU キャッシュ実時間アニメーション
緑の点滅=ヒット(キーを先頭へ移動)、赤の点滅=ミス(末尾=最長未使用スロットを破棄して先頭へ挿入)。左がMRU(最近使用)、右がLRU(最長未使用)です。アクセス列はZipf的な局所性を持ちます。
物理モデルと主要式
$$H \approx 1-\exp\left[-\alpha\frac{C}{W}\right],\quad H=\frac{\text{hits}}{\text{accesses}}$$
LRUの実ヒット率はアクセス分布に強く依存します。ここでは局所性係数で近似し、詳細評価前の容量感度を見るためのモデルにしています。
読み取り方
ヒット率曲線では容量を増やしたときの改善が頭打ちになる場所を見ます。
スタック図では最近使われた要素がキャッシュに残る考え方を確認します。
遅延図ではミス率がバックエンド負荷に直結する点を読みます。
会話で学ぶLRU キャッシュヒット率と容量効果
🙋LRU キャッシュヒット率と容量効果では、まずどこを見ればいいですか?作業集合サイズ Wを動かすと図も数値も同時に変わるので、少し迷います。
🎓最初はヒット率を見ます。ただし数字だけで判断せず、LRUヒット率曲線で前提の形や状態を確認し、スタック距離模式図で分布や変化の出方を合わせて読みます。ヒット率曲線では容量を増やしたときの改善が頭打ちになる場所を見ます。
🙋作業集合サイズ Wを大きくするとヒット率が変わりそうなのは分かります。では、キャッシュ容量 Cはどのくらい効いていると考えればいいですか?
🎓キャッシュ容量 Cを少しずつ動かしてミス率の動きを見ると、支配している項が見えてきます。LRUの実ヒット率はアクセス分布に強く依存します。ここでは局所性係数で近似し、詳細評価前の容量感度を見るためのモデルにしています。 1点の計算で終わらせず、実際にばらつきそうな範囲を往復させるのが大事です。
🙋遅延と負荷は何を見るための図ですか?普通のグラフだけでも判断できそうに見えます。
🎓遅延と負荷は、危険側に入る境界や、余裕が急に崩れる組み合わせを探すための図です。スタック図では最近使われた要素がキャッシュに残る考え方を確認します。 例えばWeb/APIキャッシュ容量の初期設計では、単一点の値より「少し条件がずれたらどうなるか」が効きます。
🙋では、ヒット率が基準内なら、この条件をそのまま採用してよいですか?
🎓ここでは初期検討として扱います。DBやCDNのミス負荷見積もりや容量追加と遅延改善の費用対効果確認には役立ちますが、最終判断では規格値、実測値、詳細解析、メーカー条件で確認してください。遅延図ではミス率がバックエンド負荷に直結する点を読みます。
実務での使い方
Web/APIキャッシュ容量の初期設計。
DBやCDNのミス負荷見積もり。
容量追加と遅延改善の費用対効果確認。
よくある質問
ヒット率とミス率を先に見ます。次にLRUヒット率曲線で前提の状態を確認し、スタック距離模式図で分布や変化の偏りを読みます。ヒット率曲線では容量を増やしたときの改善が頭打ちになる場所を見ます。
作業集合サイズ Wを単独で動かしたあと、キャッシュ容量 Cも同じ幅で動かしてヒット率の変化量を比べます。遅延と負荷を見ると、どの組み合わせで余裕や性能が急に変わるかを把握できます。
Web/APIキャッシュ容量の初期設計に使います。単一点の数値ではなく、入力範囲を少し広げてヒット率の余裕が保てるかを確認すると、詳細解析へ進む前の論点整理に役立ちます。
LRUの実ヒット率はアクセス分布に強く依存します。ここでは局所性係数で近似し、詳細評価前の容量感度を見るためのモデルにしています。最終判断では規格値、実測値、詳細解析、メーカー条件を確認してください。
使い方ガイド
- 作業集合サイズ W(item 数)とキャッシュ容量 C(item 数)を入力します
- 局所性 α(0.2〜8、既定2.2)でアクセスの集中度を調整します。値が大きいほど一部要素へ集中し、同じ容量でヒット率が上がります
- リクエスト数(req/s)とミスペナルティ(ms)を設定すると、ヒット率・ミス率・平均追加遅延・バックエンド負荷が更新されます
- キャッシュ容量 C を増やし、ヒット率向上が頭打ちになる位置とバックエンド負荷の低下を確認します
具体的な計算例
既定値(作業集合 W=50,000 item、キャッシュ容量 C=8,000 item、局所性 α=2.2、5,000 req/s、ミスペナルティ 30 ms)で計算します。ヒット率 H = 1−exp(−α·C/W) = 1−exp(−2.2×8000/50000) ≈ 29.67%、ミス率 70.33%、平均追加遅延 = 30×0.7033 ≈ 21.1 ms、バックエンド負荷 = 5,000×0.7033 ≈ 3,516 req/s となります。容量 C を 16,000 item に倍増するとヒット率は 50.54% へ上昇し、バックエンド負荷は約 2,473 req/s に低下します。容量を増やすほど改善は逓減(頭打ち)します。
実務での注意点
- データベースクエリキャッシュでは、局所性0.5未満の場合キャッシュ容量追加の効果が限定的(ヒット率向上率5%以下)
- マイクロサービス環境でCDN+オリジンサーバーキャッシュの2層構成では、各層で異なる局所性を設定し、ネットワーク遅延(RTT 50ms以上)削減効果を検証
- CPUスケジューリングとキャッシュヒット率の関連性:マルチテナント環境でワーキングセット競合時、物理メモリ実装量の70~80%がキャッシュ有効容量の目安