Lighttpd, nginx e altri utilizzano una gamma di tecniche per fornire le massime prestazioni applicative come AIO, sendfile, MMIO, cache e epoll e strutture di dati senza blocchi.Tecniche per migliorare il tasso di transazione
Il mio collega e io abbiamo scritto un piccolo server di applicazioni che utilizza molte di queste tecniche e può anche contenere file statici. Quindi lo abbiamo testato con Apache Bench e confrontato il nostro con lighttpd e nginx e abbiamo almeno trovato le prestazioni per il contenuto statico per file da 100 byte a 1K.
Tuttavia, quando confrontiamo la velocità di transazione sugli stessi file statici con quella di G-WAN, G-WAN è miglia avanti.
So che questa domanda potrebbe essere un po 'soggettiva, ma quali tecniche oltre a quelle ovvie che ho menzionato potrebbero essere utilizzate da Gauthier in GWAN per consentirgli di ottenere prestazioni così sbalorditive?
Il design è il più ovvio. Tuttavia, i test successivi mostrano il carico della mia CPU intorno al 30%. Il collo di bottiglia sembra essere la scheda di rete o il kernel. GWAN sta ancora superando quello che abbiamo.Esistono alcuni trucchi di inizializzazione speciali per aumentare i pacchetti/s attraverso la scheda di rete? – Matt
Se il collo di bottiglia era il kernel, G-WAN non poteva essere più veloce di altri. Il carico della CPU di G-WAN è inferiore perché il suo codice * modalità utente * è (molto) più veloce. Il servlet ** hello.c ** non tocca il disco in modo che il kernel non sia coinvolto nel caricare un file - e anche qui G-WAN è più veloce di un modulo nginx (che, a differenza dei servlet G-WAN, NON viene caricato dinamicamente quindi dovrebbe avere un vantaggio). Codice più veloce, più snello e migliore architettura del programma. Questo è tutto ciò che riguarda G-WAN. – Gil