Ci sono degli svantaggi dello switch "/ 3Gb" in boot.ini per Windows a 32 bit?


8

Microsoft consiglia di utilizzare l'opzione / 3Gb in Boot.ini per ottenere più memoria per un processo in esecuzione su un sistema a 32 bit.

Attualmente ho bisogno di un sacco di memoria per devenv processo (Visual Studio 2008), perché ho una soluzione complessa che ha un sacco di progetti e forme e consuma un sacco di risorse in fase di progettazione.

Vorrei chiedere, se qualcuno lo sa, quali sono gli aspetti negativi dell'utilizzo dello switch / 3Gb, ci sono circostanze in cui non è consigliabile utilizzarlo.


Grazie a tutti coloro che hanno risposto, tutti i post sono molto istruttivi e ci sono molte considerazioni da prendere in considerazione. Ho anche letto della documentazione e ho notato che per MS SQL Server non è necessario nemmeno per i sistemi a 32 bit, è possibile abilitare Address Windowing Extensions (AWE) technet.microsoft.com/en-us/library/ms190673.aspx
Bogdan_Ch

Risposte:


11

Su una macchina desktop, probabilmente non ci sono problemi. Il pool di paging del kernel è più piccolo su una macchina W2K3 / WXP con il set di switch / 3GB. Questo probabilmente non è un problema per un computer desktop perché non dovresti avvicinarti all'esaurimento del pool di paging del kernel. Su un server, esaurire il pool di paging del kernel causerà problemi ed è molto più probabile che si possa esaurire.

Ecco alcuni buoni dettagli sulle considerazioni sulla memoria del kernel associate all'opzione / 3GB. Se proprio lo desideri, puoi avviare il debugger del kernel NT e creare un profilo del tuo sistema prima e dopo la modifica con le informazioni in questo documento: http://blogs.technet.com/markrussinovich/archive/2009/03/26 /3211216.aspx


3
Mi chiedo sempre, quando ricevo i voti negativi, perché ottengo i voti negativi. Non credo che nulla in questo post sia effettivamente errato, ma se lo fosse, vorrei sapere in modo da poter eliminare il post o correggerlo. Sono curioso di sapere quale sia il problema dei downvoter ... (e, ovviamente, mi rendo conto che non torneranno mai più per rispondere a questo commento ... oh, beh ...)
Evan Anderson

5

Avrai meno memoria disponibile per il tuo kernel - lo switch regola lo spazio degli indirizzi in modalità kernel / la divisione dello spazio degli indirizzi in modalità utente, in precedenza da 2 GB a 2 GB, da 1 GB a 3 GB. Leggi il post di Raymond Chen su / 3GB e i follow-up, prima di procedere.


5

Prima di apportare qualsiasi modifica, è necessario verificare se i processi che si desidera eseguire sono collegati al flag LARGEADDRESSAWARE. Con il flag, non ci saranno cambiamenti al modo in cui il processo utilizza la memoria.

È possibile utilizzare gli strumenti SDK per questo:

dumpbin / header exeName

Le intestazioni sputate dovrebbero includere:

L'applicazione può gestire indirizzi di grandi dimensioni (> 2 GB)

Ho fatto il controllo su devenv.exe e in VS2008 include la bandiera.


4

Un sacco di inconvenienti. Per impostazione predefinita, Windows assegnerà un pool di memoria da 4 GB a ogni processo, suddiviso 50/50 tra i processi in modalità kernel (comuni a tutte le app) e i processi in modalità utente (unici per ciascuna app) (spiegazione semplificata). Un'app in esecuzione sul sistema ha quindi 2 GB di memoria con cui giocare, mentre il sistema stesso ha i suoi 2 GB. Nota importante: questo secondo 2 GB è lo stesso 2 GB per tutte le app in esecuzione sul sistema.

L'opzione / 3GB regola la divisione in modo che la modalità kernel ottenga 1 GB e la modalità utente ottenga 3 GB.

Ora considera le app in esecuzione. Alcuni richiederanno più spazio in modalità kernel, altri richiederanno più spazio in modalità utente. Poiché il pool di modalità kernel è condiviso, puoi esaurire rapidamente la memoria lì se stai eseguendo app che mettono sotto pressione la memoria in modalità kernel. D'altra parte, se le tue app usano molta memoria in modalità utente, l'implementazione / 3GB darà loro il margine di manovra di cui hanno bisogno.

Quindi dipende davvero dalla natura delle applicazioni che si desidera eseguire. La regola d'oro è consultare il fornitore dell'app e leggere la documentazione; in particolare se il fornitore dell'app non ha una raccomandazione in entrambi i modi, dovresti iniziare a diventare sospettoso ... hanno testato correttamente la loro app o no? Questa è roba di base che ogni venditore dovrebbe sapere.

C'è una discussione abbastanza buona su tutto qui: http://blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

Nel tuo caso particolare, penso che passare a 64 bit e ottenere più RAM sarà una soluzione più praticabile, poiché / 3GB non ti darà davvero quello che vuoi (funziona anche su XP?)


Penso, invece di "pool di modalità kernel" meglio dire "spazio di indirizzi virtuali del kernel". Anche "condiviso" significa per me "identico per tutte le applicazioni". È così?
dma_k,

1

L'abbiamo usato su un paio di sistemi che eseguivano app di elaborazione delle immagini su molte immagini di grandi dimensioni e non abbiamo mai notato alcun problema. In tutte le situazioni in cui è necessario il Gig aggiuntivo di memoria dell'applicazione, è probabile che si consenta l'esecuzione dell'app e non si esegua nient'altro con il sistema, quindi probabilmente non si avrà molto impatto.



1

Funziona in modo affidabile (tranne per i driver di debug ecc.) Su un sistema operativo server aziendale per i binari LARGEADDRESSAWARE.

devenv non è un tale binario . SQL Server ed Exchange sono, per esempio.

Avresti bisogno di un sistema operativo x64 bit e di una modifica VS x64 : LARGEADDRESSAWARE viene rilevato su x64 per infrangere il limite di 2 GB.


actaully devenv.exe è largeaddressaware.
Jack Bolding,

corretto, mi mancava quello sulla mia modifica su x64. Modificato di nuovo
gbn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.