FreeBSDのRAM使用量報告の仕組みを解説
원제: FreeBSD ate my RAM
왜 중요한가
OSのメモリ管理の仕組みを正確に理解することは、サーバー運用やパフォーマンス診断において誤判断を防ぐために重要である。
エンジニアのBruno Crociは2026年7月2日、FreeBSDのRAM使用量がツールによって異なって表示される理由を調査・解説した記事を公開した。OSがディスクキャッシュをRAMに積極的に活用するため、使用量が多く見えるが、実際には必要に応じて解放される揮発性キャッシュであることが原因だと説明している。
Bruno Crociは、自身のサーバーをUbuntuからFreeBSDへ移行した際に、`fastfetch`と`btop`でRAM使用量の表示が異なることに気づき、その原因を数週間かけて調査した結果をまとめた。
FreeBSDを含む現代のOSはVirtual Memory(VM)システムを採用しており、物理メモリを通常4KiBのページ単位に分割して管理している。FreeBSDでは、ページキューを`PQ_INACTIVE`、`PQ_ACTIVE`、`PQ_LAUNDRY`、`PQ_UNSWAPPABLE`などに分類し、状況に応じてページを移動させる仕組みになっている。
`top`コマンドはこれらを詳細に表示する。`active`は現在使用中のページ、`inactive`はしばらくアクセスされていないページ、`laundry`はスワップへの書き出し待ちのページ、`wired`はカーネル自身が使用する管理対象外のメモリ、`free`は純粋な未使用メモリを指す。
OSはパフォーマンス向上のためにディスクのデータをRAMにキャッシュするが、このキャッシュは揮発性であり、メモリが必要になれば解放される。この動作により、ツールによってはRAM使用量が実際より多く見える場合がある。なお、同様の現象はLinuxでも「Linux ate my RAM」として知られており、FreeBSDでも同じ原理が働いていることをCrociは確認している。