Linux SWAP をパーテションでなくファイルに設定[3分クッキング]

これだけ知っていればLinuxのSWAP設定では困らないハズ[3分クッキング]とSWAP高速化[追記]

1週間ぐらい起動しっぱなしでこんなかんじ。

Ryzen3600Xに変更していろいろ変えたので、考え方も少し変わりましたので一部改稿しました。

標準で不満のない場合は、デフォルトでいいかと思います。(ManjaroLinux 及び ubuntu18.04LTS等どのディストロでも同じです。

LinuxMintでSWAP指定なしでインストールしてみたところ、デフォルトでファイル型SWAPを少し作りました。)

DDR4メモリーもやっと安くなったので(2019-03-28)、メモリーを足すのが一番ですね。
超高騰していた2018年初頭に比べて半値になっています。

ミニ知識というか7つの見解::Swap戦略

  1. スワップはぎりぎり(搭載メモリ+ほんの少しプラスアルファ)サイズよりも大きいほうがハイバネなどが速くなるようだ。余裕があればメモリーの2.0倍などにする。例:16GB(搭載RAM)なら32GB(SWAP)程度など。
  2. だからといって、M2.SSDは貴重なのでめったに使わないSWAPならHDD上でもいいのではないか。SSDが余っており2台あるなら、余っているほうにSWAPを設定してみるといいかもしれない。
  3. 複数のスワップを指定でき同時に利用できる。いくらでもOK。
  4. 複数のそれぞれの優先度なども変更できる。かなり柔軟。
  5. 搭載メモリーがじゅうぶん(たとえば16GBでブラウジング程度の使い方)で、ハイバネも必要ないなら、SWAPは無効でよい。むしろいらない。
  6. メモリーがじゅうぶんであれば、ZRAMは不要。2GBの以下の人は考慮。
  7. fstabの同一プライオリティで、SWAPをふたつ設定すると、RAID0みたいな効果がデフォルトで働くらしい。archwiki.

リアルタイムっぽい処理とスワップ、Jackなどでぎしぎしと使うぜって場合

Bitperfectを狙うなら、SWAPはないほうがよい。十分なメモリーさえあればいい。

How to make SWAP File::設定手順 5つのコマンドで完了します。

swapfileはWindowsのpagefile、hiberfil だとかそのあたりみたいなものだと思っておけばだいたい間違いないです。

以下、Windows10(RAWインストール)を見てみました。それっぽいファイルは3つです。合計してみると巨大なんですよね。
  •  hiberfil.sys Windwos10でハイバネしない人には不要。
  •  pagefile.sys Windows3.1の頃からこの名前
  •  swapfile.sys 名前のままの期待役割

さて、Linuxの話に戻ります。例として、/media/Working  というマウントに対して、そのルートにスワップファイル /media/Working/swapfile を作成し有効にしてみます。

新規端末 CTRL+ALT+T
1) スワップファイル(にする前のファイル)を 
32GBにする例::空ファイルを作ると思えばいいです。名前はなんでもいい。
$ sudo fallocate -l 32G /media/Working/swapfile

2)パーミッションを変更する。この時点ではまだ役立たずの実質能無しファイル。
$ sudo chmod 600 /media/Working/swapfile 

3)さきほど作ったファイルの中身をスワップファイルにする。やっとswapファイルに変化しました。Swapファイルの誕生です。
$ sudo mkswap /media/Working/swapfile 
スワップ空間バージョン 1 を設定します。サイズ = 32 GiB (34359734272 バイト)
ラベルはありません, UUID=8dce31da-055c-4649-949e-941e967489aa

※ラベルは必要ありません。

4)スワップファイルを明示指定して、onにする。
$ sudo swapon /media/Working/swapfile 

5)恒久的にスワップファイルを有効にするために、fstabを編集する。
$ sudo gedit /etc/fstab

追記 最終行にでも。 これで再起動してもOK。

/media/Working/swapfile none swap defaults 0 0





おまけ::当方の場合 LVM に設定しています。

パーテション指定従来方式) lvmから切り出したスワップパーテーション(50GB)があったのを思い出した(わざとらしい)のでそちらを有効にする。

#lvm上のswap区画を指定して有効にします。fstabに追記。

/dev/lvm-second/swaproom none swap defaults 0 0

おまけ2::システムモニターなどでも視覚的に確認できますが。
次のコマンド1行でもswapは確認できます。

/dev/lvm-second/swaproom がswapとして使われているか?!

$ cat /proc/swaps
Filename

/dev/dm-3                               partition

LVM(ボリュームマネージャからの切り出し)なので。
パーテションが固定なら、/dev/dm-3  という指定でもいいかと思いますが、名前で管理するほうが楽なので 

追記::ストレージ構成を大きく変更して、EXT4 on LVM(HDD) と RAWなBTRFS(RAID0)にしたため、現在の自分の環境ではlvm上にSWAPファイルを一つ作成しています。SSDにおいていたSWAPは削除しました。メモリーとNVMeを近い時期に購入しますので暫定ですね。


オススメ 追記::2つ以上のswapを使う戦略

同一プライオリティなら、ストライピングと同じ効果が得られる。
pri=99 などを明示的に指定するとわかりやすくていい。

翻って、優先順位を変えることもできる。可能なかぎり高速にSWAPする。

例: NVMe と SATA SSD のそれぞれにSwapを作成し、NVMe優先で使う。

#上、高速(NVMe      3000MB/s)
#下、低速(SATA SSD   500MB/s)
/home/swapfile
/media/Working/swapfile none    swap    defaults,pri=9

Swap優先度を同じにする。ストライピングになる。この構成の場合はかえって遅くなる。

/home/swapfile                  none    swap    defaults,pri=99
/media/Working/swapfile none    swap    defaults,pri=99

最近の大事な発見、というか当り前の再認識

概ねリード3000MB/s以上で高速に動作するNMVeなら、SATAなSwapに比べて、Swapしてもかなり円滑なデスクトップ操作が維持できる。大発見、感動。

これを踏まえた結論::
メモリーが安くなったので、メモリーを買えばいいです。笑)
でもかなりいい線行きますよ。あたりまえの話ですが。

NVMeに乗り換えたのにうっかりSWAPをHDDなどに指定したままの人はチェックしてみてください。

デスクトップ用途のLinuxでは、32GB積んでいれば、SWAPにがんがん入るようなケースはまずないと思います。16GBの人は考えどころでしょう。


Namida Zone :: 神々は細部に宿る――涙とともに、夜な夜なパンをかじった。

Grub2をめぐるあれこれ。テーマ、背景、フォント。それが Cute Grub 計画

No Copyright Girl / ノーコピーライトガール Grubと戯れるという意味のない日常:: Cute Grub 計画 コンピューターの電源オン後、 OS オペレーティングシステムを起動するためのブートローダーが先ず動きだす――ほぼすべてのLinux...