Mi è capitato l’altro giorno di inciampare su varnish , un acceleratore HTTP per freebsd e linux dal design innovativo, che presenta alcuni punti interessanti.

Anzitutto, fa un sacco di cose: gestione del caching, compressione, load balancing etc. Ma vabè, sono cose abbastanza standard.

Una cosa più carina è l’utilizzo di un linguaggio per la configurazione che viene effettivamente compilato e linkato con il programma, in modo da massimizzare le prestazioni, e da queste parti certe cose le apprezziamo.

Ma il vero motivo per cui il progetto si merita un link è per le Notes from the Architect, ovvero un testo che spiega quali siano le differenze di progettazione tra Varnish e altri software analoghi (in particolare l’autore usa Squid come esempio).

Il tipo, oltre ad essere l’autore della beerware license comunemente usata, è un programmatore di lunga data, si è scritto una sua malloc(), e ha trafficato a lungo nel kernel di freebsd, quindi assumiamo sia una persona vagamente competente.

Cosa si dice nelle note architetturali?
Il testo è interessante, perché sostiene che molti dei programmi attuali sono scritti in uno stile obsoleto che aveva senso 30 anni fa ma che ora fa più danni che bene
Ad esempio, i software non fanno affidamento sulle VM dei sistemi operativi moderni, e cercano di gestire da se la paginazione su disco della cache, creando un overhead notevole senza alcun guadagno, dato che i kernel sono perfettamente in grado di capire cosa swappare e cosa no (e le cpu supportano in hardware certe cose da una vita).
Inoltre, i sistemi SMP/SMT moderni e le ampie cache on die impongono uno stile di programmazione differente dai vecchi 386, che non viene sfruttato, e spesso neanche gestito, da certi software.

Insomma, dateci una letta. Certo, non c’è neanche un benchmark quindi potrebbe essere tutta fuffa, ma d’altronde, anche i benchmark sono fuffa, no? ;)