W piątek opublikowano zaktualizowany zestaw poprawek, które wydają się poprawiać wydajność maszyny wirtualnej gościa z systemem Linux, gdy host jest pod dużym obciążeniem pamięci.
Od połowy 2021 roku Google ChromeOS używa podobnego kodu na „dziesiątkach milionów urządzeń”, a ostatnio inżynier Google, Yu Zhao – znany ze swojej pracy nad MGLRU – pracował nad tym ulepszeniem.
Intencją poprawek jest zapewnienie szybkiej ścieżki do wyczyszczenia dostępnego bitu bez blokowania MMU KVM. Yu Zhao wcześniej opublikował te łatki w lutym, podczas gdy piątkowe łatki v2 refaktoryzują kod i uwzględniają opinie z wcześniejszej recenzji.
W serii poprawek wyjaśniono:
“Celem tego zestawu poprawek jest aby zoptymalizować wydajność gości, gdy pamięć hosta jest przeciążona.Koncentruje się na prostym, ale powszechnym przypadku, w którym sprzęt ustawia dostępny bit w PTE KVM, a maszyny wirtualne nie są zagnieżdżone.Złożone przypadki wracają do istniejącej wolnej ścieżki, w której kvm->mmu_lock następnie wybierana jest szybka ścieżka.
Szybka ścieżka opiera się na dwóch technikach bezpiecznego czyszczenia bitu, do którego uzyskano dostęp: RCU i CAS. Pierwsza chroni tablice stron KVM przed zwolnieniem, podczas gdy druga usuwa bit atomowo, do którego uzyskano dostęp, zarówno ze strony sprzętu, jak i innego oprogramowania table walkers.”
Wkrótce pojawią się testy porównawcze do ilościowego określenia poprawy wydajności gościa maszyny wirtualnej, podczas gdy host jest obciążony presją pamięci.
Inżynierowie Google pracują również nad raportowaniem zestawu roboczego, aby lepiej radzić sobie z nadmiernie obciążonymi maszynami wirtualnymi, co jest kolejnym ulepszeniem jądra.