Linus Torvalds a prĂ©parĂ© un ensemble de correctifs pour le sous-systĂšme de gestion de la mĂ©moire dans le noyau Linux, mettant en Ćuvre une optimisation pour la lecture de petits blocs de donnĂ©es Ă partir du cache de pages sans modification atomique du compteur de rĂ©fĂ©rences (refcount) dans la structure folio. Le message de commit indique que les modifications, les tests associĂ©s et le brouillon du commentaire ont Ă©tĂ© créés par l'assistant IA Claude Code sous le contrĂŽle de Torvalds. Le changement a Ă©tĂ© ajoutĂ© dans une branche sĂ©parĂ©e du noyau noref-filemap-read-with-llm, et il n'est pas encore clair s'il sera intĂ©grĂ© dans la branche principale ou s'il s'agit simplement d'une expĂ©rience interne.
Lors des tests, grĂące aux correctifs, il a Ă©tĂ© possible d'augmenter la bande passante de lecture de petits fichiers dans une configuration Ă 8 threads de 9,9-10,4 Ă 30-33 millions d'opĂ©rations par seconde (augmentation par 3), avec 4 threads - de 8,9-11,6 Ă 25-26 millions/sec (augmentation par 2), et avec une charge mono-thread de 7,9-8,1 Ă 8,8-8,9 millions/sec. L'augmentation des performances est due Ă la forte concurrence entre les threads lors de l'accĂšs au cache de pages. Par exemple, lorsque 8 threads essaient simultanĂ©ment de lire 16 octets de donnĂ©es, 99,92 % du temps est consacrĂ© non pas Ă la lecture elle-mĂȘme, mais Ă l'attente d'accĂšs au compteur de rĂ©fĂ©rences.
Dans le correctif, pour garantir l'exactitude des données, au lieu de définir des verrous séparés, de modifier les compteurs de références ou d'utiliser une mise en tampon intermédiaire, une variante de contournement est appliquée, utilisant un relùchement de mémoire différé avec synchronisation par le mécanisme RCU (Read-Copy-Update). La méthode proposée dans le correctif garantit que la page mémoire ne sera pas physiquement libérée tant que le thread de lecture n'aura pas terminé de copier les données.
Source : opennet.ru
