Windowsでページファイルから物理メモリにメモリを一度に「スワップイン」する方法(Linuxのスワップオフなど)


10

Windows PCのメモリをスワップインする(ページファイルに入れられたすべてのメモリデータを戻す(またはスワップする、好きなように))方法はありますか?

Linuxでは、swapoff / dev / sdaXを使用してこれを簡単に行うことができます。Xはスワップパーティションです。Windowsでは、毎回再起動するように求められます。

これを実行したいのは、データをスワップファイルにスワップアウトしても、物理RAMでリソースを大量に消費するゲームを完全にプレイできるにもかかわらず、ゲームを停止すると、残りのすべてのプログラムが実行されるからです。スロー。これは通常のことです。RAMが小さすぎたため、すべてのプログラムがページファイルにプッシュされました。また、ゲームがハードページフォールトにぶつかった後、それらのプログラムへのすべてのメモリアクセスが原因で、大幅な遅延とフラストレーションが生じました。

ただし、このフラストレーションは、PCがすべてのデータを物理メモリに1分間ほどコピーして、高速で動作するPCでの作業を再開できるようにするだけで簡単に回避できます。(作業中の遅延に耐える必要はありません)

これに関するアドバイスを事前にありがとう!

敬具


必要なのは、その上でWindowsの複数のコピーが実行されている「ハイパーバイザー」です。1つを一時停止し、もう1つの一時停止を解除します。これは他のシステムでかなり行われますが、Windowsでこれを実現できるハイパーバイザーがあるかどうかはわかりません。
ダニエルRヒックス2013年

回答:


6

残念だけど違う。Windowsの仮想メモリシステムが機能する方法では、ページの多くは、障害が発生するまでマップできず、マップされない限り、メモリに格納できません。したがって、Windowsはページがアクセスされるまで待機する必要があります。


たぶん、十分に特権のあるサードパーティのプロセスがそれらのページにアクセスして、失敗する可能性がありますか?
badp 2014年

別のプロセスがページにアクセスすることはあまり役に立ちません。使用しようとしているアプリのプロセスに障害が発生する必要があります。
Jamie Hanrahan、2014

考えてみれば、それは可能でしょう... ターゲットプロセスにリモートスレッドを挿入する必要があります。次に、そのスレッドはアドレス空間でVirtualQueryを実行し、すべてのプロセスプライベートページを単に読み取ります。ただし、RAMにあり後でページアウトされたページと、最初にページインされなかったページを区別する方法はありません。また、プロセスが二度と必要としないページを特定する方法もありません。だから、あなたは必要のないものをたくさんページングしているでしょう。
Jamie Hanrahan、2015年

@JamieHanrahanそれはうまくいくようです。
David Schwartz、2015年

1

残念ながら、そのようなオプションはありません。

Windowsでスワッピングを減らす唯一の方法は、物理RAMを増やすことです。


または、スワップを完全に無効にします。必ずしもWindowsである必要はありませんが、私のLinux / BSDマシンでは、回転スワップは無効になっているため無効にします。ハードリミットに達する代わりに、使用が開始されると、すべてが遅くなります。
キラーミスト2013年

1
ページファイルを無効にしても、ディスクへのページングは​​無効になりません。プライベートコミットアドレススペースのページアウトのみを無効にします。メモリマップされたファイルの内容は、引き続きページインおよびページアウトされます。
ジェイミーハンラハン2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.