Swappinessとは何か

—

by

in

Swappiness設定

Ubuntu 26.04では、メモリ圧迫時にスワップ領域へデータを移すタイミングを制御する swappiness パラメータが依然として重要です。デフォルトは 60 に設定されていますが、デスクトップ環境やサーバー用途に合わせて最適化することで、パフォーマンスとスムーズな操作性を向上させることができます。

目次

Swappinessとは何か

Linux カーネルは、物理メモリが一定の閾値を下回ったときにスワップ領域へページを書き出します。その閾値を数値で表したものが swappiness です。

  • 0  →  可能な限り物理メモリを使い続け、スワップはほぼ使用しない。
  • 100 →  メモリが多少残っていてもすぐにスワップへデータを移す。
  • デフォルトの 60 は、バランスの取れた中間値です。

スワップはディスク I/O を伴うため、頻繁に使用するとレスポンスが低下します。一方、メモリ不足でページングが頻繁に起きると、システム全体が遅くなります。適切な swappiness 設定は、これらのトレードオフを最適化します。

現在のSwappiness値の確認方法

ターミナルで以下のコマンドを実行してください。

cat /proc/sys/vm/swappiness

例:

$ cat /proc/sys/vm/swappiness
60

一時的に変更する手順

システムを再起動せずに即座に値を変更したい場合は、sysctl コマンドを使います。

# 例: 10 に設定(デスクトップ向き)
sudo sysctl vm.swappiness=10

# 設定が反映されたか確認
cat /proc/sys/vm/swappiness

この変更はランタイムメモリ上にのみ残り、次回起動時に元に戻ります。

永続的に設定を保存する方法

再起動後も設定を保持したい場合は、2 つの方法が一般的です。

1. /etc/sysctl.d/ にカスタムファイルを作成

# /etc/sysctl.d/99-custom-swappiness.conf
vm.swappiness = 10

作成後、次のコマンドで直ちに反映させます。

sudo sysctl --system

2. /etc/sysctl.conf に追記

# /etc/sysctl.conf の最後に追加
vm.swappiness = 10

どちらの方法でも同様に機能しますが、/etc/sysctl.d/ はパッケージやアップデートが上書きしにくい点で推奨されます。

用途別おすすめ設定値

利用シーン 推奨 Swappiness 値 ポイント
一般的なデスクトップ(Web閲覧・文書作成) 10〜15 スワップを極力使わず、ディスクI/Oを減らす。
開発環境(IDE・コンテナ・VM を多用) 20〜30 メモリ使用量が変動しやすいので、適度にスワップを許容。
サーバー(データベース・Webサーバー) 60(デフォルト) 安定稼働が最優先。メモリ不足時にスワップでクラッシュ回避。
高負荷計算・科学技術計算(HPC) 0〜5 スワップは致命的な遅延になるため、物理メモリが十分にある前提。

設定変更時のトラブルシューティング

注意: Swappiness の過度な低減は、システムがメモリ不足になると OOM(Out Of Memory)キラーがプロセスを強制終了させるリスクがあります。特にサーバー環境では慎重にテストしてください。
  • 変更が反映されていない
    • ファイルの書式が正しいか確認(vm.swappiness = 10 のスペースや「=」の前後に不要な文字が無いか)
    • sudo sysctl --system 実行後に cat /proc/sys/vm/swappiness で再確認
  • スワップが頻繁に使用される
    • 物理メモリが足りているか free -h でチェック
    • 不要なサービスやデーモンを停止し、メモリフットプリントを削減
    • 必要なら SSD ベースのスワップ領域を拡張(性能向上)
  • システムが遅くなる/フリーズする
    • Swappiness を低めすぎた結果、OOM キラーが作動していないか dmesg | grep -i kill で確認
    • 一時的に vm.swappiness をデフォルトに戻し、負荷プロファイルを再評価

まとめ

Ubuntu 26.04 でも swappiness のチューニングはシステムレスポンス向上の鍵です。まずは現在値を確認し、デスクトップなら 10〜15、サーバーならデフォルトの 60 というように、実際の使用シーンに合わせて調整してみましょう。設定は /etc/sysctl.d/ に永続化するだけで完了です。

本記事を参考に、快適な Ubuntu 体験を手に入れてください!