Jump to content

Recommended Posts

Ovviamente piu' è specializzata una macchina meglio e'... meno c'è cambio di contesto meglio e'.... se lo sceduler deve fare scelta semplici è meglio etc etc etc...

 

ma... anche se sono collegate in fibra su un sistema linux quanto puo' essere meno vantaggioso gestire una comunicazione tipo quella necessaria ad un server sql tramite lo stack tcp anziche' usare un socket?

 

in definitiva avendo macchine adeguantamente grosse (sovradimensionate e ovviamente multicore/multi cpu!) un sito avra tempi di generazione della pagine inferiori se tutto sta su una macchina sola o se si tiene la cosa su due macchine diverse (ben piu' piccole di quella unica da sola)?

 

puntando quindi ad avere il sito piu' veloce possibile nella generazione della pagine che abbia tempi di risposta mooolto bassi... ha senso separare le cose? oppure è una cosa assolutamente necessaria quando si punta a "risparmiare e si vuole sfruttare l'hw fino all'ultima goccia"?

 

:)

Share this post


Link to post
Share on other sites

in definitiva avendo macchine adeguantamente grosse (sovradimensionate e ovviamente multicore/multi cpu!) un sito avra tempi di generazione della pagine inferiori se tutto sta su una macchina sola o se si tiene la cosa su due macchine diverse (ben piu' piccole di quella unica da sola)?

 

Secondo me due macchine piccole, entrambe con dischi SAS e magari connesse in rete direttamente tra loro con 2 o 4 ethernet gigabit ti daranno maggiori performance rispetto ad un singolo macchinone corazzato.

 

Le 4 ethernet ti permettono di arrivare a 4gbit di banda e speremere appieno i dischi SAS in RAID1/5 (2gbit potrebbero diventare un collo di bottiglia), due macchine distinte ti permettono di fare ottimizzazioni 'migliori' cosa che su una singola macchinona faresti fatica a fare ed inoltre avere dischi separati aiuta non poco le cose.

 

E credo che il costo delle due macchinine così configurate sia di poco superiore (se non uguale) a quello di un singolo macchinone biprocessore quadcore. Ed avresti sicuramente più rapidità in caso di espansione (aggiungi un processore ad entrambe, aggiungi dischi al RAID, aggiungi ram, ecc, senza doverti preoccupare di splittare le macchine in futuro)

 

Forse potresti arrivare ad un risultato simile facendo un macchinone biprocessore con 6 dischi, 3 in raid1 per il web e 3 in raid1 per il mysql ma dipende anche da quali performance vuoi ottenere, in letture, aggiungi dischi al raid e la velocità aumenta, ma maggiore è il numero di dischi nella catena peggiori sono le velocità di scrittura. E dipende anche dalla controller RAID.

Share this post


Link to post
Share on other sites

il mio unico dubbio semplicemente "accademico" era immaginare macchine completamente scariche e provare a vedere cosa succede aprendo una pagina php che faccia una query... per quanti gbit (di banda) hai in rete, la latenza se usi ethernet e' comunque molto alta (rispeto al tempo di risposta che ti puo' dare un socket unix)... e mettere anche lo storage in rete non rallenta ulteriormente?

 

sono d'accordissimo che avere su una batteria raid solo sql con un pattern di accesso sempre standard risulta migliore che non avere anche http che ci accede, os etc... ma a macchine che lavorano praticamente all'1% delle loro possibilità non è piu' veloce accedere a mysql direttamente tramite socket unix anzichè fare un bel giro tcp su due macchine diverse?

 

non è una domanda rivolta ad un normale ambiente di produzione, ma sto solamente cercando un caso in cui si possa dire: si, un sistema unico ti serve prima la pagina rispetto ad un'infrastruttura spaziale con 4 link gbit :P

Share this post


Link to post
Share on other sites
secondo me non puoi prescindere da come è scritto il sw... se vuoi ottimizzare devi mettere mano anche al codice

 

Esatto, PHP essendo un linguaggio interpretato, non potrà mai dare le performance di una applicazione scritta in C o ancora meglio in assembler.

La latenza ethernet, nel caso di una applicazione PHP, è secondo me trascurabile. Impiegherà sempre più tempo l'interprete PHP a processare la pagina che il pacchetto partire ed arrivare al server MySQL...

 

Discorso diverso in caso di applicazioni C/ASM/Altro_linguaggio_compilato, in tal caso potrebbe essere interessante valutarne le performance in entrambe le modalità. Però, si parla sempre di valori sull'ordine dei millisecondi. Nel 99.9% dei casi, ininfluenti data la natura di internet.

 

Devi anche considerare chi sta dall'altra parte del cavo, la sua connessione sarà di qualche ordine di grandezza (10, 100?) volte più lenta rispetto alla tua comunicazione su un canale a 2 o 4gbit tra una macchina database ed una web.

Share this post


Link to post
Share on other sites
non è una domanda rivolta ad un normale ambiente di produzione, ma sto solamente cercando un caso in cui si possa dire: si, un sistema unico ti serve prima la pagina rispetto ad un'infrastruttura spaziale con 4 link gbit :P

 

Se parliamo di ambienti completamente scarichi e/o comunque sovradimensionati rispetto al carico del lavoro, risulta migliore la soluzione su una singola macchina, perche' per quanto puoi fare la connessione veloce tra le due macchine risultera' comunque una latenza dovuta alla connessione (sia a livello fisico che a livello logico).

 

Quindi in questo caso la soluzione singola macchina (puramente da questo punto di vista e in questo specifico caso) risulta essere migliore.

Share this post


Link to post
Share on other sites
Se parliamo di ambienti completamente scarichi e/o comunque sovradimensionati rispetto al carico del lavoro, risulta migliore la soluzione su una singola macchina, perche' per quanto puoi fare la connessione veloce tra le due macchine risultera' comunque una latenza dovuta alla connessione (sia a livello fisico che a livello logico).

 

Quindi in questo caso la soluzione singola macchina (puramente da questo punto di vista e in questo specifico caso) risulta essere migliore.

 

Si, ma se il software che gira è PHP, per me la latenza tra le due macchine è trascurabile in ogni caso...

 

Comunque, dal punto di vista puramente teorico, si due macchine sono più lente rispetto ad una singola anche a causa della latenza ethernet.

Ma bisogna valutare anche l'utilizzo delle macchine ed il software che ci girerà sopra...

Share this post


Link to post
Share on other sites
Si, ma se il software che gira è PHP, per me la latenza tra le due macchine è trascurabile in ogni caso...

 

Comunque, dal punto di vista puramente teorico, si due macchine sono più lente rispetto ad una singola anche a causa della latenza ethernet.

Ma bisogna valutare anche l'utilizzo delle macchine ed il software che ci girerà sopra...

 

Si e' sicuramente trascurabile. Si ragionava solo in termini teorici.

 

Ovviamente il confronto va fatto a parita' di utilizzo delle macchine e di software utilizzato.

Share this post


Link to post
Share on other sites
Si e' sicuramente trascurabile. Si ragionava solo in termini teorici.

 

Ovviamente il confronto va fatto a parita' di utilizzo delle macchine e di software utilizzato.

 

Però anche in termini teorici bisognerebbe valutare il linguaggio utilizzato per la generazione delle pagine (PHP??), perchè come da post originale:

 

in definitiva avendo macchine adeguantamente grosse (sovradimensionate e ovviamente multicore/multi cpu!) un sito avra tempi di generazione della pagine inferiori se tutto sta su una macchina sola o se si tiene la cosa su due macchine diverse (ben piu' piccole di quella unica da sola)?

 

si presumono pagine dinamiche, ed in tal caso, con PHP, anche in termini teorici la latenza è trascurabile.

Share this post


Link to post
Share on other sites

Beh,

lo scopo era evidenziare la differenza tra le due soluzioni.

La latenza imposta dalla connessione fisica e' una delle differenze piu' importanti, trascurarla significa rendere inutile l'analisi. Bisognerebbe poi vedere la quantita' di dati trasmessi in quanto oltre una certa soglia il valore non e' piu' tanto trascurabile, in quanto puo' diventare un collo di bottiglia per l'esecuzione dello script PHP che resta in attesa dei dati necessari alla sua esecuzione.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×