web-dev-qa-db-ja.com

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

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

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

/ 3Gbスイッチを使用することのマイナス面は何か知っている人がいたら、それを使用することが推奨されない状況はありますか?.

8
Bogdan_Ch

デスクトップマシンでは、おそらく問題はありません。カーネルページプールは、/ 3GBスイッチセットを備えたW2K3/WXPマシンでは小さくなります。カーネルのページプールを使い果たしてはいけないので、これはおそらくデスクトップマシンの問題ではありません。サーバーでは、カーネルページプールを使い果たすと問題が発生し、使い果たされる可能性がはるかに高くなります。

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

11
Evan Anderson

カーネルで使用できるメモリが少なくなります。スイッチは、カーネルモードのアドレス空間/ユーザーモードのアドレス空間の分割(以前は2GBから2GB、1GBから3GB)を調整します。先に進む前に、/ 3GBの Raymond Chenの投稿 とフォローアップを読んでください。

5
crb

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

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

dumpbin/headers exeName

吐き出されるヘッダーには、次のものが含まれている必要があります。

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

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

5
Jack Bolding

たくさんの欠点。デフォルトでは、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

あなたの特定のケースでは、64ビットに切り替えてさらに多くのRAM=を取得する方が現実的な解決策になると思います。 ?)

4
Maximus Minimus

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

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

X64ビットOSが必要です およびVS x64 編集: LARGEADDRESSAWAREはx64で検出されます 2GBの制限を破ります。

1
gbn

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

私はそれが奇妙な方法でビデオカードに干渉するのを見ました。ただし、このスイッチが正しく記述されていないと、どのドライバーもこのスイッチで誤動作する可能性があります。

これらの問題は、/ USERVAスイッチを追加することで回避できる場合があります。

http://support.Microsoft.com/kb/31904
http://support.Microsoft.com/kb/833721
http://support.Microsoft.com/kb/83949
http://support.Microsoft.com/kb/316739

1
3dinfluence