Systemd-swap: 休止状態は本当に不可能ですか?

作成日 2019年09月28日  ·  7コメント  ·  ソース: Nefelim4ag/systemd-swap

Q:これを使用して休止状態を有効にできますか?
A:いいえ、休止状態では永続的なfsブロックが必要であり、ディスクから直接データをスワップするためのアクセスが必要です。これは、zram、swapfu、swapfcでは機能しません(もちろん魔法はありません)。

明らかに、パーティションの代わりにスワップファイルを使用した休止状態が可能です。 通常のスワップ用のzramと休止状態用のスワップファイルを使用したソリューションが望ましいでしょう。

では、それを機能させるにはどのような魔法が必要でしょうか?

enhancement help wanted

最も参考になるコメント

systemd-swapの起動時に、システムが使用可能なすべてのメモリを休止状態にするのに十分なスワップファイルをフォーマットしてスワップオンするオプションがあった場合はどうなりますか? そして、 bootctl呼び出しを実行するか、ある種の固定された場所を使用してテストし、swapfileのデータをsystemctl-boot、rEFInd、grubなどのカーネルコマンドラインにアクセスするための情報を取得しますか?

そうすれば、唯一の本当の遅れは、zramを交換することです。これは、zramを使用する上で避けられない部分です。

私の考えでは、起動時

全てのコメント7件

@TeslaBargain 、ある種の黒いブードゥーの魔法。

もちろん、それはあなた自身でそれを作ることは可能です-あなたがそれをあなた自身ですることができるように。


zramの場合、休止状態の前にすべてのことを実行する必要があります。

  1. 新しいスワップファイルを追加する
  2. フォーマットしてスワップオン
  3. swapfileのデータにアクセスするためのすべての情報をカーネルコマンドラインに追加します(grub config、systemd-boot、lilo、u-bootなどを変更しますか?)
  4. スワップアウトzram
  5. 休止状態(休止状態を可能にするために、すべてが発生する前にどれだけの時間を失ったかわからないと思います)
  6. 再起動/休止状態を終了した後は、すべてのことを逆の順序で実行する必要があります。

そして、それはその種のスワップファイルをサポートするfs、つまり不可能なbtrfでのみ機能します。

@ Nefelim4ag 、私に知らせてくれてありがとう、それでそれを価値あるものにするために全体的にあまりにも多くの仕事。 すぐに使用できるソリューションではそれを使用しますが、そうすれば、スワップパーティションと通常のスワップ+休止状態の使用に固執します。

systemd-swapの起動時に、システムが使用可能なすべてのメモリを休止状態にするのに十分なスワップファイルをフォーマットしてスワップオンするオプションがあった場合はどうなりますか? そして、 bootctl呼び出しを実行するか、ある種の固定された場所を使用してテストし、swapfileのデータをsystemctl-boot、rEFInd、grubなどのカーネルコマンドラインにアクセスするための情報を取得しますか?

そうすれば、唯一の本当の遅れは、zramを交換することです。これは、zramを使用する上で避けられない部分です。

私の考えでは、起動時

こんにちは。 インストール時にスワップパーティションを定義し、それを休止状態に使用し(カーネルに休止状態にのみ使用するように指示する方法がわからない)、残りのスワップ操作にzramを使用するシナリオ(およびゲイン)を知りたいと思います。公演で)。 考慮すべきことですか? 何かご意見は?

編集:このhttps://gist.github.com/klingtnet/c972b8182e4e2818d6d551b0cbeac44b
プラスsystemd-swap(zram)

これは、スワップの優先順位とsystemdの休止状態のフックによって実現できると思います。 さまざまなstackoverflowの質問をすばやく精査してもこれに答えられなかったため、手動でテストする必要がありました。 これは実際には私が考えていたものよりもはるかに簡単な修正であるため、5.0より前に実装される可能性があります(完全な修正は5.0にあるはずですが)

IIRC、休止状態には単一のスワップデバイスが必要なので、割り当てられたすべてのメモリをRAM /スワップに格納するのに十分な大きさである必要がありますか? (ただし、書き込まれるこの休止状態イメージは、デフォルトで約40%のターゲットで圧縮を使用する必要があります)。

私はそのような試みをしていませんが、休止状態は、他のソフトウェアと同じように割り当てられているかのように、ディスクまたはzramデバイス上のスワップファイルをRAMに保持しませんか? システム状態を再開します。メモリが休止状態イメージに書き込まれている限り、フレッシュブートのように初期化するのではなく、以前に割り当てられたスワップデバイスを復元/再開する必要がありますか? したがって、休止状態のスワップデバイスを切り替える以外にスワップのオフ/オンは必要ありませんか?

私はこれまで、単一のスワップデバイス(zswapまたはzramなし)で休止状態にしたことがあります。 その場合(複数のスワップデバイスが存在する場合など)、ディスクスワップがどうなるかわかりません(休止状態のイメージに合わせる必要がある場合は、冗長に見えますか?)、同様に、zramにはメモリが割り当てられていると思いますソフトウェアによって割り当てられた他のメモリと同じように休止状態イメージに書き込まれます。スワップ部分の処理方法がわかりません。追加のスワップデバイスを休止状態イメージに書き込む必要がある場合は、zramとRAM内のzswapのキャッシュが解凍されます。再開は再圧縮する必要があります。

シナリオatmをテストして、何が起こるかを知ることができません。 おそらくVMを介してテストするのはそれほど難しくありませんか?


注目に値するのは、systemdを使用しているほとんどのディストリビューションは、最近のafaikで休止状態をsystemd-sleep hibernate延期する必要がありますか? 2019-2020(v239 +リリースでは?)以降、カーネルパラメーターでターゲットスワップデバイス(この場合はiircのみのパーティション)を指定せずに休止状態から再開する機能があり、どのスワップデバイスを暗黙的に使用するかを推測します。 スワップパーティションが1つしかない場合は、 resume (およびスワップファイルを使用している場合はresume_offset )カーネルブートパラメータを設定/更新しなくても信頼できるはずです。

繰り返しますが、私がまだ検証するためにテストしたものではありません。

アップストリームトラッキングの問題: https

このページは役に立ちましたか?
0 / 5 - 0 評価