「Zswap」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(同期)
4行目: 4行目:
 
[[pt:Zswap]]
 
[[pt:Zswap]]
 
[[ru:Zswap]]
 
[[ru:Zswap]]
  +
[[zh-hans:Zswap]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|カーネルパラメータ}}
 
{{Related|カーネルパラメータ}}
14行目: 15行目:
 
== zswap を切り替える ==
 
== zswap を切り替える ==
   
安定版 {{Pkg|linux}} 公式カーネルでは、zswap はデフォルトで有効化されています。このことは[https://github.com/archlinux/svntogit-packages/blob/packages/linux/trunk/config 安定版カーネルの config] の {{ic|CONFIG_ZSWAP_DEFAULT_ON}} フラグで確認できます。
+
すべて[[カーネル#公式サポートカーネル|公式にサポートされているカーネル]] zswap はデフォルトで有効化されています。このことは{{ic|zgrep CONFIG_ZSWAP_DEFAULT_ON /proc/config.gz}} を実行することで確認できます。
   
 
zswap を実行時に無効化するには、以下のコマンドを実行してください:
 
zswap を実行時に無効化するには、以下のコマンドを実行してください:
28行目: 29行目:
 
zswap には、カスタマイズ可能なパラメーターがいくつかあります。現在の設定は、次を使用して表示できます:
 
zswap には、カスタマイズ可能なパラメーターがいくつかあります。現在の設定は、次を使用して表示できます:
   
{{hc|$ grep -R . /sys/module/zswap/parameters|
+
{{hc|$ grep -r . /sys/module/zswap/parameters/|
 
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
 
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
 
/sys/module/zswap/parameters/enabled:Y
 
/sys/module/zswap/parameters/enabled:Y
 
/sys/module/zswap/parameters/max_pool_percent:20
 
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lz4
+
/sys/module/zswap/parameters/compressor:zstd
/sys/module/zswap/parameters/zpool:z3fold
+
/sys/module/zswap/parameters/non_same_filled_pages_enabled:Y
  +
/sys/module/zswap/parameters/zpool:zsmalloc
 
/sys/module/zswap/parameters/accept_threshold_percent:90
 
/sys/module/zswap/parameters/accept_threshold_percent:90
 
}}
 
}}
42行目: 44行目:
   
 
{{hc|# dmesg {{!}} grep zswap:|
 
{{hc|# dmesg {{!}} grep zswap:|
[ 0.317569] zswap: loaded using pool lz4/z3fold
+
[ 0.317569] zswap: loaded using pool zstd/zsmalloc
 
}}
 
}}
   
66行目: 68行目:
   
 
=== 圧縮メモリプールアロケータ ===
 
=== 圧縮メモリプールアロケータ ===
  +
  +
{{Out of date|{{Pkg|linux}} 6.3.arch1-1+ では、{{ic|1=CONFIG_ZSWAP_ZPOOL_DEFAULT="zsmalloc"}} が設定されています。[https://github.com/archlinux/svntogit-packages/commit/b14ac92f4d7fcb63c544efaf809b2c9f681a2c7b]}}
   
 
''zpool'' パラメータは、圧縮メモリプールの管理を制御します。
 
''zpool'' パラメータは、圧縮メモリプールの管理を制御します。
76行目: 80行目:
   
 
=== 圧縮アルゴリズム ===
 
=== 圧縮アルゴリズム ===
  +
  +
{{Out of date|{{Pkg|linux}} 6.3.arch1-1+ では{{ic|1=CONFIG_ZSWAP_COMPRESSOR_DEFAULT="zstd"}} が設定されています。[https://github.com/archlinux/svntogit-packages/commit/b14ac92f4d7fcb63c544efaf809b2c9f681a2c7b]}}
   
 
ページ圧縮の場合、zswap はカーネルの暗号化 API によって提供されるコンプレッサーモジュールを使用します。デフォルトでは ''lz4'' 圧縮アルゴリズムを使用しますが、これは起動時に {{ic|1=zswap.compressor}} で変更できます。その他のオプションには、''deflate''、''lz4hc''、''lzo''、''lzo-rle''、''842''、''zstd'' があります。
 
ページ圧縮の場合、zswap はカーネルの暗号化 API によって提供されるコンプレッサーモジュールを使用します。デフォルトでは ''lz4'' 圧縮アルゴリズムを使用しますが、これは起動時に {{ic|1=zswap.compressor}} で変更できます。その他のオプションには、''deflate''、''lz4hc''、''lzo''、''lzo-rle''、''842''、''zstd'' があります。
95行目: 101行目:
 
* [https://lwn.net/Articles/537422/ zswap のメイン開発者による LWN.net 技術記事]。
 
* [https://lwn.net/Articles/537422/ zswap のメイン開発者による LWN.net 技術記事]。
   
{{TranslationStatus|Zswap|2023-03-13|772217}}
+
{{TranslationStatus|Zswap|2023-05-12|777755}}

2023年5月12日 (金) 20:40時点における版

関連記事

zswap は、スワップページに対して圧縮された RAM キャッシュを提供する、カーネルの機能です。ページをディスクにスワップアウトしてしまうのではなく、RAM 内のメモリプールに圧縮して保存します。プールが満タンになったり RAM が枯渇したりすると、最近使用されていない (LRU) ページを解凍して (まるでインターセプトされなかったかのように) ディスクに書き込みます。ページがスワップキャッシュへ解凍された後、プール内の圧縮された方を解放できます。

zram と異なる点は、zram が補助スワップデバイスを必要としない RAM 内のスワップデバイスであるのに対し、zswap はスワップデバイスと組み合わさって動作することです。

zswap を切り替える

すべての公式にサポートされているカーネルで zswap はデフォルトで有効化されています。このことは、zgrep CONFIG_ZSWAP_DEFAULT_ON /proc/config.gz を実行することで確認できます。

zswap を実行時に無効化するには、以下のコマンドを実行してください:

# echo 0 > /sys/module/zswap/parameters/enabled

zswap を永続的に無効化するには、zswap.enabled=0カーネルパラメータに追加してください。

zswap のカスタマイズ

現在のパラメータ

zswap には、カスタマイズ可能なパラメーターがいくつかあります。現在の設定は、次を使用して表示できます:

$ grep -r . /sys/module/zswap/parameters/
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:zstd
/sys/module/zswap/parameters/non_same_filled_pages_enabled:Y
/sys/module/zswap/parameters/zpool:zsmalloc
/sys/module/zswap/parameters/accept_threshold_percent:90

様々なパラメーターの説明については、zswap のドキュメントを参照してください。

初期構成を示すブート時ロードメッセージは、次のコマンドで取得できます:

# dmesg | grep zswap:
[    0.317569] zswap: loaded using pool zstd/zsmalloc

パラメータの設定

sysfs の使用

各設定は、sysfs インターフェースを介して実行中に変更できます。例えば、compressor パラメータを変更するには:

# echo lz4 > /sys/module/zswap/parameters/compressor

カーネルブートパラメータの使用

パラメータの変更を永続化するには、対応するオプション (例えば zswap.compressor=lz4 など) をカーネルブートパラメータに追加する必要があります。したがって、上記のすべての設定を永続的に設定するには、次のカーネルパラメータを追加する必要があります:

zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold

ブートパラメータを介して圧縮アルゴリズムを変更する場合、対応する圧縮モジュールがブートの早い段階でロードされていることを確認する必要があります (#圧縮アルゴリズム を参照)。

最大プールサイズ

メモリプールは事前に割り当てられません。使用可能な合計メモリのパーセンテージによる特定の制限まで (デフォルトでは合計 RAM の最大20%まで) 拡張できます。このしきい値に達すると、ページはプールからスワップデバイスに追い出されます。圧縮されたプールの最大サイズは、パラメーター max_pool_percent で制御されます。

圧縮メモリプールアロケータ

この記事またはセクションは情報が古くなっています。
理由: linux 6.3.arch1-1+ では、CONFIG_ZSWAP_ZPOOL_DEFAULT="zsmalloc" が設定されています。[1] (Discuss)

zpool パラメータは、圧縮メモリプールの管理を制御します。

zbud データアロケーターを使用すると、2つの圧縮オブジェクトが1ページに格納され、圧縮率が2以下に制限されます。

優れた z3fold アロケーターでは、ページごとに最大3つの圧縮オブジェクトを使用できます。z3fold の圧縮率は通常平均2.7ですが、zbud の圧縮率は1.7です。

タイプ z3foldzpool がデフォルトで作成されます。カーネルパラメータ zswap.zpool を使用して、起動時に別のメソッドを選択してください。データアロケータは、sysfs インターフェースを介して後の段階で変更することもできます。

圧縮アルゴリズム

この記事またはセクションは情報が古くなっています。
理由: linux 6.3.arch1-1+ ではCONFIG_ZSWAP_COMPRESSOR_DEFAULT="zstd" が設定されています。[2] (Discuss)

ページ圧縮の場合、zswap はカーネルの暗号化 API によって提供されるコンプレッサーモジュールを使用します。デフォルトでは lz4 圧縮アルゴリズムを使用しますが、これは起動時に zswap.compressor で変更できます。その他のオプションには、deflatelz4hclzolzo-rle842zstd があります。

実行中に sysfs を使用して圧縮を変更することに問題はありませんが、この場合、 zswap は lz4 で開始し、後の段階で定義されたアルゴリズムに切り替わります。別のアルゴリズムで zswap をすぐに開始するには、これをカーネルのブートパラメータを介して設定し、対応するモジュールをカーネルによって早期にロードする必要があります。これは、次の手順に従って実行できます:

  1. 選んだコンプレッサーに関連するモジュールを mkinitcpio#MODULES 配列に追加する。
  2. mkinitcpio の設定を変更した後、RAM ディスク環境を再生成する。mkinitcpio#イメージ作成とアクティベーション を参照してください。
  3. カーネルパラメータzswap.compressor をあなたの選んだアルゴリズムに設定します。

次回の起動時に、#現在のパラメータ を参照して、zswap が要求されたコンプレッサーを使用するかどうかを確認してください。

参照

翻訳ステータス: このページは en:Zswap の翻訳バージョンです。最後の翻訳日は 2023-05-12 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。