Linux 7.3 étend RWF_DONTCACHE aux périphériques bloc. L’application peut demander des accès bufferisés avec nettoyage dropbehind pour limiter la rétention des données sans réutilisation prévue. Ce n’est pas de l’I/O directe et le cache n’est pas forcément vide au retour de l’appel.

Ce qui a été intégré
L’intégration du sous-système bloc comprend l’exécution des complétions en contexte de tâche et le nettoyage après writeback. Les opérations des périphériques bloc annoncent ce support par FOP_DONTCACHE.
Cela concerne les applications qui adressent directement un périphérique bloc. Une base stockant des fichiers ordinaires suit un autre chemin d’I/O, dont le support se vérifie séparément.
« Supprimer après usage » comporte des conditions
Le code du cache de pages vérifie si un folio est sale ou encore en cours d’écriture avant de l’invalider. Le chemin de complétion tient aussi compte du contexte d’exécution et de l’acquisition du verrou. Certains cas sautent l’invalidation.
Pour une écriture, le retour à l’application et la fin du writeback sont deux événements distincts. Un appel bufferisé peut terminer la copie en mémoire avant la fin de l’écriture vers le stockage. L’affirmation antérieure selon laquelle toutes les pages touchées disparaissent immédiatement après chaque opération était donc excessive.
Demander ce nettoyage ne remplace pas non plus les exigences de durabilité. Rétention du cache, accès direct ou bufferisé et moment où les données sont durablement enregistrées répondent à des questions différentes.
Deux lectures peuvent demander des comportements opposés
Imaginons la lecture unique d’une longue suite d’enregistrements pour calculer une somme de contrôle. Les conserver ensuite peut apporter peu de réutilisation. À l’inverse, relire fréquemment un petit index peut bénéficier de sa présence en mémoire.
Les deux opérations sont des lectures, mais cette étiquette ne décrit pas leur intérêt pour le cache. Une demande par opération exprime cette différence plus précisément qu’une règle identique pour tous les accès d’une application.
Cet exemple ne prédit aucun gain. Concurrence, pages déjà en cache, latence du stockage et pression de récupération mémoire influencent le résultat réel.
Replacer les premières mesures dans leur contexte
Dans un RFC de février, Tal Zussman rapportait des essais sur le périphérique d’une seule machine virtuelle en signalant leur variabilité possible. Ce sont des mesures d’une proposition ancienne, pas un nouveau benchmark de l’implémentation finale de Linux 7.3.
Pour évaluer, utilisez un périphérique de test dédié et jetable, puis comparez mêmes volume de données, réutilisation, limite mémoire et règles de durabilité. Relevez distribution de latence, débit et coût CPU. Modifier la signification d’« écriture terminée » ne constitue pas une comparaison équivalente du cache. Nous n’avons effectué aucun test de stockage ni écriture sur périphérique brut pour cet article.
Sources revérifiées le 8 septembre ; statut, limites et explications corrigés, illustration remplacée.