各ノードの実行結果であるデータブロックはキャッシュに保存され再利用可能です。
ノードの設定を変えた場合、そのノード以降の再実行だけで最終結果が得られます。
キャッシュは三層構造で効率を向上させています。
第一層は、データブロックをそのまま保存します。
保存は辞書への登録のみです。
これにより、ノードは次の処理へほぼノンブロッキングで進むことが出来ます。
第二層は、複数データブロックを1つにまとめたページに保存します。
ノードとは非同期で、データブロックをページにコピーした後にデータブロックを解放します。
これにより、同時に存在するデータブロック数を削減しオーバーヘッドを軽減します。
ページには上限があり、それを超えると LRU で破棄します。
第三層は、データブロックをストレージへ保存します。
ノードとは非同期で、再計算コストの大きいデータブロック(総和など)をファイルに保存します。
これにより、ページ上限に達した後もページアクセスよりは遅いが再計算することなく結果が得られます。
MAX_BLOCK_CACHE_SIZE_GB : キャッシュの最大サイズを GB で指定します。これはページ合計の上限となります。
BLOCK_CACHE_PAGE_SIZE:1ページのサイズをデータブロック数で指定します。メモリはページ単位に確保されます。