Linus Torvalds heeft een set patches voorbereid voor de geheugbeheerder in de Linux-kernel, die optimalisatie toepassen voor het lezen van kleine datablocks uit de page cache zonder atomair wijziging van de referentieteller (refcount) in de folio-structuur. In de commit-tekst staat dat de wijzigingen, de bijbehorende tests en de conceptnotities zijn gemaakt door de AI-assistent Claude Code onder toezicht van Torvalds. De wijziging is toegevoegd aan een aparte tak van de kernel noref-filemap-read-with-llm en het is nog niet duidelijk of deze naar de hoofdtak zal worden overgebracht of dat het gewoon een intern experiment is.
Tijdens de tests is het dankzij de patches gelukt om de leescapaciteit van kleine bestanden in een configuratie met 8 threads van 9.9-10.4 naar 30-33 miljoen operaties per seconde te verhogen (een groei van 3 keer), met 4 threads van 8.9-11.6 naar 25-26 miljoen/sec (een groei van 2 keer), en bij een een-threadbelasting van 7.9-8.1 naar 8.8-8.9 miljoen/sec. De prestatieverbetering wordt verklaard door het feit dat er bij gelijktijdige toegang tot de page cache een sterke concurrentie tussen threads ontstaat bij toegang tot de cache. Bijvoorbeeld, wanneer 8 threads proberen tegelijkertijd 16 bytes gegevens te lezen, wordt 99.92% van de tijd niet besteed aan het lezen zelf, maar aan het wachten op toegang tot de referentieteller.
In de patch wordt voor de waarborging van gegevenscorrectheid in plaats van afzonderlijke vergrendelingen, wijzigingen van referentietellers of tussentijdse buffering een alternatieve methode toegepast, die gebruik maakt van uitgesteld geheugen vrijgeven met synchronisatie via het RCU-mechanisme (Read-Copy-Update). De methode die in de patch wordt voorgesteld, garandeert dat de geheugenpagina niet fysiek zal worden vrijgegeven totdat de lezende thread de gegevenskopie heeft voltooid.
Bron: opennet.ru
