Domanda

Fammi inquadrare in questo modo ..

" Supponiamo che io abbia un application server in esecuzione su un processore Intel single core e amp; al servizio di 200 utenti simultanei. Lo spostamento dell'hardware su un sistema dual core consentirà ora al mio server delle applicazioni di servire 350 utenti simultanei " ?

La domanda di base che spero di rispondere è: "L'aggiunta di core di processore aggiuntivi può aiutare ad aumentare le capacità di I / O del server". Perché a volte questo è esattamente ciò che i fornitori di hardware suggeriscono quando promuovono i loro server multi-core.

È stato utile?

Soluzione

Devi profilare il tuo server, determinarne il collo di bottiglia e trattarlo.

Se si è associati alla memoria, acquistare più memoria o acquistare un computer con memoria più veloce.

Se sei legato al disco e stai facendo un sacco di contenuti statici, considera un'unità SSD.

Se è associato al database, consideralo.

Ma di solito stai "quotando la configurazione" e modificando la tua configurazione, ad es. la modifica del numero di thread in un pool o simili ti darà un miglioramento immediato.

Molti server web e database sono esattamente i software scritti per sfruttare i core extra. Naturalmente, molti addebitano anche commissioni di licenza per core, quindi considera anche questo aspetto.

Altri suggerimenti

Potresti vedere o meno un vantaggio, ma poiché la CPU non sta realmente eseguendo l'I / O, non mi aspetto alcun vantaggio significativo se le attività sono principalmente legate all'I / O.

EDIT: la mia risposta presuppone che il tuo codice sia scritto in modo tale da utilizzare effettivamente più core. In caso contrario, l'applicazione non beneficerà di core aggiuntivi, ma la macchina sarà meglio equipaggiata per svolgere altre attività simultanee.

Ciò, ovviamente, dipende da come è stato scritto il server delle applicazioni. Se il software non utilizza alcuna tecnica di programmazione parallela, non è possibile eseguirlo in parallelo, anche se l'hardware lo supporta.

Se il tuo server è a thread singolo (usando un IO basato sulla selezione) e l'elaborazione della richiesta è priva di effetti collaterali (cioè potrebbe essere concettualmente parallelizzata), allora sicuramente eseguire (abbinate) più istanze su una macchina multi-core massimizzerà il utilità computazionale della macchina.

Il fatto che ciò si traduca in un throughput più elevato o meno dipende dal fatto che l'elaborazione della richiesta sia stata associata alla CPU. Come regola generale, IO è il principale collo di bottiglia nei sistemi distribuiti. Detto questo, se l'assemblaggio del messaggio (richiesta) richiede un calcolo significativo, allora c'è un certo sovraccarico della CPU per richiesta oltre ai costi di I / O. Avere più cpus assist farebbe chiaramente la differenza in quel caso.

Al di là delle considerazioni a livello di protocollo, ovviamente se l'elaborazione di ogni richiesta richiede calcoli significativi, avere un collo di bottiglia della CPU influirà sulla disponibilità del server. L'uso di più CPU sarà chiaramente di aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top