ByteDance smanjio latenciju buđenja za 90 posto u Linuxu

ByteDance smanjio latenciju buđenja za 90 posto u Linuxu
0
0

Bytedanceovi inženjeri uspjeli su smanjiti latenciju buđenja za radna opterećenja osjetljiva na kašnjenje za čak 90 posto, zahvaljujući zakrpama koje su ugrađene u Linux 7.3.

Ovotjedni zahtjev za povlačenjem promjena u x86/mm podsustavu donosi ključne popravke koji skraćuju vrijeme tijekom kojeg su prekidi onemogućeni u TLB flushing kodu. To je posebno važno za sustave koji zahtijevaju predvidljivo ponašanje u stvarnom vremenu, poput DPDK radnih opterećenja koja se koriste u mrežnoj infrastrukturi.

Intelov inženjer Dave Hansen u zahtjevu za povlačenje upozorio je da je “to svakako nešto što treba pratiti” kada je riječ o mogućim regresijama. Deset krugova pregleda zakrpa završilo je spajanjem u glavnu granu jezgre.

Problem s predvidljivošću

Bytedanceov inženjer Chuyi Zhou objasnio je da se na x86-64 arhitekturama TLB flushovi izvode putem IPI prekida. Tijekom izlaska iz procesa ili kada se stranice koje je proces mapirao povlače iz memorije, potrebno je čekati brojne IPI operacije. To povećava latenciju raspoređivanja za druge niti na trenutnom CPU-u.

U produkcijskom okruženju Bytedancea primijetili su latenciju izazvanu čekanjem na IPI do 16 milisekundi na stroju sa 16 jezgara. Radna opterećenja osjetljiva na kašnjenje poput DPDK-a konfigurirana su s najvišim prioritetom tako da mogu prekinuti zadatke nižeg prioriteta u bilo kojem trenutku. Otkrili su da je latencija buđenja DPDK-a prvenstveno uzrokovana time što je preemption bio onemogućen na trenutnom CPU-u.

Rezultati u produkciji

Nakon primjene ovih zakrpa, Bytedance više ne bilježi preemption onemogućen dulje od jedne milisekunde na putanji arch_tlbbatch_flush/flush_tlb_mm_range. Ukupni P99 maksimalnih preemption onemogućenih događaja u svakom 30-sekundnom intervalu smanjen je na oko 1,5 milisekundi. Preostala latencija uglavnom je posljedica borbe za zaključavanje.

Ovo je rijetka situacija u kojoj velika kineska internetska tvrtka izravno doprinosi jezgri na način koji koristi svim korisnicima Linuxa, a ne samo njihovom okruženju. Ostaje pitanje hoće li se ove promjene negativno odraziti na sustave s iznimno velikim brojem CPU-a ili na specifične radne tokove koji se oslanjaju na stari način ponašanja.

Ranije najavljene zakrpe u “-next” grani sada su dio glavne jezgre, a testiranje na stvarnim sustavima tek slijedi. Bilo bi zanimljivo vidjeti kako će se ove promjene ponašati na starijim procesorima i u virtualiziranim okruženjima gdje je TLB ponašanje često manje predvidljivo nego na fizičkom hardveru.

ByteDancelatencijalinuxoptimizacijaTLB

Stavovi izneseni u tekstu i u komentarima ne odražavaju nužno stav redakcije.

PRAVILA KOMENTIRANJA: Vaši komentari ne smiju biti kritika drugog komentatora, nego vaše mišljenje, prijedlog ili ideja o temi. Nema rasprave tko je u pravu. Čitatelji neka zaključe što je istina. Cilj nije polemika, nego napredak svih Logičara. Inspiracija, umjesto uvjeravanja. Ako nemate ideju, ne komentirajte. Ne budete li respektirali pravila, biti će te blokirani.
Pretplatiti se
Obavijesti o
0 Komentari
Najstariji
Najnoviji Najviše komentiran
© 2024 – Portal Logično

POVEZANE VIJESTI