コンテンツへスキップ
Latchkey

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に制限されます。

よくある質問

What is What is a tmpfs??
A tmpfs puts files in RAM rather than on persistent storage. Reads and writes are extremely fast, but everything vanishes when the system reboots or the mount is removed. On Unix, locations like /tmp or /dev/shm are often backed by tmpfs. In CI, a tmpfs can dramatically speed up build steps that thrash the filesystem.
What a tmpfs is?
A tmpfs is an in-memory filesystem. Files written to it live in RAM (spilling to swap if needed), so access is fast, but the contents do not survive a reboot or unmount.

関連ガイド