Linus Torvalds har tagit fram en uppsÀttning patchar för minneshanteringssystemet i Linux-kÀrnan, som implementerar en optimering för att lÀsa smÄ datablok frÄn sidcache utan att göra en atomÀr förÀndring av referensrÀknaren (refcount) i folio-strukturen. I commit-meddelandet anges att förÀndringar, samt tillhörande tester och utkast till anteckningar, skapades av AI-assistenten Claude Code under övervakning av Torvalds. FörÀndringen har lagts till i en separat gren av kÀrnan noref-filemap-read-with-llm och det Àr Ànnu oklart om den kommer att flyttas till huvudgrenen eller om det bara Àr ett internt experiment.
Vid testning har patcharna lyckats öka genomströmningen för lĂ€sning av smĂ„ filer i en konfiguration med 8 trĂ„dar frĂ„n 9,9â10,4 till 30â33 miljoner operationer per sekund (en ökning med 3 gĂ„nger), med 4 trĂ„dar â frĂ„n 8,9â11,6 till 25â26 miljoner/sek (en ökning med 2 gĂ„nger), och vid enkeltrĂ„dad belastning frĂ„n 7,9â8,1 till 8,8â8,9 miljoner/sek. PrestandaförbĂ€ttringen förklaras av att det vid samtidig Ă„tkomst till sidcache uppstĂ„r hĂ„rd konkurrens mellan trĂ„darna vid Ă„tkomst till cachen. Till exempel, nĂ€r 8 trĂ„dar försöker lĂ€sa 16 byte data samtidigt, spenderas 99,92 % av tiden inte pĂ„ sjĂ€lva lĂ€sningen, utan pĂ„ att vĂ€nta pĂ„ Ă„tkomst till referensrĂ€knaren.
I patchen, för att sÀkerstÀlla datakorrekthet, anvÀnds istÀllet för individuella lÄs, Àndringar av referensrÀknare eller mellanlagring en bypass-lösning som anvÀnder fördröjd minnesfrigöring med synkronisering genom RCU-mekanismen (Read-Copy-Update). Den föreslagna metoden i patchen sÀkerstÀller att minnessidan inte fysiskt frigörs förrÀn den lÀsande trÄden har slutfört datakopieringen.
KĂ€lla: opennet.ru
