Ubuntu22.04/メモリ不足対応のためスワップ領域を追加する
はじめに
以前使っていたPCにUbuntuを入れてみました。
ブラウザやIDEなどを開いているとちょいちょい固まるので、メモリ不足が疑われました。
メモリ不足に対しては、スワップ領域を追加すると良さそうなので、手順をまとめておきます。
そもそもスワップって何
メモリが足りないときに、メモリの中身をハードディスクに移すことで、実際のメモリよりも大きなメモリを扱えるという機能です。
手順
1. スワップ情報を確認
$ sudo swapon --show
上記コマンドで、出力がない場合、現在使用可能なスワップ領域がないということになります。手順3のスワップファイルの作成に進んでください。
下記のような出力が出る場合は、現在スワップ領域があるということになります。
NAME TYPE SIZE USED PRIO
/swapfile file 8G 0B -2
スワップ領域を変更する場合は
- 現在のスワップ領域を一度削除して新しく作り直す
- 新しいswapfileを作り、そちらのswapfileを適用させる
という2つの方法があります。
削除する場合は手順2を、新しく作る場合は手順3を参照してください。
尚、新しく作る場合は、すでにswapfileがあるため、swapfile2など違う名前で作ってあげればOKです。
2.スワップファイル削除
不要な方はこの手順スキップ
1.スワップの解除をする
$ sudo swapoff -v /swapfile
2./etc/fstab
のswapの情報を削除
/etc/fstab
の中に下記のような行があるため、削除する
/swapfile none swap sw 0 0
3.スワップファイルを削除する
$ sudo rm /swapfile
3.スワップファイルの作成
1.ハードディスクの空き領域を確認
$ df -h
上記コマンドを打って、Mounted onの列が「/」のものがのAvailが空き容量です。
下記の例だと200Gが空き容量となります。
Filesystem Size Used Avail Use% Mounted on
tmpfs 768M 2.4M 765M 1% /run
/dev/nvme0n1p2 234G 23G 200G 11% /
tmpfs 3.8G 118M 3.7G 4% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/nvme0n1p1 511M 5.3M 506M 2% /boot/efi
tmpfs 768M 4.7M 763M 1% /run/user/1000
2.スワップ領域の割当
環境のメモリの半分~同じくらいのメモリが目安みたいです。
メモリが8GBなら4~8GBです。
$ sudo fallocate -l 8G /swapfile
3.確認
$ ls -lh /swapfile
-rw-r--r-- 1 root root 8.0G 1月 30 00:13 /swapfile
4.パーミッション変更
$ sudo chmod 600 /swapfile
$ ls -lh /swapfile
-rw------- 1 root root 8.0G 1月 30 00:13 /swapfile
5.スワップファイルへの変換
$ sudo mkswap /swapfile
スワップ空間バージョン 1 を設定します。サイズ = 8 GiB (8589930496 バイト)
6.スワップファイルの登録
$ sudo swapon /swapfile
スワップ空間バージョン 1 を設定します。サイズ = 8 GiB (8589930496 バイト)
7.確認
1つ目
sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 8G 0B -2
2つ目
free -h
total used free shared buff/cache available
Mem: 7.5Gi 4.2Gi 851Mi 1.2Gi 2.4Gi 1.8Gi
Swap: 8.0Gi 0B 8.0Gi
4.スワップファイルの永続化
再起動するとスワップの設定が消えてしまうため、変更を永続化させてあげる必要があります。
1./etc/fstab
のバックアップ
/etc/fstab
を変更しますが、何が問題が起きてもいいようにバックアップをとっておきます。
$ sudo cp /etc/fstab /etc/fstab.bak
2.スワップ永続化の設定
$ sudo sh -c "echo /swapfile none swap sw 0 0 >> /etc/fstab"