FlashcacheはLinuxカーネルのディスクキャッシュコンポーネントで、2010年4月からFacebookによって開発され、 2011年にオープンソースとしてリリースされました。2013年1月以降、 EnhanceIOという名前のFlashcacheのフォークがあり、 sTec, Inc.によって開発されています。 [1] 2015年以降、そのフォークはメンテナンスされなくなり、再びフォークされて個人によってメンテナンスされています。[2]
フラッシュキャッシュは、フラッシュメモリ、USBフラッシュドライブ、SDカード、コンパクトフラッシュ、またはあらゆる種類のポータブルフラッシュマスストレージシステムを書き戻し永続キャッシュとして使用することで機能します。内部SSDを使用してパフォーマンスを向上させることもできます。[3]
概要
フラッシュメモリ(NANDメモリデバイス)をキャッシュに使用すると、Linuxカーネルはキャッシュを使用しない場合よりも優れたパフォーマンスでランダムディスクIOを処理できます。このキャッシュは、ページファイルやシステムバイナリだけでなく、すべてのディスクコンテンツに適用されます。フラッシュメモリベースのデバイスは、ランダムIOでは回転式HDDよりも通常桁違いに高速ですが、シーケンシャルな読み取り/書き込みではそれほど有利ではなく、さらに遅くなります。デフォルトでは、フラッシュキャッシュはすべてのフルブロックサイズのIOをキャッシュしますが、シーケンシャルIOを無視してランダムIOのみをキャッシュするように構成できます。[4]
同様のテクノロジは、 Windows Vista以降、 Microsoft WindowsにReadyBoostとして存在します。
実装
Flashcache は、Linux カーネルのデバイス マッパー上に構築されています。キャッシュのデータ構造はセット アソシエイティブ ハッシュ テーブルで、キャッシュは固定サイズのセット (バケット) に分割され、セット内で線形プローブを使用してブロックを検索します。デバイス マッパー レイヤーは、すべての I/O 要求をブロック サイズのチャンクに分割してから、要求をキャッシュ レイヤーに渡します。[引用が必要]
書き込み要求が発生すると、対応するキャッシュ ブロックがダーティとしてマークされます。ダーティ キャッシュ ブロックはバックグラウンドでディスクに遅延書き込みされます。書き戻しポリシーを制御するパラメータはいくつかあります。ダーティしきい値、アイドル状態、および書き戻しされる他のダーティ ブロックとの連続性です。[引用が必要]
制限事項
フラッシュキャッシュの実装によって課せられる制限がいくつかあります: [引用が必要]
- 原子性
- キャッシュ ブロックの書き込みは現在非アトミックです。
- TRIMサポート
- フラッシュメモリを最適化するためのATA TRIMコマンドはまだサポートされていません。
- キャッシュ汚染防止
- プロセスをキャッシュ不可としてマークして、フラッシュキャッシュがそのリクエストをキャッシュしないようにすることができます。ただし、キャッシュ不可としてマークしたプロセスが終了すると、フラッシュキャッシュにはクリーンアップする方法がありません。
- アライメント
- デバイス マッパーに依存すると、キャッシュ パフォーマンスの問題が発生し、4 KiB の倍数でない書き込みはキャッシュされません。主に、これは Xen ハイパーバイザーに影響します。そのため、EnhanceIO はデバイス マッパーの統合をやめ、最適でない使用ケースでより高いパフォーマンスを実現しました。[引用が必要]
- ライトアラウンドの読み取りレイテンシの影響
- ライトアラウンド モードでは、すべての書き込みがキャッシュをバイパスして高い一貫性を実現します。現在の実装では、SSD デバイスを介して読み取りを取得し、実際のリーダーに渡します。つまり、以前にキャッシュされていないブロックは常に最初に SSD デバイスに送られる必要があり、書き込み IO が継続的に発生します。Facebook が使用するエンタープライズ SSD やハイエンド PCIe デバイスでは問題になりませんが、ローエンド SSD ではパフォーマンスが低下します。
- ライトアラウンド読み取りキャッシュウォームアップフェーズ
- ライトアラウンド モードでは、FlashCache には、キャッシュされたページの経過時間とディスク上のページの経過時間を比較するための情報がありません。(1) デバイスが FlashCache の外部にマウントされている可能性があるため (2) このモードでは書き込みが追跡されないため。このため、ボリュームがアクティブ化されるたびに (つまり、再起動すると) キャッシュが空になります。すべてのホット領域がキャッシュされるまで、パフォーマンスが低下します。
参照
- キャッシュ
- dm キャッシュ
- キャッシュ アクセラレーション ソフトウェア(Intel の製品)
参考文献
- ^ EnhanceIO: Linux 向けの新しいソリッド ステート ドライブ キャッシュ
- ^ Linux 向け EnhanceIO オープンソース
- ^ 「Flash Cache | NetApp ドキュメント」。docs.netapp.com。2022年 10 月 10 日閲覧。
- ^ Mohan Srinivasan. 「Flashcache: Linux 用のライトバック ブロック キャッシュ」。GitHub。
外部リンク
- EnhanceIO、bcache、dm-cache のパフォーマンス比較 ( LKML )
- EnhanceIO、Bcache、DM-Cache のベンチマーク
- Facebook の Flashcache: 2010 年から 2013 年まで、そしてそれ以降
- Facebook が Flashcache 3.0 をリリース 2013-12-20 にWayback Machineでアーカイブ
