2009-02-03 11 views
32

Forse più adatto per "Rack Overflow", ma dal punto di vista dello sviluppatore, quali sono i vantaggi e gli svantaggi dell'esecuzione di IIS (che serve sia legacy classica ASP e .NET) come un processo a 32 bit invece di un processo a 64 bit su un 64 bit host di Windows?Quali sono i pro e i contro dell'esecuzione di IIS come 32 bit contro 64 bit su un sistema operativo a 64 bit?

Il vantaggio principale di 32/64 (iis/server) su 32/32 sembra essere la possibilità di arrivare fino a 4 GB in memoria per processo IIS.

I vantaggi che mi aspetto di 32/64 su 64/64 sembrano essere che sia più facile accedere alle legacy DLL in-process precedenti a 32 bit (di cui ne abbiamo ancora uno da un fornitore partner che non possiamo allontanarci da immediatamente) e forse un footprint di memoria più piccolo per lo stesso codice dato i puntatori di memoria più piccoli.

Ci sono dei vantaggi delle prestazioni 64/64 su 32/64 o qualsiasi altra cosa che garantisca un passaggio completo ora? Ho fatto delle false supposizioni qui?

risposta

3

Non credo di aver fatto false ipotesi. Ma direi, no, non ci sarà probabilmente alcuna differenza di prestazioni tra nessuno degli scenari che hai delineato. 32 su 64 su Windows non funziona con una penalità. 64 su 64 potrebbero dare un leggero aumento delle prestazioni, ma questo è dubbio. Ci possono essere alcuni risparmi di memoria con un processo a 32 bit, ma questo è probabilmente negato dal thunking necessario per eseguire il processo in primo luogo.

L'unico vantaggio è il problema DLL che hai menzionato. Questo potrebbe essere un motivo per l'aggiornamento (se hai qualcosa in particolare a 64 bit che devi usare).

+0

E i registri aggiuntivi disponibili quando si esegue un processo a 64 bit? Quelli dovrebbero migliorare le prestazioni di un'applicazione. – LanceSc

+0

Se Windows non usa i registri aggiuntivi per conto del processo a 32 bit, allora sì, probabilmente c'è un guadagno lì. Non ne so abbastanza del materiale di livello inferiore per rispondere a questa domanda. – TheSmurf

+3

re: * 64 su 64 potrebbe dare un leggero aumento delle prestazioni, ma questo è dubbio. * Non c'è un incremento prestazionale magico solo per l'utilizzo di 64 bit. Infatti, se si è in modalità 64 bit, viene applicata una tassa per le istruzioni che si paga. Ogni mossa del puntatore è larga 64 bit, ogni confronto è più ampio. Queste cose possono richiedere più cicli cpu rispetto alla controparte a 32 bit. 64-bit ha senso solo per le prestazioni se l'app deve accedere a uno spazio di memoria maggiore di 4 GB. In altri casi, costa di più. – Cheeso

3

Ho avuto un'esperienza in cui passare da un server Windows 2003 a 32 bit a un server Windows 2003 a 64 bit che eseguono IIS 6 e le prestazioni del sito Web ASP.NET 3.5 non erano accettabili.

Il server a 64 bit eseguiva un chiaro 2 secondi dietro quello a 32 bit in modo coerente.

Dopo aver attivato IIS 6 per l'esecuzione come processo di lavoro a 32 bit, le prestazioni erano uguali e confrontabili ancora una volta.

Non l'ho verificato, ma penso che potrebbe essere applicato solo a IIS6 win2k3, poiché i test eseguiti con IIS7 x64 (Vista) e un processo di lavoro IIS a 64 bit sembrano funzionare correttamente.

La procedura per passare al processo a 32 bit era piuttosto semplice. Ecco l'articolo KB con i dettagli di supporto: http://support.microsoft.com/kb/894435/en-us

ASP.NET 2.0, versione a 32 bit Per eseguire la versione a 32 bit di ASP.NET 2.0, attenersi alla seguente procedura:

  1. Click Fare clic sul pulsante Start, fare clic su Esegui, digitare cmd e quindi fare clic su OK.
  2. Digitare il seguente comando per abilitare la modalità a 32 bit: cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
  3. Digitare il seguente comando per installare la versione di ASP.NET 2.0 (32-bit) e per installare le mappe di script nella radice di IIS e in: % SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i
  4. Assicurarsi che lo stato di ASP. La versione NET 2.0.50727 (32-bit) è impostata su Consentita nell'elenco delle estensioni del servizio Web in Gestione Internet Information Services.

Vedere l'articolo della Knowledge Base per tornare a 64 bit.

31

L'unico vantaggio per l'esecuzione di IIS su 64 bit vevrsus a 32 bit è consentire l'accesso a uno spazio di indirizzi di memoria molto più ampio.

Se si sta eseguendo la normale elaborazione della pagina ASPX, è probabile che non sia necessario indirizzare più di 4 GB da un singolo processo. Supponiamo di eseguire in modalità a 32 bit con un web-garden con più processi di lavoro sullo stesso computer. In questo caso ogni processo può indirizzare fino a 4 GB.

Il grande vantaggio può venire quando si esegue il caching. Un processo a 64 bit può mantenere un'enorme cache in memoria (supponendo di avere almeno 32 GB di RAM per supportarlo) per consentire all'utente di memorizzare nella cache contenuto o dati di una pagina complessi, sul server web. Ciò consente di ottenere prof perfes quando i dati sono più costosi da generare rispetto a quelli da recuperare, ad esempio se i dati sono una forma elaborata (diciamo il risultato di una simulazione di monte carlo) o se i dati risiedono fuori casella e sulla rete Il tempo di IO è molto più costoso del tempo di recupero della cache.

Se non si utilizza la memorizzazione nella cache, IIS a 64 bit non ti aiuterà. Richiederà puntatori a 64 bit per ogni ricerca, il che renderà tutto un po 'più lento.

I server a 64 bit sono molto più efficaci se utilizzati per database come SQL Server o altri server di gestione dati (ad esempio, un server di posta elettronica aziendale come Exchange) anziché per l'elaborazione di server, ad esempio IIS o l'operatore lo elabora gestisce. Con uno spazio degli indirizzi a 64 bit, i server che devono gestire i dati possono conservare molti più dati in memoria, insieme a indici e altre cache. Ciò consente di risparmiare tempo e tempo di elaborazione del disco in caso di richiesta di una query. La maggior parte delle app Web non deve occuparsi di più di 4 GB da un singolo processo.


Forse un utile un'analogia: Nel settore dei trasporti, un SUV di grandi dimensioni è come una macchina a 64 bit, mentre un normale, vettura compatta passeggero è come un server a 32 bit. Puoi trasportare molte più cose in un SUV di grandi dimensioni, con una capacità di traino più ampia, 8 posti a sedere e a GVWR of 8600 lbs. Ma con tutto questo, paghi. Il camion è più pesante. Usa più carburante. Se stai trasportando solo 2 persone e un borsone, non hai bisogno di un SUV. Starai meglio con il veicolo più piccolo. Può essere più veloce e più efficiente.

+1

+1 buona analogia. – NotMe

+2

La tua analogia è imperfetta. I processi X64 si esibiranno più velocemente di thunk a 32 bit su 64 bit. Soprattutto su processori IA64 più vecchi in cui si notava un sovraccarico notevole nel thunk. –

+0

Sì. Ad eccezione di alcune app intensive di memoria/puntatore, la maggior parte delle applicazioni può trarre vantaggio dal maggior numero di registri in x86_64 http://www.phoronix.com/scan.php?page=article&item=ubuntu_32_pae&num=1 –

0

Per la disponibilità di memoria, fare riferimento a questo msdn blog.

Disponibilità memoria. Per la mia applicazione, abbiamo ottenuto ciò di cui avevamo bisogno passando da un processo a 32 bit su un sistema operativo a 32 bit a un processo a 32 bit su un sistema operativo a 64 bit, senza il problema di sostituire le librerie di terze parti. Quindi, ci siamo fermati lì. I vantaggi sono: 1) 2-3x di memoria effettiva disponibile per ciascun processo di lavoro IIS e 2) In un sistema operativo a 32 bit in cui il sito Web utilizza molta memoria, altri processi di sistema e siti Web competono per una memoria totale limitata. Per la tua applicazione, guarda quanta memoria usano i tuoi processi di lavoro. Se ogni WP non utilizza molta memoria (ben oltre 1 GB), i processi di lavoro a 64 bit non saranno di grande aiuto.

Per prestazioni, penso che sia necessario testare le proprie applicazioni in entrambe le configurazioni. Dave's post indica che è possibile che si verifichi un peggioramento delle prestazioni a 64 bit. As cheeso notes, alcune applicazioni potrebbero vedere i vantaggi del caching (2GB + di cache è molto, però). Ad eccezione delle applicazioni limitate e semplici, non penso che saremo in grado di fare generalizzazioni delle prestazioni. Potremmo essere in grado di indicare tecnologie specifiche che funzionano meglio o peggio.

0

Oltre alle ovvie differenze di memoria, i processi a 32 bit su un sistema operativo a 64 bit devono essere eseguiti in qualcosa chiamato "Windows su Windows" o modalità WOW.È fondamentalmente un livello di thunk/emulazione. C'è una penalità per le prestazioni se si presta abbastanza attenzione.