Linus Torvalds je pripravil niz popravkov za podsklop za upravljanje pomnilnika v jedru Linux, ki uvajajo optimizacijo za branje manjših blokov podatkov iz straničnega predpomnilnika brez atomskega spreminjanja števca referenc (refcount) v strukturi folio. V besedilu spremembe je navedeno, da so bile spremembe, povezani testi in osnutek pripombe ustvarjeni z AI-assistentom Claude Code pod nadzorom Torvaldsa. Sprememba je dodana v ločeno vejo jedra noref-filemap-read-with-llm in zaenkrat ni jasno, ali bo prenesena v glavno vejo ali gre le za notranji eksperiment.
Pri testiranju je zahvaljujoč popravkom uspelo povečati propustnost branja manjših datotek v konfiguraciji s 8 niti s 9,9-10,4 na 30-33 milijonov operacij na sekundo (povečanje za 3-krat), s 4 nitmi pa s 8,9-11,6 na 25-26 milijonov/s (povečanje za 2-krat), medtem ko se je pri enonitni obremenitvi povečala s 7,9-8,1 na 8,8-8,9 milijonov/s. Povečanje zmogljivosti je razloženo s tem, da pri hkratnem dostopu do straničnega predpomnilnika pride do močne konkurence med nitmi pri dostopu do predpomnilnika. Na primer, ko 8 niti poskuša hkrati brati po 16 bajtov podatkov, 99,92 % časa ni porabljenega za samo branje, temveč za čakanje na dostop do števca referenc.
V popravku za zagotovitev pravilnosti podatkov namesto postavljanja posameznih zaklepov, sprememb števcev referenc ali vmesnega predpomnjenja se uporablja obvodna rešitev, ki uporablja odloženo sprostitev pomnilnika s sinhronizacijo z mehanizmom RCU (Read-Copy-Update). Predlagana metoda v popravku zagotavlja, da stran pomnilnika ne bo fizično sproščena, dokler branjena nit ne zaključi kopiranja podatkov.
Izvor: opennet.ru
