Dopo che i memory folio non sono riusciti a farlo in Linux 5.15, questa modifica di basso livello al codice di gestione della memoria del kernel che ha possibili implicazioni sulle prestazioni sta cercando di atterrare per Linux 5.16.
In vista della finestra di unione di Linux 5.16 che potrebbe aprirsi domani, Matthew Wilcox ha inviato la sua richiesta pull per l’introduzione dei folio nel kernel. Ecco l’estratto principale della richiesta pull per coloro che non hanno familiarità con i folio o hanno dimenticato i dettagli nei mesi in cui questa funzione è stata in lavorazione:
Il punto di tutto questo abbandono è consentire ai filesystem e alla cache della pagina di gestire la memoria in blocchi più grandi di PAGE_SIZE. Il piano originale era di utilizzare pagine composte come fa THP, ma ho riscontrato problemi con alcune funzioni che si aspettavano solo una pagina iniziale mentre altre si aspettavano la pagina precisa contenente un particolare byte. Il tipo folio consente a una funzione di dichiarare che si aspetta solo una pagina iniziale. Quasi incidentalmente, questo ci permette di rimuovere varie chiamate a VM_BUG_ON(PageTail(page)) e compound_head().
Questa richiesta pull converte solo parti del MM principale e della cache della pagina. Per 5.17, intendiamo convertire vari filesystem (XFS e AFS sono pronti; altri filesystem potrebbero farlo) e anche convertire più MM e cache della pagina in folio. Per la 5.18, i folio multipagina dovrebbero essere pronti.
I folio multipagina offrono alcuni miglioramenti ad alcuni carichi di lavoro. La vittoria dell’80% è reale, ma sembra essere un benchmark artificiale (avvio postgres, che non è un carico di lavoro serio). I carichi di lavoro reali (ad esempio la creazione del kernel, l’esecuzione di postgres in uno stato stazionario, ecc.) sembrano beneficiare tra lo 0-10%. Non ho sentito di alcuna perdita di prestazioni a causa di questa serie. Nessuno ha fatto una seria messa a punto delle prestazioni; Immagino che la modifica dell’algoritmo readahead potrebbe fornire alcune vittorie più interessanti. Ci sono anche altri posti in cui potremmo scegliere di creare folio di grandi dimensioni e attualmente non lo facciamo, come scritture che sono più grandi di PAGE_SIZE.
Per gli utenti finali, significa possibili vantaggi in termini di prestazioni e oltre le successive release del kernel verranno sviluppate le funzionalità relative ai memory folio.
Vedi la richiesta pull per maggiori dettagli. Ora per vedere se Linus Torvalds decide di eseguire queste ~2k+ righe di modifiche o se vengono sollevate altre obiezioni nuove/rinnovate sull’aggiunta.