ディスクキャッシュとは、ディスク(HDDやSSD)の読み書きを速くするために、よく使うデータを高速なメモリ側に一時的に保持しておく仕組みです。「データをディスクに貯める仕組み」と誤解されがちですが、OSの文脈では逆で、遅いディスクへのアクセス回数を減らすためにRAMなどへ写しを置く技術を指します。一方、After Effectsのような動画編集ソフトが「ディスクキャッシュ」と呼ぶのは、計算済みのフレームをSSDに保存しておく別の仕組みです。この記事では両方を区別したうえで、キャッシュメモリ(CPU内部のL1〜L3)との違い、書き込みキャッシュで起きるデータ消失の危険、ブラウザの「from disk cache」表示の意味、LinuxとWindowsでの確認方法、削除するとどうなるかを、Ubuntu 24.04で計測した値とコマンド例つきで整理します。
メモリが逼迫したときの退避そのものの仕組みと、スラッシングかどうかの判定手順はスワッピングとは?ページングとの違いとスラッシングの判定手順で扱っています。
まとめ:ディスクキャッシュはOSではRAMでディスクを肩代わりし、編集ソフトでは計算結果をディスクに置く仕組み
結論を先に示します。OSのディスクキャッシュは「遅いディスクを速いメモリで肩代わりする」仕組みで、OSが自動で管理するため、普段は意識も操作も要りません。
- 定義:ディスクのデータを、より速いメモリ(OSのページキャッシュ=RAM、またはドライブ内蔵のバッファ)に一時保持し、ディスクI/Oを減らす仕組み。
- 効き目:Ubuntu 24.04で1GiBのファイルを読むと、キャッシュなしは0.54〜0.75秒、キャッシュありは0.16〜0.26秒だった(3回計測)。
- キャッシュメモリとの違い:キャッシュメモリはCPUとRAMの速度差を埋めるCPU内部のメモリ、ディスクキャッシュはRAMとディスクの速度差を埋める仕組み。
- 書き込みの注意:書き込みもいったんRAMに溜めてから後でディスクへ書き戻す(ライトバック)。電源断で消える範囲があるため、確実に残したいデータはfsyncなどで明示的に書き出す。
- 確認方法:Linuxは
free -hのbuff/cache、Windowsはタスクマネージャーの「キャッシュ済み」。メモリが足りるかはLinuxならavailable列で判断する。 - アプリのディスクキャッシュ:After Effectsは計算済みフレームをSSDなどに保存する。既定の上限はボリュームの10%(最大100GB)で、容量が足りなければ設定から空にしてよい。
- 削除するとどうなるか:所定の操作で消しても保存済みのデータは消えないが、直後の読み込みや再生が遅くなる。OSのキャッシュは通常消さない。
ディスクキャッシュとは|ディスクI/Oを減らすページキャッシュとドライブ内蔵バッファ
ディスクキャッシュ(disk cache)とは、ディスクから読み込んだデータや、これから書き込むデータを、より高速なメモリ側に一時的に保持しておく仕組みです。目的はただ一つ、遅いディスクへのアクセス回数を減らすことです。実体は主に2種類あり、OSが管理する「ページキャッシュ」と、HDDやSSD自体が内蔵する小容量のバッファに分かれます。どちらも「ディスクの内容を、ディスクより速い場所に置く」点で共通しています。
OSのページキャッシュが一度読んだファイルをRAMに残す読み込みの流れ
アプリがファイルを読むと、OSのカーネルはディスクから読んだ内容をページ(x86_64のLinuxでは4KB単位)としてRAMに置き、その写しをアプリへ渡します。次に同じ箇所が読まれたとき、カーネルはディスクに触れずにRAM上のページを返します。これがページキャッシュで、Linuxでは空いているRAMのほぼすべてがこの用途に回ります。後の計測で1GiBのファイルを読んだ直後、fincoreは262,144ページがメモリ上にあると表示しました。262,144×4KiBは1GiB(1,073,741,824バイト)です。カーネルがメモリやI/Oをどう仲介しているかの全体像はカーネルとは?OSの中核が担う役割と仕組みで整理しています。
OSのページキャッシュは保存領域ではなく、ディスクアクセスを減らすための一時領域です。キャッシュの本体は速いメモリ側にあり、元データはディスクにあります。読み込み用のキャッシュが消えても(電源を切っても)、データ自体は失われません。
HDDやSSDが内蔵するDRAMバッファとOSのキャッシュが分担する範囲
もう一つの実体は、HDDやSSDのコントローラが持つDRAMバッファです。ドライブはこの領域で細かい書き込みをまとめ、読み出しを先回りして、物理アクセスの回数と順序を整えます。OSのページキャッシュがファイル単位の高速化を、ドライブ内蔵バッファがドライブ内部の効率化を受け持つ分担です。容量はファームウェアが管理するため変えられませんが、書き込みキャッシュの有効・無効はOSから切り替えられる場合があります。ドライブの種類やHDDとSSDの違いはストレージとは?種類・HDDとSSDの違いで、性能を数字で比べる指標はIOPSとは?計算式とスループット・レイテンシの違いで解説しています。
メモリキャッシュとディスクキャッシュの違い|目的・対象・消えたときの影響で区別
検索で多いのが、メモリキャッシュとの違いです。両方ともデータをRAMに置く点が似ているため混同されますが、目的と対象が異なります。
| 観点 | メモリキャッシュ | ディスクキャッシュ |
|---|---|---|
| 主な目的 | データを高速供給 | ディスクI/Oの削減 |
| 代表例 | CPUキャッシュ・Redis | ページキャッシュ |
| 保存先 | RAM | RAM/ドライブ内DRAM |
| 元データの所在 | 計算結果やDBなど | 読み込み済みデータはディスク上/未反映の更新はキャッシュ内 |
| 管理する主体 | アプリ・CPU | OS・ドライブ |
| 消えたとき | 再生成が必要な場合も | ディスクから読み直す |
メモリキャッシュは「速いデータ供給そのもの」を指す広い言葉で、ディスクキャッシュは「ディスクアクセスを減らす具体的な仕組み」です。ディスクキャッシュはOSが自動で効かせ、Redisのようなアプリ用キャッシュは何を置くかをアプリ側で設計します。DBクエリや集計処理の結果を繰り返し使う場合は、アプリ側のキャッシュも候補です。ただし、更新時の無効化と追加のメモリ使用量を設計する必要があります。製品の選び方はValkeyとは?Redisとの違い・導入手順、サーバーレスで使う場合はUpstashとは?サーバーレスRedisの料金・無料枠と使い方、AWSのマネージド版はAmazon ElastiCacheとは?対応エンジンと料金・採用判断で比較できます。データベースが自前で持つバッファの効き具合を数字で見る方法はバッファヒット率とは?データベースバッファの仕組みと計算式にまとめています。
キャッシュの階層|レジスタ・キャッシュメモリ・主記憶・ディスクの速度差と位置づけ
ディスクキャッシュとキャッシュメモリの違いは、コンピュータの「記憶階層」で見ると分かりやすくなります。CPUに近いほど高速・小容量・高価で、遠いほど低速・大容量・安価です。代表的な速度と容量の目安を示します(製品世代で変わるため桁の目安として読んでください)。
| 階層 | 速度の目安 | 容量の目安 | 揮発性 |
|---|---|---|---|
| レジスタ | 1ナノ秒未満 | 数KB | 揮発 |
| キャッシュメモリ | 数ナノ秒 | 数MB | 揮発 |
| 主記憶(RAM) | 数十ナノ秒 | 数GB〜 | 揮発 |
| ページキャッシュ | RAM相当 | 空きRAMに依存 | 揮発 |
| ディスク | 数十μ秒〜数ミリ秒 | 数百GB〜 | 不揮発 |
「レジスタ」や「キャッシュメモリ(L1〜L3)」はCPU内部の超高速メモリで、名前が似ていてもディスクキャッシュとは別物です。キャッシュメモリはCPUとRAMの間の速度差を、ディスクキャッシュはRAMとディスクの間の速度差を埋めます。置かれるのが「CPUが計算に使うデータ」か「ディスクの内容」かで区別してください。NVMe SSDの読み出しはマイクロ秒単位、HDDはミリ秒単位、RAMはナノ秒単位と、表のとおり桁がいくつも違います(実際の遅延はアクセスサイズやキュー深度、連続かランダムかでも変わります)。この速度差こそ、キャッシュが効く根本理由です。HDDほど遅くないSSDでも差は消えず、縮むだけです。
書き込みキャッシュの仕組み|ライトバックとライトスルーの違いと停電時のリスク
ディスクキャッシュは書き込みにも働き、その書き込み方式は次の2種類です。ライトバック(write-back)は書き込みをキャッシュに受け取った時点で「完了」を返し、ディスクへは後でまとめて書き戻します。ライトスルー(write-through)はディスクへの書き込みが済んでから完了を返します。
OSの既定はライトバックです。速い代わりに、書き戻し前の電源断やカーネルのクラッシュで、直近の書き込みが失われる余地があります。読み込み用と違い、書き込み用キャッシュは消えるとデータが失われ得る。ここが見落とされやすい落とし穴で、データベースがfsyncを呼んでからコミット完了を返すのはこの穴をふさぐためです。ログを先に確定させる設計はライトアヘッドログ(WAL)とは?仕組みとfsync設計・復旧で解説しています。
Linuxのダーティページが書き戻されるまでの流れとvm.dirty系パラメータの確認
Linuxでは、書き込まれたがまだディスクに反映されていないページを「ダーティページ」と呼びます。カーネル公式ドキュメントのsysctl/vmによると、カーネルのフラッシャースレッドが dirty_writeback_centisecs の間隔(100分の1秒単位)で起き、dirty_expire_centisecs より長くダーティのままのデータを書き出します。ダーティの量が dirty_background_ratio を超えるとバックグラウンドでの書き戻しが始まり、dirty_ratio に達した時点では、書き込んだプロセス自身が書き戻しを担います。
Ubuntu 24.04.5(カーネル6.8)のコンテナで確かめた既定値は、dirty_background_ratio=10、dirty_ratio=20、dirty_expire_centisecs=3000(30秒)、dirty_writeback_centisecs=500(5秒)でした。512MiBのファイルを書いた直後の Dirty は524,304kB(512MiB+16kB)で、ほぼ書いた量がそのままRAMに残っていました。sync を実行すると4kBまで減ります。手元の値は次のコマンドで確かめられます。
# 書き戻しのしきい値と間隔(ディストリビューションごとに既定値が違うため実機で確認する)
sysctl vm.dirty_background_ratio vm.dirty_ratio vm.dirty_expire_centisecs vm.dirty_writeback_centisecs
# いまディスクへの書き戻しを待っている量(Dirty)と書き戻し中の量(Writeback)
grep -E '^(Dirty|Writeback):' /proc/meminfo
# 大きなファイルを書いた直後にDirtyが増え、syncの後に減ることを観察する
dd if=/dev/zero of=/var/tmp/dirtytest.bin bs=1M count=512 status=none
grep -E '^(Dirty|Writeback):' /proc/meminfo
sync
grep -E '^(Dirty|Writeback):' /proc/meminfo
rm /var/tmp/dirtytest.bin
アプリが「このデータは確実に残したい」場合は、fsync(2)のマニュアルにあるとおり fsync() か fdatasync() を呼びます。fsync() はファイルの変更をストレージデバイスへ送り、ドライブにディスクキャッシュがあればその書き出しも含めて、デバイスが完了を報告するまで待ちます。呼び出すタイミングは必要な永続性に応じて決めます。新規作成や名前変更を確実に残す場合は、親ディレクトリのfsyncも検討します。
WindowsのレイジーライターとFILE_FLAG_WRITE_THROUGHの動作差
Windowsも既定はライトバックです。MicrosoftのFile Cachingの説明では、キャッシュマネージャーが毎秒「レイジーライター」を起動し、最近書き出されていないページの8分の1をディスクへの書き込み待ちに積む、と書かれています。即時にディスクへ書きたいアプリは、CreateFileに FILE_FLAG_WRITE_THROUGH を渡してライトスルーにするか、FlushFileBuffers を呼んで明示的に書き出します。FILE_FLAG_NO_BUFFERING を渡せばキャッシュを通さずに読み書きできます(メタデータはキャッシュされます)。
ドライブ内蔵の書き込みキャッシュは、デバイスマネージャーのディスクのプロパティにある「ポリシー」タブで有効・無効を切り替えられます。UPSのないサーバーで停電時の消失を避けたい場合は無効化を検討し、性能が落ちる分はRAID構成やコントローラ側の電池付きキャッシュで補うのが定石です。冗長化の考え方はRAIDとは?RAID0/1/5/6/10の違いと構成で整理しています。
Linuxのキャッシュ確認|free・meminfo・fincoreの操作と読み方
Linuxでは、ページキャッシュの量を free で、内訳を /proc/meminfo で、ファイル単位のキャッシュ状況を fincore で確認できます。順に見ていくと、メモリ不足なのか、単にキャッシュが育っているだけなのかを切り分けられます。以下の出力は、2026年10月17日にUbuntu 24.04.5(カーネル6.8.0、procps-ng 4.0.4、util-linux 2.39.3)のコンテナで実際に得たものです。
free -hのbuff/cacheとavailableによるメモリ不足の判定手順
free(1)のマニュアルによると、buff/cache列はカーネルのバッファ(Buffers)と、ページキャッシュおよび回収可能なスラブ(Cached と SReclaimable)の合計です。available列は、スワップを使わずに新しいアプリへ回せるメモリの見積もりで、ページキャッシュのうち回収できる分も勘定に入っています。
$ free -h
total used free shared buff/cache available
Mem: 5.8Gi 732Mi 2.5Gi 980Ki 2.8Gi 5.1Gi
Swap: 0B 0B 0B
# 内訳を見る(Cachedがページキャッシュ、MemAvailableがfreeのavailableに相当)
$ grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached|SReclaimable):' /proc/meminfo
この例では free が2.5GiBしかありませんが、available は5.1GiBあります。buff/cacheの2.8GiBの大半は、アプリがメモリを要求すれば解放されるためです。判定の基準は free ではなく available です。available の減少が続く場合はメモリ不足を疑い、メモリ圧迫による待ち時間やOOMの記録も確認します。スワップの増加は補助指標で、必須条件ではありません。コンテナでは、cgroup v2の説明にある memory.max(上限)と memory.events(上限到達やOOMの回数)も確認します。スワップを使う環境での確認はLinuxのスワップ領域(swap)とは|確認・推奨サイズ・vm.swappinessの設定の手順につながります。meminfoの各項目の意味を一覧で確認できるのは、カーネル公式ドキュメントの/procの説明です。
fincoreとdrop_cachesで1回目と2回目の読み込み時間の差を測る検証手順
ディスクキャッシュが効いている様子は、同じファイルを2回読むと数字で確かめられます。fincore(1)はutil-linuxに含まれ、ファイルの内容のうち何ページがメモリ上にあるかを数えるコマンドです(Ubuntu 24.04では util-linux-extra パッケージに入っています)。キャッシュの解放にはsysctl/vmの drop_cachesを使います。1でページキャッシュ、2で回収可能なスラブ(dentryやinode)、3で両方を解放し、ダーティなものは解放しない非破壊の操作です。先に sync を実行すると解放できる量が増えます。管理者権限のある専用Linux検証環境で実行してください。通常のDockerコンテナではdrop_cachesに書き込めない場合があります(この記事の計測は –privileged を付けて起動したコンテナで行いました)。
# 1GiBの検証用ファイルを作る
dd if=/dev/urandom of=/var/tmp/cachetest.bin bs=1M count=1024 status=none
# キャッシュを空にしてから、メモリ上にあるページ数を確認
sync; echo 3 | sudo tee /proc/sys/vm/drop_caches
fincore /var/tmp/cachetest.bin
# RES PAGES SIZE FILE
# 0B 0 1G /var/tmp/cachetest.bin
# 1回目:ディスクから読む
time cat /var/tmp/cachetest.bin > /dev/null
# 読んだ後はファイル全体がメモリ上に載る
fincore /var/tmp/cachetest.bin
# RES PAGES SIZE FILE
# 1G 262144 1G /var/tmp/cachetest.bin
# 2回目:ページキャッシュから読む
time cat /var/tmp/cachetest.bin > /dev/null
rm /var/tmp/cachetest.bin
RESはメモリ上にあるデータ量、PAGESはそのページ数です。この手順を3回繰り返した結果は次のとおりでした。
| 回 | 1回目(キャッシュなし) | 2回目(キャッシュあり) |
|---|---|---|
| 1 | 0.59秒 | 0.16秒 |
| 2 | 0.54秒 | 0.16秒 |
| 3 | 0.75秒 | 0.26秒 |
1回目と2回目の差が、その環境でのディスクキャッシュの効き目です。ここでは約3〜4倍でした。差はHDDやネットワーク越しのブロックストレージほど開きます。バッファードI/Oで初回読み込みを比較する場合は、各試行前にページキャッシュの状態をそろえます。直接I/Oを使う測定では、drop_cachesが必須とは限りません。
仮想マシンやクラウドでdrop_cachesの後も1回目が速いときの読み方
上の計測は、macOS上の仮想マシン(colimaのLinux VM)で動かしたDockerコンテナで取りました。この読み込み時間だけでは、ホスト側キャッシュにヒットしたか、物理ストレージから読んだかは判定できません。仮想マシンの仮想ディスクは、ホスト側から見ればただのファイルで、ホストOSにもページキャッシュがあります。ゲストで実行する drop_caches が解放するのはゲストのカーネルのキャッシュだけで、ホストやハイパーバイザー側のキャッシュは対象外です。
このため、仮想マシンやクラウドのインスタンスで測った「キャッシュなし」の値を、物理ディスクの性能と読み替えるのは避けてください。ストレージそのものを測るなら、fioの直接I/Oに加え、仮想ディスクのホスト側キャッシュ設定とストレージ側のキャッシュ条件も確認します。仮想マシンの構成と、物理マシン・コンテナとの違いは仮想マシンとは?物理マシン・コンテナとの違いで整理しています。
Windowsでディスクキャッシュを確認するタスクマネージャーとPowerShellの手順
手軽に見るならタスクマネージャーの「パフォーマンス」タブで「メモリ」を選び、「キャッシュ済み」の値を確認します。ファイルの読み書きに使われているキャッシュの量で、Linuxのbuff/cacheと同じく、その多くはアプリがメモリを必要とすれば明け渡されます。内訳はリソースモニターやRAMMapで確認し、空き容量とは区別して読みます。記録や監視に組み込むなら、PowerShellでパフォーマンスカウンタを読みます。以下はCIMクラスのプロパティを参照する例です。対象のWindows環境で各プロパティの取得結果を確認してください。
# システムのファイルキャッシュ(CacheBytes)、待機リスト、書き戻し待ち(ModifiedPageListBytes)をMB単位で表示
Get-CimInstance Win32_PerfFormattedData_PerfOS_Memory |
Select-Object @{n='CacheMB';e={[math]::Round($_.CacheBytes/1MB)}},
@{n='StandbyNormalMB';e={[math]::Round($_.StandbyCacheNormalPriorityBytes/1MB)}},
@{n='ModifiedMB';e={[math]::Round($_.ModifiedPageListBytes/1MB)}},
AvailableMBytes
ModifiedPageListBytes は、変更済みでディスクへの書き戻しを待っているページの量で、Linuxの Dirty に近い位置づけです。どのファイルがキャッシュに載っているかまで知りたい場合は、SysinternalsのRAMMap(2026年3月26日公開のv1.63が現行)が使えます。物理メモリの内訳をファイル単位で表示できます。
from disk cacheの意味とブラウザのCache-Controlによる制御
WebブラウザもOSとは別に、自前のディスクキャッシュとメモリキャッシュを持っています。「memory cache」はブラウザのプロセスがRAM上に持つコピーで、速い代わりにブラウザを閉じると消えます。「disk cache」はディスクに永続化されたコピーで、再起動後の再訪でも使われます。どちらから読むかはブラウザが判断し、保存の可否と期限はCache-Controlなどのヘッダに従います。
つまり「from disk cache」表示は、サーバーへ再リクエストせず表示できた効率の良い状態で、異常ではありません。最新内容を取り直したいときだけ、スーパーリロード(WindowsはCtrl+Shift+R、macOSはCommand+Shift+R)を使います。
Chrome開発者ツールのSize列で読み込み元を確かめてキャッシュを無効化する手順
Chromeでは、F12で開発者ツールを開き、Networkタブでページを再読み込みすると、Size列に読み込み元が表示されます。キャッシュから返ったリクエストには、転送サイズの代わりに「(memory cache)」や「(disk cache)」と出ます。初訪問と同じ条件で確かめるなら、Chrome DevToolsのNetwork機能リファレンスのとおり「Disable cache」にチェックを入れます。リクエスト一覧の右クリックで「Clear browser cache」を選べば、保存済みのキャッシュも消せます。
サーバーのCache-Controlヘッダによる再訪時のディスクキャッシュ制御
ブラウザがどれだけキャッシュを使うかを決めるのは、サーバーが返すヘッダです。MDNのCache-Controlの説明のとおり、max-age で再利用してよい秒数を、no-cache で「使う前に毎回サーバーへ確認」を、no-store で「保存しない」を指示します。Cache-Controlが無い場合でも、ブラウザは最終更新日時などから推測して保存することがあり、MDNのHTTPキャッシュの解説ではこの動作をヒューリスティックキャッシュと呼んでいます。自社サイトが何を返しているかは、次のコマンドで確認できます。
# レスポンスヘッダのうちキャッシュに関係する行だけを表示(URLは確認したいページに置き換える)
curl -sI https://example.com/ | grep -iE '^(cache-control|expires|etag|last-modified|age):'
更新しても古い表示が残る場合は、HTMLや関連ファイルのCache-Control、CDNの応答、Service Workerのキャッシュを順に確認します。CDNでの制御はCDNとは?仕組み・キャッシュ制御からサービスの選び方で、古いキャッシュを返しながら裏で更新する設定はstale-while-revalidateとは?Cache-Controlの設定例で解説しています。
After Effectsのディスクキャッシュ|計算済みフレームをSSDに置く設定と容量の決め方
動画編集ソフトの「ディスクキャッシュ」は、OSのものとは向きが逆です。After Effectsは、レンダリングしたフレームをディスク上のフォルダーに保存し、次のプレビューで再計算を省きます。RAMに収まらない分をディスクで受ける仕組みなので、保存先にはSSDなどの速いドライブが向きます。ファイルとして残るため、ストレージ容量を数十GB単位で使う点もOSのキャッシュと違います。
After Effectsの最大ディスクキャッシュサイズと保存先の決め方
After Effectsの環境設定ガイド(2026年3月27日更新)では、ディスクキャッシュの設定は「ディスク」パネルにあります。古い版の解説や一部のヘルプでは「メディア&ディスクキャッシュ」と書かれている項目です。主な項目は次のとおりです(ほかにロスレス圧縮でキャッシュを小さくする設定もあります)。
- ディスクキャッシュを有効にする:既定で有効。レンダリングしたフレームをディスクにキャッシュして再生を速くする。
- 最大ディスクキャッシュサイズ:ディスクキャッシュに使う上限。
- フォルダーを選択:保存場所を選ぶ。
- ディスクキャッシュを空にする:すべてのディスクキャッシュファイルを手動で消す。
- ディスクキャッシュからのプレビューを有効にする:RAMがいっぱいのとき、ディスクキャッシュから直接再生する。
上限の既定値は、メモリとストレージの説明によるとボリュームの合計サイズの10%で、最大100GBです。After Effectsは、設定したサイズに10GBを加えた空き容量があるかを確認し、足りなければ警告します。保存先については、ソースフッテージとは別の物理ディスクにあるフォルダーを選ぶよう案内しています。ドライブのルートフォルダーは指定できません。
判断は次のとおりです。容量に余裕のある別ドライブ(SSD)があるなら、そこを保存先にして上限を大きく取ります。パフォーマンス改善の案内でも、別の高速ドライブにできるだけ多くの容量を割り当てるよう勧めています。内蔵SSD 1台のノートPCで残り容量が少ないなら、上限を下げるか、制作が一区切りついた時点で「ディスクキャッシュを空にする」を押します。消えるのは計算済みのフレームだけで、プロジェクトや素材は消えません。次に開いたときにプレビューの再計算が走り、そのぶん待ち時間が戻ってきます。
Premiere Proのメディアキャッシュを古い順に自動で削除する設定
Premiere Pro(現在のAdobeヘルプでは「Premiere」と表記)が作るメディアキャッシュも、同じくディスク上のファイルです。メディアキャッシュの自動管理の説明(2026年1月21日更新)によると、既定は「キャッシュファイルを自動的に削除しない」です。「次より古いキャッシュファイルを自動的に削除」を選ぶと既定値は90日、「次のサイズを超えたら最も古いキャッシュファイルを自動的に削除」を選ぶと既定値はキャッシュがあるボリュームの10%です。設定は再起動後に有効になり、起動から10分後に削除が始まり、以後は毎週実行されます。既定のままだと溜まり続けるので、容量に悩むならどちらかを有効にしておくのが確実です。
ディスクキャッシュを削除するとどうなるか|OS・ブラウザ・アプリ別の判断
ブラウザや編集ソフトの再生成可能なキャッシュ、OSの書き戻し済みキャッシュは、所定の操作で削除しても元データを失いません。消えるのは「速く読むための写し」や「計算済みの結果」だけで、代わりに直後の動作が遅くなります。消すべきかは種類ごとに分かれます。
| 種類 | 消すと起きること | 消してよい場面 |
|---|---|---|
| OSのページキャッシュ | 直後の読み込みがディスクへ行く | ベンチマーク・効き目の検証 |
| ブラウザのdisk cache | 再訪時に再ダウンロード | 古い表示が残るとき |
| After Effectsのディスクキャッシュ | プレビューを再計算 | 容量が足りないとき |
| Premiere Proのメディアキャッシュ | 読み込み時に再生成 | 容量が足りないとき |
OSのディスクキャッシュは、通常運用では消しません。キャッシュが大きいのはRAMを遊ばせずに使えている証拠で、消して得られるのは空きメモリの数字が増えて見えることだけです。上の計測でも、キャッシュを空にした直後の読み込みは3〜4倍遅くなりました。Linuxの drop_caches はダーティなデータを解放しないので、実行してもデータは壊れません。
本当のメモリ不足のサインは別にあります。Linuxでは available の減少やメモリ圧迫による待ち時間、OOMの記録を確認します。スワップを使う環境で追加の兆候となるのは、vmstat の si/so 列(スワップイン・アウト)が常に動いている状態です。足りないのはキャッシュの掃除ではなく、メモリの増設か、メモリを食うプロセスの見直しです。クラウドなら、メモリの多いインスタンスタイプへの変更や、DBの読み込みをElastiCacheなどへ逃がす構成変更が選択肢になります。
一方、ブラウザとアプリのディスクキャッシュは、ストレージの空き容量を占めているので、消せば容量が戻ります。消すタイミングは、After Effectsならプロジェクトの区切り、ブラウザなら古い表示が直らないときです。サーバーのメモリ量とストレージ性能の見積もり、キャッシュ層を含めたクラウド基盤の構成を自社だけで決めきれない場合は、インフラ構築(AWS・Google Cloud・Azure)のサービスで、既存環境の計測からサイジングまで相談を受けています。
よくある質問
ディスクキャッシュについて検索の多い質問に、本文の内容を踏まえて答えます。
ディスクキャッシュとは簡単に言うと何ですか?
ディスクの読み書きを速くするため、よく使うデータを高速なメモリ側に一時的に置いておく仕組みです。遅いディスクへのアクセス回数を減らすのが目的で、データを貯め込む仕組みではありません。読み込み用のキャッシュは元データがディスクに残るため、消えてもデータは失われません。ただし書き込み用のキャッシュは、ディスクへ書き戻す前に電源が切れると直近の書き込みが失われることがあります。
ディスクキャッシュとキャッシュメモリの違いは何ですか?
キャッシュメモリはCPU内部にあるL1〜L3の超高速メモリで、CPUとRAMの速度差を埋めます。ディスクキャッシュはRAMやドライブ内バッファにディスクの内容を置き、RAMとディスクの速度差を埋めます。置く場所と、肩代わりする相手が違います。
ブラウザの「from disk cache」とは何ですか?
再訪したページの一部を、サーバーに再リクエストせずディスク上の保存物から読み込んだことを示す表示です。ブラウザを閉じずに同じページを開き直した場合は、より速い「memory cache」が使われることが多く、ブラウザ再起動後の再訪では「disk cache」が使われます。いずれも正常な動作で、最新化したいときはスーパーリロードします。
ディスクのキャッシュを削除するとどうなりますか?
OSやアプリの所定の操作で消す限り、保存済みのデータは消えず、直後の動作が遅くなります。OSのページキャッシュなら次の読み込みがディスクへ行き、ブラウザなら再訪時に再ダウンロードし、After Effectsならプレビューを再計算します。OSのキャッシュは必要に応じて自動で解放されるので、通常は消す必要がありません。ストレージを使っているブラウザやアプリのキャッシュは、容量が足りないときに消してかまいません。
ディスクキャッシュはLinuxとWindowsでどう確認しますか?
Linuxでは free -h のbuff/cache列はバッファ、ページキャッシュ、回収可能なスラブの合計です。メモリの余裕はavailable列を起点に確認します。ファイル単位でキャッシュに載っているかは fincore で確認します。Windowsではタスクマネージャーの「パフォーマンス」→「メモリ」にある「キャッシュ済み」を見るか、PowerShellで Win32_PerfFormattedData_PerfOS_Memory の CacheBytes を読みます。ファイル単位の内訳はSysinternalsのRAMMapで表示できます。