スワッピング(スワッピング)
メモリ不足時に物理 RAM の内容をストレージ(スワップ領域 / ページファイル)に退避させる仕組み。性能は大幅劣化するが OOM クラッシュを回避する。
概要
スワッピング(Swapping / Paging)は、メモリ(RAM)が不足した時に、使用頻度の低いメモリ内容をストレージ(HDD / SSD)に退避させ、空いた RAM を別用途に使う OS の仕組みを指す。物理 RAM 容量を超えるアプリケーション群を仮想的に同時実行できる「仮想メモリ」の中核技術である。1960 年代の Atlas Computer 由来で、2026 年現在も Linux / Windows / macOS の全主要 OS で必須機能として残る。NVMe SSD の普及で速度ペナルティは大幅に減ったが、それでも RAM の 100-1000 倍遅いため、可能な限り発生させない設計が望ましい。
OS 別のスワップ実装
Linux
# スワップ状況確認
swapon --show
free -h
# swapfile 作成(4GB)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永続化
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
| 設定 | 用途 |
|---|---|
| swap partition | 伝統的、ディスク末尾配置 |
| swapfile | 柔軟、サイズ変更容易 |
| ZRAM | 圧縮スワップ、高速 |
| ZSwap | ハイブリッド、L1 ZRAM + L2 disk |
| swappiness(0-100) | スワップ積極性、デスクトップは 10、サーバは 60 |
Windows
# ページファイル状況確認(コントロールパネル / システムプロパティ)
Get-WmiObject Win32_PageFileSetting
# サイズ自動管理 ON / OFF
# システムのプロパティ → 詳細設定 → パフォーマンス設定 → 詳細
- pagefile.sys: C:\ ルートに自動作成、デフォルトでシステム管理サイズ
- Memory Compression: Windows 10+ で有効、RAM 内圧縮でスワップ頻度減
- Reserve Memory: 一部メモリを予約、SSD 寿命対策
macOS
# スワップ使用量確認
sysctl vm.swapusage
# 例: total = 4096.00M used = 156.50M free = 3939.50M
# 場所
ls -la /private/var/vm/swapfile*
- 動的スワップ: macOS が必要に応じて自動拡張、ユーザ操作不要
- Memory Pressure: アクティビティモニタで色別に状態表示(緑 / 黄 / 赤)
ZRAM(圧縮スワップ)
# Ubuntu 22.04+ / Fedora 等で標準利用可
sudo modprobe zram
echo zstd | sudo tee /sys/block/zram0/comp_algorithm
echo 4G | sudo tee /sys/block/zram0/disksize
sudo mkswap /dev/zram0
sudo swapon -p 100 /dev/zram0
- 圧縮アルゴリズム: zstd(高圧縮)/ lz4(高速)
- 圧縮率: 平均 2-3 倍、テキストデータは 5 倍以上
- CPU オーバーヘッド: 数 % 程度、SSD スワップより高速
SSD 寿命との関係
- 書き換え回数: TLC SSD で 600-1500 P/E、Samsung 990 Pro 2TB は 1200 TBW
- 頻繁なスワップ: 1 日 50 GB 書き込みで 65 年寿命(実用上問題なし)
- OPTANE(廃番): 1000 万 P/E、スワップに最適だったが Intel が事業停止
- 対策: 32 GB+ RAM 確保 + ZRAM 併用で物理スワップを回避
用途別の推奨設定
| 環境 | RAM | swap | swappiness |
|---|---|---|---|
| デスクトップ Linux | 32 GB | swapfile 4-8 GB | 10 |
| ゲーミング Windows | 32 GB | システム管理 | 自動 |
| サーバ Linux | 64 GB | partition 16 GB | 60 |
| AI/ML ワークステーション | 128 GB | swap 32 GB(巨大データ用) | 5 |
| Mac DTM/動画制作 | 64 GB | システム動的 | 自動 |
関連用語との違い
| 用語 | 違い |
|---|---|
| 仮想メモリ | 概念全体、スワッピングはその実装手法 |
| ページング | 4KB 単位の細かい交換、スワッピングはプロセス全体 |
| OOM Killer | メモリ枯渇時にプロセス強制終了する仕組み |
| ZRAM | 圧縮スワップ、ストレージ書込みなし |
よくある質問
Q1: 32 GB RAM ならスワップは不要? A: 通常は不要だが、Hibernate(休止状態)に RAM サイズと同等のスワップが必要。Linux で休止使うなら 32-64 GB swap、Windows でハイブリッドスリープなら 16 GB は確保。
Q2: SSD のスワップで寿命は縮む? A: 現代の TLC NVMe SSD では実質無視できる。Samsung 990 Pro 2TB は 1200 TBW、1 日 50 GB スワップでも 65 年。32 GB RAM + 必要時のみスワップなら 100 年以上。
Q3: ZRAM と SSD スワップ、どちらが先に効く? A: 優先度設定(swapon -p)次第。ZRAM を高優先(100)、SSD を低優先(10)にして、まず ZRAM で圧縮、それでも足りなければ SSD へという階層化が定石。
まとめ
- メモリ不足時に RAM 内容をストレージへ退避 する OS 機能
- 2026 年も全主要 OS で必須、NVMe SSD で速度ペナルティ減
- 32 GB+ RAM + ZRAM で物理スワップを回避するのが最新ベストプラクティス