Linus Torvalds hat ein Patch-Set für das Speichermanagement im Linux-Kernel vorbereitet, das eine Optimierung für das Lesen kleiner Datenblöcke aus dem Seiten-Cache implementiert, ohne den Referenzzähler in der folio-Struktur atomar zu ändern. Im Commit-Text wird erwähnt, dass die damit verbundenen Tests und die Entwurfstexte von dem KI-Assistenten Claude Code unter der Aufsicht von Torvalds erstellt wurden. Die Änderung wurde in einen separaten Kernel-Zweig noref-filemap-read-with-llm aufgenommen und es ist bisher unklar, ob sie in den Hauptzweig übernommen wird oder ob es sich lediglich um ein internes Experiment handelt.
Durch die Patches konnte bei Tests die Leseleistung kleiner Dateien in einer 8-Thread-Konfiguration von 9,9-10,4 auf 30-33 Millionen Operationen pro Sekunde (Dreifachsteigerung) erhöht werden, bei 4 Threads von 8,9-11,6 auf 25-26 Millionen/Sekunde (Verdopplung), und bei einseitiger Last von 7,9-8,1 auf 8,8-8,9 Millionen/Sekunde. Die Leistungssteigerung ist darauf zurückzuführen, dass bei gleichzeitigen Zugriffen auf den Seiten-Cache eine starke Konkurrenz zwischen den Threads bei der Cache-Zugänglichkeit besteht. Beispielsweise wird 99,92 % der Zeit nicht mit dem eigentlichen Lesen, sondern mit dem Warten auf den Zugriff auf den Referenzzähler verbracht, wenn 8 Threads gleichzeitig 16 Byte Daten lesen versuchen.
Im Patch wird zur Gewährleistung der Datenkorrektheit anstelle von separaten Sperren, Änderungen der Referenzzähler oder Zwischenpufferung ein Umgehungsansatz verwendet, der verzögertes Freigeben des Speichers mit Synchronisation mittels des RCU-Mechanismus (Read-Copy-Update) anwendet. Die im Patch vorgeschlagene Methode garantiert, dass die Seite im Speicher nicht physisch freigegeben wird, solange der lesende Thread das Kopieren der Daten nicht abgeschlossen hat.
Quelle: opennet.ru
