コアが32のシステムでサービスを有効にしようとすると、zram
デバイスの数が26を超えるとサービスは失敗します。さらに、構成ファイルは表示されず、ユーティリティのみが表示され、zramctl
直面する問題の明確なオプションはリストされません。
light-18-pro:~ # lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 300G 0 disk
├─sda1 8:1 0 500M 0 part /boot/efi
├─sda2 8:2 0 35G 0 part /
├─sda3 8:3 0 1.9G 0 part [SWAP]
├─sda4 8:4 0 10G 0 part /home
└─sda5 8:5 0 223.5G 0 part /data
sr0 11:0 1 4G 0 rom
zram0 253:0 0 1002.3M 0 disk [SWAP]
zram1 253:1 0 1002.3M 0 disk [SWAP]
zram2 253:2 0 1002.3M 0 disk [SWAP]
zram3 253:3 0 1002.3M 0 disk [SWAP]
zram4 253:4 0 1002.3M 0 disk [SWAP]
zram5 253:5 0 1002.3M 0 disk [SWAP]
zram6 253:6 0 1002.3M 0 disk [SWAP]
zram7 253:7 0 1002.3M 0 disk [SWAP]
zram8 253:8 0 1002.3M 0 disk [SWAP]
zram9 253:9 0 1002.3M 0 disk [SWAP]
zram10 253:10 0 1002.3M 0 disk [SWAP]
zram11 253:11 0 1002.3M 0 disk [SWAP]
zram12 253:12 0 1002.3M 0 disk [SWAP]
zram13 253:13 0 1002.3M 0 disk [SWAP]
zram14 253:14 0 1002.3M 0 disk [SWAP]
zram15 253:15 0 1002.3M 0 disk [SWAP]
zram16 253:16 0 1002.3M 0 disk [SWAP]
zram17 253:17 0 1002.3M 0 disk [SWAP]
zram18 253:18 0 1002.3M 0 disk [SWAP]
zram19 253:19 0 1002.3M 0 disk [SWAP]
zram20 253:20 0 1002.3M 0 disk [SWAP]
zram21 253:21 0 1002.3M 0 disk [SWAP]
zram22 253:22 0 1002.3M 0 disk [SWAP]
zram23 253:23 0 1002.3M 0 disk [SWAP]
zram24 253:24 0 1002.3M 0 disk [SWAP]
zram25 253:25 0 1002.3M 0 disk [SWAP]
zram26 253:26 0 1002.3M 0 disk
zram27 253:27 0 1002.3M 0 disk
zram28 253:28 0 1002.3M 0 disk
zram29 253:29 0 1002.3M 0 disk
zram30 253:30 0 1002.3M 0 disk
zram31 253:31 0 1002.3M 0 disk
エラーメッセージは次のとおりです。
light-18-pro:~ # systemctl status zramswap.service
● zramswap.service - Service enabling compressing RAM with zRam
Loaded: loaded (/usr/lib/systemd/system/zramswap.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2021-03-09 09:59:46 CET; 2h 13min ago
Process: 2048 ExecStart=/usr/sbin/zramswapon (code=exited, status=255)
Main PID: 2048 (code=exited, status=255)
Mar 09 09:59:46 light-18-pro zramswapon[2048]: swapon: /dev/zram26: swapon failed: Operation not permitted
Mar 09 09:59:46 light-18-pro zramswapon[2048]: swapon: /dev/zram27: swapon failed: Operation not permitted
Mar 09 09:59:46 light-18-pro zramswapon[2048]: swapon: /dev/zram28: swapon failed: Operation not permitted
Mar 09 09:59:46 light-18-pro zramswapon[2048]: swapon: /dev/zram29: swapon failed: Operation not permitted
Mar 09 09:59:46 light-18-pro zramswapon[2048]: swapon: /dev/zram30: swapon failed: Operation not permitted
Mar 09 09:59:46 light-18-pro zramswapon[2048]: swapon: /dev/zram31: swapon failed: Operation not permitted
Mar 09 09:59:46 light-18-pro systemd[1]: zramswap.service: Main process exited, code=exited, status=255/n/a
Mar 09 09:59:46 light-18-pro systemd[1]: Failed to start Service enabling compressing RAM with zRam.
Mar 09 09:59:46 light-18-pro systemd[1]: zramswap.service: Unit entered failed state.
Mar 09 09:59:46 light-18-pro systemd[1]: zramswap.service: Failed with result 'exit-code'.
何が問題なのかご存知ですか?どうやって解決しますか?
答え1
swapon(2)
システムコールのマニュアルページ説明する:
エラー
EPERM 呼び出し側に CAP_SYS_ADMIN 機能がありません。または、最大スワップファイル数が使用されました。以下の注を参照してください。注
使用可能なスワップファイルの数には、カーネル定数MAX_SWAPFILESによって定義される上限があります。カーネル 2.4.10 以前では、MAX_SWAPFILES 値は 8 でした。カーネル2.4.10以降、その値は32です。カーネル2.6.18以降、CONFIG_MIGRATIONオプション(ページ移行機能用に2つのスワップテーブルエントリを予約)mbind(2)とmigration_pages(2)を使用してカーネルを構築した場合、制限は2(30)に減少します。カーネル2.6.32以降、CONFIG_MEMORY_FAILUREオプションを使用してカーネルをビルドした場合、この制限は1ずつ減ります。
したがって、これらのオプションがすべて有効であると仮定すると(カーネル構成の確認)、制限は32 - 2 - 2 - 1 = 27です。出力によると、これは使用しているスワップデバイスの正確な数lsblk
(sda3
+ zram0
〜)ですzram25
。 (なぜ関連するエラーがEPERM、「Permission Denied」なのか、ENFILEや「あまりにも多すぎる」を意味する他のエラーではないのかわかりません。)
カーネルを再コンパイルしてこの制限を増やすことはできますが、私はzramスクリプトを修正して少数のスワップデバイスを作成しました。コアごとに1つのコアを作成するというアイデアは、複数のコアを同時に交換しようとすると競合が発生しないことです。しかし、32個のコアがあれば、一度に交換しようとすると、すでに多くの問題があるように聞こえるので、数字を減らすことはおそらく重要ではないでしょう。もちろん、ベンチマークを実行することもできます。
私が持っているUbuntuシステムでは、生成するデバイスの数をに設定します。/etc/default/zramswap
これらのCORES=4
設定は実際の設定スクリプトから読み取られます。これは他のLinuxenでも同様でもそうでない場合もあります。