RAM /スワップ使用量を制御する方法


18

アプリケーションレベルでRAM /スワップ使用ポリシーを制御する方法(アプリケーション)はありますか。

常に使用するアプリケーションがいくつかあり、それらを常にRAMに保持しておく必要があります。また、ほとんど使用しないアプリケーションもあり、必要に応じてスワップするためにスローされる場合があります。デフォルトで設定されたウィンドウは最高のパフォーマンスを提供するはずですが、さらに多くを取得できるかどうかを確認したいです:)。

Windows 7を使用しています。


2
+1。XPで機能する方法に興味があります。
ザビエルジャズ

回答:


9

はい、あります:プログラムにVirtualLock関数を呼び出します:

プロセスがロックしたページは、プロセスがページをロック解除するか終了するまで物理メモリに残ります。これらのページは、ロックされている間はページファイルに書き込まれないことが保証されています。

SetProcessWorkingSetSize関数も役立つと思います。


私がこれ有用であるかもしれないとさえ提案することに対する異端者だと思っている人々のために:

メモリ内のページをロックする正当な理由があることに注意してください。正当な理由としては、ユーザーがCDバーナーを実行しており、CDバーナーが絶えずページアウトしているため、バッファーアンダーランが発生し、コースターが作成されていることが考えられます。その状況では、コンピューターの残りの部分がクロールに遅くなることを意味する場合でも、メモリバッファーをロックしてページアウトされないようにすることが有効です。他の正当な理由もあります-私のポイントは、メモリ内のページをロックすることは通常お勧めできませんが、有効な状況はまだ存在し、アイデアを殺すことはここのOPに役立つとは思わないということです。


更新:Process HackerReduce Working Setメニューオプションをご覧ください。


おそらくこの記事からこのビットを引用すると、「ページをメモリにロックすると、使用可能なRAMが減り、システムが他の重要なページをページングファイルにスワップアウトすることにより、システムのパフォーマンスが低下する可能性があります。Windowsの各バージョンには、プロセスがロックできるページの最大数の制限。この制限は、パフォーマンスの深刻な低下を避けるために意図的に小さくしています。」(私の重点)

1
@Randolph:私はそれを勧めたことがありません。他のほとんどの人が考えているように、それは可能だと言っただけです。私は個人的にOPに「あなたのアイデアを殺そう」と言うのが嫌いです-OPは彼がこれをしてはいけないという事実を理解したと思いますが、それでも彼が望んでいるなら、彼には方法を知る権利があると思います。(これらの関数を作成した理由があり、OPがそれらを使用するかどうかを判断するのは私ではありません。)
Mehrdad

Windowsには、後方互換性のために残された多くのコードがあります。それがある理由がある場合、それはそれでしょう。SQL Serverの縮小機能と比較することができます。これは、どのような状況でも使用されるべきではありませんが、互換性の理由で残されています。Windows 7は適切なメモリ管理を備えた最新のOSであり、ページファイルを削除したり、プログラムが「ルール」外のメモリに留まろうとしたりしないでください。それは非常に悪い実践であり、不安定なシステムや使用不可能なシステムになる可能性があります。

1
@Randolph:(アナロジーを放棄したようです。:])他のプロセスを開いてを呼び出す小さなプログラム(10行以内)を作成しますSetProcessWorkingSetSize。それが一つの方法です。もちろん、あなたが開発者ではないのでそれが何を意味するのかわからなければ、明らかにできることはあまりありません。しかし、それはまだ可能です、そして、それが不可能であると言うことはまだ間違っています、それはただOPが持っているかもしれないより多くの知識を必要とします。
Mehrdad

1
@Randolphでは、実行中のアプリをすべて強制的にページファイルに移動させるさまざまなフリーウェアアプリをダウンロードできます(各プロセスでSetProcessWorkingSetSizeを呼び出します)。
クリスO

5

私が見つけた唯一の方法は、ページファイルを無効にすることです。ただし、これは完全な解決策ではありません。RAMの制限に近づいたり超えたりするとエラーメッセージが表示され、クラッシュダンプが適切に保存されない可能性があるため、トラブルシューティングが必要な場合はオンに戻します。それ以外、私は何ヶ月も支障なくページファイルなしでWin7を使用しています。

私の経験:ピアノソフトウェア(1GBのRAM使用量)でこの問題が発生し、しばらく使用しないとスワップに陥りました。数時間後にピアノのキーを弾くと、スワップがサウンドを再生するのに十分な速さでリロードされないため、グリッチな混乱が発生します。(すべてのキーに腕全体を置いて、リロードを強制します!)

RAMが心配な場合は、さらに購入することをお勧めします(たとえば、Windows 7 x64では8〜12GB)。RAMを意識している人にとって、RAMをたっぷり持っていることは天の恵みです。

ただし、その前に、SSDドライブを入手してスワップを行うことを検討する必要があります。スワップリカバリを大幅に高速化するだけでなく、他の多くのシステムの利点を提供します。RAMは、使用されていないときには利点を提供しません。


3
行う。違います。削除します。。ページ。ファイル。今まで。

7
私が持っています。行った。使用しています。Win7。と。いいえ。ページファイル。にとって。月。なし。A.ヒッチ。
mtone

1
また、ページファイルを使用せずにWin7を常に使用していますが、現在の作業には十分ではないようです:(
Darqer

3
@Randolph:MSは、顧客がコンピューターのプロであるとは限らないことを知っているため、彼らが話していることを知っています。しかし、実際にページファイルが何をして何をしていないかを正確に知っている人々にとっては、彼らに不要な実践を強いる理由はありません。
Mehrdad

2
@Randolph:シートベルトなしで速度制限を超えて運転すると、他人の保険費用が増加することは言うまでもなく、死んで他の人を殺す可能性があります。コンピュータがメモリをページアウトした場合に発生する可能性がある最悪の事態は、状況に応じて、ほんの少し時間を失うことです。ここでの類推で何か間違っている(たくさん読んでいる)のを見ていませんか?また、Linux / Unixを使用しましたか?Windowsとは異なり、自分がぶら下がるのに十分なロープを提供していることに気付いたことはありませんか?人々はまだそれらを使用しています-それは影響下にある運転のようなものですか?
Mehrdad

2

ページファイルの使用は多くの要因に依存します。多数のプログラムを使用し、それらのすべてに対して同時に十分なRAMがない場合、それらの一部(またはすべて)がページファイルにスワップアウトされる場合があります。

4GBのRAMがあり、ビデオカードやその他のリソースユーザーが4GBの一部をブロックしているために、約3GBが利用可能であり、メモリを大量に消費しないプログラムをいくつか使用する場合、理論的にはスワップファイルは必要ありません。ただし、Windows Vistaおよび7は、プログラムをディスクにスワップすることで悪名高い攻撃で有名です。

以前はWindows 7のスワップ性を低下させる設定がありました(スワップネスはLinuxの用語ですが、Windowsにも同様に適用されます。Windowsのスワッピングの積極性を抑えるためのレジストリ設定があるため、Microsoftは、隠された方法)が、私はもうそれを見つけることができないようです。それを検索することは、私がここで終わった方法です。私が見つけたこの設定の最良の代替は、固定サイズのスワップファイルを使用することを確認することです(32ビットOSでは4096から4096、6GBのシステムRAMがあるため64ビットでは12GBになります)専用パーティション上。予備の7200rpm 200GBドライブを使用して、すべてのスワップパーティション(Windows XP、7、7 64ビット、およびさまざまなLinux)をこのドライブに配置します。うまくいくようですが、YMMV。


1

言及する価値があります:Windowsが特定のアプリケーションを頻繁に使用していることを検出すると、スーパーフェッチがそれらのアプリケーションをメモリに入れて、それらがより速くロードされるようにします。ここでは、信頼できるウィンドウがその機能を果たしていると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.