tmpfsとは?インメモリファイルシステム
tmpfsは、ファイルをディスクではなくメモリ (RAM) に格納するファイルシステムで、非常に高速ですが揮発性です。
tmpfsは、ファイルを永続ストレージではなくRAMに置きます。読み書きは極めて高速ですが、システムが再起動したりmountが解除されたりするとすべて消えます。Unixでは、/tmp や /dev/shm のような場所がtmpfsで裏付けられていることがよくあります。CIでは、tmpfsがファイルシステムを酷使するbuildステップを劇的に高速化できます。
tmpfsとは何か
tmpfsはインメモリファイルシステムです。そこに書き込まれたファイルはRAMに存在し (必要ならswapにあふれます)、アクセスは高速ですが、内容はrebootやunmountを生き延びません。
速度対永続性
ディスクが関与しないため、tmpfsはディスクレイテンシを完全に回避し、一時的で使い捨てのデータに最適です。トレードオフは揮発性で、保持する必要があるものはmountが消える前に別の場所にコピーしなければなりません。
どこで見かけるか
- /tmp はLinuxでしばしばtmpfsで裏付けられています。
- /dev/shm は共有メモリ用のtmpfsです。
- コンテナはスクラッチ領域のためにtmpfsをマウントできます。
メモリが上限
tmpfsはRAMを消費するため、大量のデータをそこに書き込むとメモリを使い果たし、out-of-memory killを引き起こすことがあります。そのサイズは、広々としたディスクとは違い、利用可能なメモリに制限されます。
CIにおけるtmpfs
コンパイラやテストスイートのように重い一時I/Oを行うbuildやテストは、スクラッチディレクトリがtmpfs上にあると著しく高速に実行できます。難点はメモリで、tmpfsにギガバイト単位の一時データを書き込むbuildはrunnerのRAMを使い果たすことがあります。
マネージドrunnerでの高速スクラッチ
Latchkeyのrunnerでは、buildの一時ディレクトリをtmpfsに向けると、runnerに十分なメモリがあればI/Oバウンドのステップを高速化できます。runnerを適切にサイジングすれば、out-of-memory killなしに速度を享受する余裕が得られます。
重要なポイント
- tmpfsはインメモリファイルシステムで、非常に高速ですが揮発性です。
- /tmp や /dev/shm のような場所はしばしばtmpfsで裏付けられています。
- CIでは、tmpfsはI/Oの重いステップを高速化できますが、RAMに制限されます。