コンピューターが休止状態になると、スワップ内のデータはどうなりますか?


12

コンピューターが休止モードになると、RAMの内容がスワップスペースに保存されるため、電源を入れ直したときに中断したところから正確に再開できます。

そのため、現在RAMよりも多くのメモリを使用している場合はどうでしょう。この場合、そうでなければRAMにあるデータがスワップのために保存されます。

例。コンピューターには1GBのRAMと1GBのスワップスペースがあります。現在、100MBのRAMと500MBのスワップを除くすべてを使用しています。したがって、その状態を保存するには、約1.4GBのメモリを覚えておく必要があります。ただし、スワップは1GBのみです。

この場合はどうなりますか?

~~編集~~

以下で回答するように、休止状態は失敗します。それでは、フォローアップの質問:

これが失敗した場合、エラーはどこに報告されますか?

回答:


11

それは冬眠の実装に依存します。質問をLinuxに限定したとしても、実装は時間とともに進化しています。

まず、RAMの一部がディスクキャッシュに使用されることを考慮してください。これは、システムの再開後にディスクからリロードできるため、スワップに移動する必要はありません。コストと効率のバランスが良好なシステムでは、通常、RAMの約半分がキャッシュに割り当てられます。(十分なRAMがあるときにスワップを使用する理由も参照してください)。

第二に、一部のシステムはスワップに書き込まれる際にメモリを圧縮するため、正確に必要な量のスワップを予​​測するのが難しくなります。Linuxの休止状態サポートの一部のバージョンは、圧縮をサポートしています。現在のものがそうかどうかはわかりません。

十分なスワップスペースがない場合に一般的に期待できるのは、休止状態が失敗することです。システムはRAMの(有用な)内容をスワップに保存しようとし、十分なスペースがないことを検出するとすぐに、休止状態の試行は中止されます(通常、コンソールとシステムログにエラーメッセージが表示されます)。私の知る限り、Linuxは常にこのように振る舞っています(実際に別の賢明な振る舞いがあるわけではありません)。


1
これをvirtualboxマシンで試してみましたが、失敗しましたが、ユーザーにメッセージを表示しませんでした(ubuntu 10.4で試しました)。このエラーが報告されるシステムログは何ですか?
デビッドオニール

3
@David:に間違いなく何かがあるはず/var/log/kern.logです。コンソールにメッセージが表示されていないことが、この特定のカーネルバージョンの癖なのか、意図的なUbuntu構成なのかわかりません(意図的に他のコンソール出力を抑制していることは知っています)。
ジル 'SO-悪であるのをやめる
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.