Deux changements mémoire de Linux 7.3 réduisent des contentions distinctes : recherche inverse de KSM et libération d’objets compressés avec zsmalloc. Les chiffres portent sur des opérations précises, pas sur toute application.

KSM : restreindre la recherche inverse
La demande de gestion mémoire inclut l’optimisation KSM de Xu Xin. KSM partage des pages anonymes identiques ; la recherche inverse retrouve les mappings associés à une page partagée. Beaucoup de zones mémoire virtuelles découpées peuvent dépendre du même anon_vma, ce qui rend une recherche trop large coûteuse.
La description v11 utilise un index de page approprié pour la restreindre. Sur son benchmark de 20 000 VMA partageant un anon_vma, le maintien maximal du verrou passe de 705 à 1,67 ms ; la moyenne corrigée vaut 1,44 ms. L’observation Java en production, citée séparément, relevait un maximum initial de 228 ms. Ce sont deux observations différentes.
Les opérations ayant besoin du même verrou peuvent attendre derrière ce parcours. Cela explique un mécanisme de latence ; la machine entière ne se fige pas nécessairement 705 ms. Ce chiffre ne diagnostique pas non plus un timeout de machine virtuelle inexpliqué.
zsmalloc : réduire deux sources de contention
La série v6 de Wenchao Hao vise la libération concurrente de pages compressées. Un encodage adapté permet de retrouver la classe de taille sans verrou de lecture du pool ; la libération des pages sort aussi du verrou de classe.
L’implémentation conserve le verrou du pool quand l’encodage ne peut pas contenir l’index de classe. Cela inclut les systèmes 32 bits et certaines configurations 64 bits. Affirmer que toute compilation 64 bits supprime ce verrou serait excessif.
Le test zram du développeur mappe et remplit 256 Mo par processus, les évacue avec lzo-rle, puis les libère simultanément. Sur Raspberry Pi 4B, le cas à quatre processus passe de 202,9 à 110,6 ms, environ 1,83×. Le cas à un processus passe de 59 à 56 ms. Le résultat dépend de la concurrence ; le plus gros multiplicateur ne représente pas toute charge.
Distinguer mesure et interprétation
L’illustration place les résultats Pi sur une même échelle de durée. Notre calcul donne environ 45,5 % de temps en moins à quatre processus, contre 5,1 % à un seul. Il interprète les mesures publiées du développeur ; aucun nouveau test matériel n’est revendiqué.
Avant une comparaison de noyaux, relevez si KSM ou le swap compressé sont réellement actifs. Gardez compresseur, pression mémoire et concurrence constants, puis mesurez l’opération concernée avec la latence applicative. Un système n’utilisant jamais KSM ne profite pas de sa recherche inverse. Le swap compressé peut solliciter zsmalloc sans utiliser KSM.
Revue du 8 septembre : annonces et documents techniques vérifiés, évolutions ajoutées et illustration explicative reprise.