← Tutti gli episodi
Copertina di Perche' il tuo programma e' lento
Stagione 70 · Episodio 008

Perche' il tuo programma e' lento

21 settembre 2026 4:47
0:00 4:47

Ciao, e benvenuto nell'ottava puntata della settantesima stagione. Fin qui abbiamo smontato illusioni, per il gusto di capire come funziona la macchina. Ma forse ti stai chiedendo: a me, che scrivo codice tutti i giorni, tutto questo a cosa serve davvero? Oggi ti do la risposta pratica. Perché conoscere gli internals del sistema operativo è ciò che ti fa capire una domanda che prima o poi ti tormenta sempre: perché il mio programma è lento? E non solo capirlo, ma vederlo.

Partiamo dalla verità che ribalta tutto il tuo modo di pensare alle prestazioni. Quando il tuo codice è lento, quasi mai è perché fa troppi calcoli. Il processore è velocissimo, fa miliardi di operazioni al secondo. Nella stragrande maggioranza dei casi, il tuo programma è lento perché sta aspettando. Aspetta la memoria, aspetta il disco, aspetta la rete, aspetta il sistema operativo. E tutte le illusioni che abbiamo visto in questa stagione sono esattamente i posti dove quell'attesa si nasconde. Conoscerle significa sapere dove guardare.

Vediamo la lista dei sospetti, perché sono tutti vecchi amici di questa stagione. Ricordi la memoria virtuale? Se il tuo programma tocca in continuazione pezzi parcheggiati sul disco, ogni difetto di pagina lo inchioda, e tu vedi solo lentezza inspiegabile. Ricordi il cambio di contesto? Se hai troppi processi che si contendono il processore, la macchina passa il tempo a spostare attori invece di farli recitare. Ricordi le chiamate di sistema? Ogni volta che bussi alla porta del nucleo paghi un pedaggio, e un programma che bussa un milione di volte quando ne bastava una spreca tutto lì. E ricordi l'attesa dei dispositivi? Un programma fermo su una lettura da disco o da rete non sta lavorando: sta in coda allo sportello.

Nota il cambio di prospettiva, perché è tutta questione di occhi. Chi non conosce il sistema operativo guarda il proprio programma dall'interno: vede le sue funzioni, le sue variabili, la sua logica. Chi lo conosce, invece, impara a vedere il proprio programma anche da fuori, con gli occhi del sistema operativo. E da fuori il programma appare diverso: non come una sequenza di calcoli, ma come una creatura che ogni tanto chiede memoria, ogni tanto tocca il disco, ogni tanto bussa alla porta del nucleo, ogni tanto si mette in coda ad aspettare. Imparare a vederlo così è metà del lavoro di chi caccia la lentezza.

E qui la parte concreta, perché non devi indovinare: puoi guardare davvero. Il sistema operativo, che vede tutto, è disposto a raccontartelo, se sai chiedere. Ci sono strumenti che ti mostrano quante chiamate di sistema fa il tuo programma, e quali: se scopri che ne fa a valanghe, hai trovato un problema. Ci sono strumenti che ti dicono quanto tempo il processo passa a calcolare e quanto ad aspettare, quanta memoria consuma, quanti difetti di pagina colleziona. È come mettere un microfono e una telecamera addosso al tuo programma, e vederlo comportarsi come lo vede il sistema. Non più teoria: prove concrete, sotto i tuoi occhi.

C'è un'altra cosa pratica che gli internals ti insegnano, ed è che le risorse non sono infinite. Il sistema operativo, da bravo amministratore, mette dei limiti. Quanti file puoi tenere aperti insieme. Quanta memoria può prendere un processo. Quante connessioni. Prima o poi, in un progetto vero, sbatti contro uno di questi limiti, e vedi un errore misterioso che non ha senso finché non sai che esistono i limiti. Chi conosce il sistema operativo, davanti a quell'errore, non va nel panico: sa che ha toccato un tetto, sa quale, e sa come alzarlo o come consumare di meno. L'errore incomprensibile diventa un problema normale, con una causa e una cura.

Voglio che tu porti a casa il ribaltamento di questa puntata, perché cambia il tuo mestiere. Gli internals del sistema operativo non sono cultura generale da sfoggiare: sono lenti di ingrandimento che cambiano quello che riesci a vedere. Senza, un programma lento è un mistero e un errore strano è sfortuna. Con, la lentezza ha sempre un nome e un posto dove nascondersi, e l'errore ha una causa. Non ti servirà tutti i giorni. Ma il giorno in cui qualcosa va storto sul serio, e in produzione succede sempre, la differenza tra chi sa guardare sotto la magia e chi no è la differenza tra risolvere in un'ora e brancolare per una settimana.

Per oggi ci fermiamo qui. Abbiamo tirato le fila pratiche di tutta la stagione. La verità di fondo è che un programma lento quasi sempre non calcola troppo: aspetta. E i posti dove si nasconde l'attesa sono le illusioni che abbiamo studiato: i difetti di pagina della memoria, il costo del cambio di contesto, il pedaggio delle chiamate di sistema, le code sui dispositivi lenti. Il salto è imparare a vedere il proprio programma da fuori, con gli occhi del sistema operativo, e usare gli strumenti che quel sistema offre per trasformare i sospetti in prove. E ricordare che le risorse hanno limiti, e che gli errori misteriosi spesso sono solo limiti toccati. Nella prossima puntata: non esiste il sistema operativo perfetto. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.