Open1

スワップ領域について

ひでひで
  1. スワップ領域とは:
  • 物理メモリ(RAM)の補助として使用される領域
  • ハードディスク上の仮想メモリ領域
  • メモリが不足した時に使用される
  • 通常のRAMより遅いが、メモリ不足時の安全装置として機能
  1. スワップ領域の確認コマンド:
# 現在のスワップ使用状況を確認
free -h

# スワップ領域の詳細確認
swapon --show

# すべてのスワップ領域を表示
cat /proc/swaps

# システムのメモリ状態を確認
vmstat
  1. スワップ領域の作成方法:

A. スワップパーティションの作成:

# パーティション作成
sudo fdisk /dev/sdb
# nで新規パーティション
# tでパーティションタイプを82(Linux swap)に変更

# スワップ領域のフォーマット
sudo mkswap /dev/sdb1

# スワップの有効化
sudo swapon /dev/sdb1

B. スワップファイルの作成:

# 2GBのスワップファイル作成
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

# スワップファイルの権限設定
sudo chmod 600 /swapfile

# スワップとしてフォーマット
sudo mkswap /swapfile

# スワップの有効化
sudo swapon /swapfile
  1. 永続的な設定:

/etc/fstabへの追加:

# スワップパーティションの場合
/dev/sdb1 none swap sw 0 0

# スワップファイルの場合
/swapfile none swap sw 0 0
  1. スワップ関連のカーネルパラメータ:
# 現在の設定確認
cat /proc/sys/vm/swappiness

# 一時的な変更
sudo sysctl vm.swappiness=60

# 恒久的な変更(/etc/sysctl.confに追加)
vm.swappiness = 60

swappinessの値:

  • 0: できるだけスワップを使用しない
  • 60: デフォルト値
  • 100: 積極的にスワップを使用
  1. スワップ領域のサイズ計算:

一般的な目安:

  • RAM 2GB未満:RAMの2倍
  • RAM 2GB-8GB:RAMと同量
  • RAM 8GB以上:必要に応じて(最低4GB程度)
  1. スワップの管理コマンド:
# スワップ領域の有効化
sudo swapon /dev/sdb1

# スワップ領域の無効化
sudo swapoff /dev/sdb1

# すべてのスワップを無効化
sudo swapoff -a

# 優先度の設定
sudo swapon -p 1 /dev/sdb1
  1. パフォーマンス監視:
# スワップの使用状況監視
watch -n 1 'free -h'

# 詳細な統計情報
vmstat 1

# プロセスごとのスワップ使用量
for file in /proc/*/status ; do
    awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file
done | sort -k 2 -n -r | head
  1. トラブルシューティング:

A. スワップ領域が足りない場合:

# 新しいスワップファイルの追加
sudo dd if=/dev/zero of=/swapfile2 bs=1M count=2048
sudo chmod 600 /swapfile2
sudo mkswap /swapfile2
sudo swapon /swapfile2

B. パフォーマンス問題:

# スワップ使用率の確認
free -h

# 高負荷プロセスの特定
top
  1. 重要な注意点:
  • システムの総メモリ = 物理メモリ + スワップ領域
  • スワップの過度な使用はパフォーマンス低下の原因に
  • ハイバネーション使用時はRAM以上のスワップが必要
  • SSDでのスワップ使用は書き込み回数に影響