1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux Swapまとめ

Posted at

以下はlinux使いによるめも書きです
ご自由にお使いください

First of all

以下で状態確認

sudo swapon -s

これでオン/オフ
-pオプションはpriorityで高いデバイスが優先して使われる

sudo swapon /dev/sdaX -p -2
sudo swapoff /dev/sdaX

簡易的なスワップファイルによるスワップの有効化

スワップファイルによるスワップは以下のようにする(例は1GiBのファイル)
本来なら/swapfileではなくパーティション/dev/sdaXなどにすべきだがパーティションをいじるのがやや面倒くさいクラウド環境等では重宝する

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

永続化

/etc/fstab に追加

/swapfile none  swap   sw  0      0

有効化

sudo swapon -a
free -h

swappiness

swappinessはおおきくなるほど不要なメモリーをディスクに追い出すようになる
デフォルトだとおおきくすぎてメモリーが余っていてもスワッピングしてしまうのでちいさくする
/etc/sysctl.d/local.conf

vm.swappiness = 10

以下で有効化

sudo sysctl -p /etc/sysctl.d/local.conf

確認

sysctl -n vm.swappiness

一時的であれば以下でもよい

sudo sysctl -w vm.swappiness=10

/proc/sys/vm/swappinessで設定することも可能だがやや古い書き方だと思う

zram

CPUを使った圧縮により、より多くのメモリーが載っているように見せるモジュール

以前はzswapもあったが取り扱いのしにくさから現在はzramが主流のよう

標準で入ってることもある

zram
ZRAMCTL(8)

以下で確認
なお普通にマウント/アンマウントできる
マウントされていない場合は2つ目のコマンドでみつけられる

zramctl

zramctl --find

再設定する場合は以下でまずリセット

sudo swapoff /dev/zram0
sudo zramctl -r /dev/zram0

以下で使われていないzramデバイスを探し出して設定する

sudo zramctl --find -a lz4 --size 512M --streams 4
sudo mkswap /dev/zram0
sudo swapon /dev/zram0 -p 100

アルゴリズムは以下で確認/設定できる

cat /sys/block/zram0/comp_algorithm
lzo lzo-rle [lz4] lz4hc 842 zstd

永続化

起動時に自動でzramをセットアップするサービスが存在する
/etc/systemd/zram-generator.conf

[zram0]
zram-fraction = 1.0
max-zram-size = 512
swap-priority = 100
compression-algorithm = lz4

起動中に再設定するにはswapoffした後以下のコマンドを実行する

sudo /usr/lib/systemd/system-generators/zram-generator --reset-device zram0
sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service

以下でloadされているか確認

sudo systemctl status systemd-zram-setup@zram0.service

lz4 (おまけ)

lz4は高速性に重きをおいた圧縮アルゴリズムである
圧縮はしたいが速度を犠牲にしたくない場面でよく用いられる
最近はzstd(ZStandard)も人気
高速な圧縮はsnappyなどがはじまりだろうと思う
ドラゴンクエストXは「世界は一つ」を実現するためにどのようなサーバ構成にしているのか?
『大乱闘スマッシュブラザーズ SPECIAL』容量とビルド時間圧縮に立ち向う方法が語られたCEDECセッションレポ【CEDEC 2019】
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる | PPT

earlyoom

linuxにはOOM(Out of Memory)機能がありメモリーが満杯になると不要なプロセスをキルするようになっているがギリギリにならないと機能しない等あまり使い勝手がよくないので予防的にOOMするデーモンが存在する(Fedora等には標準搭載)

/etc/default/earlyoom

EARLYOOM_ARGS="-r 0 -m 7,1 -s 10 --prefer '^(process_name_low_priority)$' --avoid '^(process_name_high_priority)$'"
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?