32ビットWindowsのboot.iniに「/ 3Gb」スイッチの欠点はありますか?


8

Microsoftは、32ビットシステムで実行されているプロセスのメモリを増やすために、Boot.iniで/ 3Gbスイッチを使用することを推奨しています。

現在、devenvプロセス(Visual Studio 2008)には大量のメモリが必要です。これは、多くのプロジェクトとフォームがあり、設計時に多くのリソースを消費する複雑なソリューションがあるためです。

/ 3Gbスイッチを使用することのマイナス面を誰かが知っている場合は、それを使用することが推奨されない状況はありますか。


回答したすべての人のおかげで、すべての投稿は非常に有益であり、考慮すべき多くの考慮事項があります。私もいくつかのドキュメントを読み、MS SQL Serverの場合、32ビットシステムでもこれを必要としないので、Address Windowing Extensions(AWE)technet.microsoft.com/en-us/library/ms190673.aspx
Bogdan_Ch

回答:


11

デスクトップマシンでは、おそらく問題はありません。カーネルページプールは、/ 3GBスイッチが設定されたW2K3 / WXPマシンでは小さくなります。カーネルページプールの枯渇に近づくべきではないため、これはおそらくデスクトップマシンの問題ではありません。サーバーでは、カーネルのページプールを使い果たすと問題が発生し、それを使い果たす可能性が高くなります。

以下は、/ 3GBスイッチに関連するカーネルメモリの考慮事項についての詳細です。本当に必要な場合は、NTカーネルデバッガーを起動して、変更の前後にこのドキュメントの情報を使用してシステムのプロファイルを作成できます。http://blogs.technet.com/markrussinovich/archive/2009/03/26 /3211216.aspx


3
ダウン投票になると、なぜダウン投票になるのといつも思っています。この投稿に事実上の誤りがあるとは思いませんが、もしそうであれば、その投稿を削除または修正できるように知りたいです。ダウンボーターが抱えている問題に興味があります...(そしてもちろん、彼らがこのコメントに返答することは決してないだろうと思います...おお、まあ...)
Evan Anderson

5

カーネルで使用できるメモリが少なくなります。スイッチは、カーネルモードのアドレススペース/ユーザーモードのアドレススペースの分割を、以前は2GBから2GBに、1GBから3GBに調整します。続行する前に、/ 3GBに関するレイモンドチェンの投稿とフォローアップをお読みください。


5

変更を行う前に、まず、実行するプロセスがLARGEADDRESSAWAREフラグにリンクされているかどうかを確認する必要があります。フラグを使用すると、プロセスがメモリを使用する方法に変更はありません。

これにはSDKツールを使用できます。

dumpbin / headers exeName

吐き出されるヘッダーには次のものが含まれます。

アプリケーションは大きな(> 2GB)アドレスを処理できます

私はdevenv.exeをチェックしましたが、VS2008ではフラグが含まれています。


4

たくさんの欠点。デフォルトでは、Windowsは4GBのメモリプールをすべてのプロセスに割り当てます。これは、カーネルモードプロセス(すべてのアプリに共通)とユーザーモードプロセス(アプリごとに一意)の間で50/50に分割されます(簡単な説明)。したがって、システムで実行されているアプリには2GBのメモリがあり、システム自体には2GBのメモリがあります。重要な注意:この2 GBは、システムで実行されているすべてのアプリで同じ2 GBです。

/ 3GBスイッチは、カーネルモードが1GB、ユーザーモードが3GBになるように分割を調整します。

次に、実行しているアプリを検討します。それらのいくつかはより多くのカーネルモードスペースを必要とし、いくつかはより多くのユーザーモードスペースを必要とします。カーネルモードプールが共有されているため、カーネルモードのメモリを圧迫するアプリを実行している場合、メモリがすぐに不足する可能性があります。一方、アプリが多くのユーザーモードメモリを使用する場合、/ 3GBを実装すると、必要なヘッドルームが確保されます。

したがって、実行したいアプリケーションの性質にかかっています。根本的なルールは、アプリベンダーに相談してドキュメントを読むことです。特に、アプリベンダーが疑いを抱くようにすべき推奨事項がない場合は、アプリを適切にテストしたかどうかを確認します。これは、すべてのベンダーが知っておくべき基本的なものです。

それについてはかなり良い議論がここにあります:http : //blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

あなたの特定のケースでは、/ 3GBは本当にあなたが望むものを得られないので、64ビットに切り替えてより多くのRAMを取得することはより実行可能な解決策だと思います(XPでも動作しますか?)


「カーネルモードプール」の代わりに、「カーネル仮想アドレススペース」と言った方がいいと思います。また、「共有」とは、「すべてのアプリケーションで同一」を意味します。そうですか?
dma_k

1

多数の大きな画像で画像処理アプリを実行しているいくつかのシステムで使用しましたが、問題に気づくことはありませんでした。アプリケーションメモリの追加のギグが必要な状況では、おそらくアプリを実行し、システムで他に何もしないため、おそらく大きな影響はありません。



1

LARGEADDRESSAWAREバイナリのエンタープライズサーバーOSでのみ(デバッグドライバーなどを除いて)確実に機能します。

devenvはそのようなバイナリではありません。たとえば、SQL ServerとExchangeです。

x64ビットのOS VS x64の編集が必要です。2GBの制限を超えるには、LARGEADDRESSAWAREがx64で検出されます。


実際、devenv.exeはlargeaddressawareです。
Jack Bolding

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