Il peso degli anni


Linux sarebbe un giovanotto che si avvicina rapidamente ai venti anni old_tuxdi vita. Tuttavia è un kernel: lavoro dell’umano intelletto in un settore che rende molte conoscenze obsolete in sei mesi! Di conseguenza, i quasi venti anni di Linux corrispondono in realtà molte vite di un uomo, nonché a molti milioni di anni-uomo di lavoro.

Ad ogni versione, rilasciata con periodicità di circa due mesi, più di mille sviluppatori vi lavorano migliorando le sue funzionalità, aggiungendo il supporto a nuovi protocolli e driver di periferica. L’obiettivo desiderato è di migliorare la sua scalabilità a sistemi con molti processori e molte risorse, essendo i supercomputer di oggi i notebook di domani. Non tutte le ciambelle riescono però col buco.

Infatti le continue generalizzazioni architetturali e l’aggiunta di sottosistemi modulari più sofisticati non portano sempre beneficio alle macchine di classe inferiore. Anche a detta dello stesso Linus Torvalds in una intervista, il kernel sta diventando tanto “cicciotto”. Fa molte cose e il prezzo che si paga per la versatilità, il più delle volte, è la perdita di agilità.

Ma ciò che non si può descrivere con i numeri non è scienza, è opinione. Immettiamo allora nell’equazione un sito come Phoronix, creato nel 2004 da Michael Larabel: esso si occupa parecchio di Linux con buona professionalità e in larga parte di performance dei sistemi. Qualche anno fa è stata annunciato il Phoronix Test Suite (PTS), un software di test automatico per server farm teso a validare software e hardware su Linux. La suite è controllata remotamente da un’applicazione web chiamata Phoromatic, il tutto rilasciato con licenza GPL v3.

PTS è progettato per tracciare le performance di snapshot giornalieri del kernel Linux, ma esiste anche per la distribuzione Ubuntu, usando due o tre sistemi hardware di riferimento. Ciò che si può notare, seguendo le serie storiche dei grafici per i vari test, è che alcuni sottosistemi del kernel nel corso degli ultimi due anni abbiano subito varie oscillazioni di performance. Mentre certuni migliorano (non troppo), altri ne escono con le ossa rotte: si vedano ad esempio i benchmark relativi a PostgreSQL, che comunque dimostrano una marcata dipendenza dal filesystem utilizzato. Tutto sommato è auspicabile che prima o poi più sviluppatori si mettano a lavorare sulle performance, come la recente attività su utilità di trace come perf dimostra, o l’indefesso lavoro di un esercito di un solo uomo, Ingo Molnar, spesso nel campo del real time.

Non si può migliorare ciò che non si riesca a misurare. Certe volte però la misura può portare a migliorare la configurazione del proprio kernel in base al carico di lavoro utilizzato. L’anno scorso è stato dimostrato come il PTS possa essere utilizzato anche per individuare le patch che siano causa di regressioni, mediante git bisect automatici. Da qui l’idea di profilare il kernel sul carico di lavoro della propria macchina, ricavando automaticamente le opzioni di compilazione in grado di ottimizzare le prestazioni del sistema per il carico suddetto.

Ancora da lavorare prima di riuscire a raggiungere le performance di Mac OS X 10.6 e Windows 7. Fortunatamente, per lo più nel campo della grafica: oggetto di attività frenetica degli sviluppatori X11.

NOTA: questo articolo è stato pubblicato in versione ridotta in Linux&C. n. 70.