Greg Kroah-Hartman è al lavoro da diverso tempo su una nuova system call per leggere file di piccole dimensioni in modo più efficiente. Il nome scelto dovrebbe essere, con poca fantasia, readfile(). Nonostante sembra aver preso forma abbastanza bene, sono passati diversi mesi senza alcun aggiornamento. Ora pare sia finalmente giunto il momento di una sua concreta integrazione nel kernel Linux.
Linux 5.10: readfile() syscall
Le system call, in Linux, sono frutto di uno degli aspetti più importanti del sistema operativo, ovvero la separazione tra il kernel ed i processi utente. Semplificando, i programmi che non appartengo al sistema non hanno possibilità di accedere direttamente alle risorse hardware come la CPU o la memoria. Le chiamate di sistema, quindi, sono il metodo utilizzato per far comunicare l’user space con il kernel space. Esempi di syscall sono open(), read(), write(), close() per la gestione dei file o fork() e exit() per il controllo dei processi.
Readfile() (da non confondere con l’omonima funzione in PHP) è una nuova syscall destinata alla lettura veloce ed efficiente di piccoli file in Linux. Per ottenere questo fine utilizza una singola chiamata per leggere un file direttamente in un buffer, senza dover utilizzare le syscall separate open, read, close, e così via. Un unico processo snello, quindi, che può aiutare non poco le prestazioni, specialmente se si leggono molti piccoli file come su sysfs, debugfs e simili.
L’occasione di riparlare dell’integrazione di questa nuova chiamata nel kernel Linux è nata a seguito di questa discussione circa Intel e delle sue patch per il supporto di nuove CPU ibride. In particolare l’utilizzo dei metodi tradizionali porterebbe a gravi cali prestazionali. Questi colli di bottiglia, quindi, sarebbero superabili proprio grazie all’adozione di readfile(). Greg ha aggiornato il suo branch Git per una eventuale implementazione in Linux 5.10. Si spera, quindi, che ora che c’è un potenziale utilizzo pratico di readfile(), la potremo vedere implementata nella versione del kernel Linux rilasciata entro il 2021.
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.