Netflix otkrio ozbiljno usko grlo u Linux kernelu pri skaliranju kontejnera na modernim procesorima

Netflix je otkrio da globalni mount lock u Linux kernelu može ograničiti skaliranje kontejnera na modernim serverima, posebno na sistemima sa više NUMA domena

Netflix otkrio ozbiljno usko grlo u Linux kernelu pri skaliranju kontejnera na modernim procesorima

Inženjeri kompanije Netflix otkrili su neočekivano usko grlo u performansama prilikom skaliranja kontejnera na modernim cloud serverima. Analiza je pokazala da problem ne potiče samo iz alata poput Kubernetes ili containerd, već iz same arhitekture procesora i načina na koji Linux kernel upravlja fajl sistemom.

Problemi su se pojavili kada su serveri pod velikim opterećenjem počeli da „zamrzavaju“ operacije pokretanja kontejnera, pri čemu su provere stanja aplikacija kasnile i po nekoliko desetina sekundi.

Istraživanje je pokazalo da se uzrok problema nalazi u globalnom mount lock mehanizmu unutar Virtual File System podsistema. Prilikom pokretanja velikog broja kontejnera, runtime mora da izvrši ogroman broj bind mount operacija kako bi mapirao slojeve kontejnerskih slika.

Globalni lock u VFS sloju stvara ozbiljan problem skaliranja

Svaki kontejner može zahtevati desetine mount i unmount operacija, a tokom velikih burst scenarija ukupan broj sistemskih poziva može preći 20.000 mount operacija. Sve ove operacije moraju da pristupe istom globalnom kernel lock-u, što stvara klasično usko grlo u sistemima.

Netflix je takođe utvrdio da se ponašanje sistema značajno razlikuje u zavisnosti od arhitekture procesora.

Na starijim serverima poput AWS r5.metal instanci sa više procesorskih soketa i više NUMA domena, istovremeni pristup deljenim resursima dramatično pogoršava performanse.

Prijavi se na nedeljni Benchmark newsletter
Hvala!

Uspešno ste se prijavili na na naš newsletter! Proverite vaš email nalog kako bi potvrdili prijavu.

Sa druge strane, novije jednoprocesorske konfiguracije poput AWS m7i.metal zasnovane na Intel procesorima ili AWS m7a.24xlarge sa AMD CPU arhitekturom pokazuju mnogo bolje skaliranje zahvaljujući modernijem dizajnu keš memorije i smanjenim NUMA kašnjenjima.

Testiranja su pokazala da faktori poput NUMA topologije, hiperthreading-a i mikroarhitekture keš memorije značajno utiču na to kako se globalni lock konflikti prenose i utiču na čitav sistem.

U pojedinim konfiguracijama čak je i isključivanje Hyper-Threading tehnologije smanjilo latenciju i do 30%.

Da bi rešio problem, Netflix je razmotrio dva pristupa: korišćenje novih kernel mount API-ja koji eliminišu globalni lock i optimizaciju overlay fajl sistema kako bi se smanjio broj mount operacija po kontejneru.

Kompanija je izabrala drugi pristup, reorganizujući način na koji se slojevi kontejnerskih slika montiraju. Time je broj mount operacija smanjen sa linearne složenosti O(n) na konstantno vreme O(1) po kontejneru, čime je praktično eliminisano usko grlo u kernelu.

Ovo istraživanje naglašava važnu lekciju za industriju cloud infrastrukture: stabilno skaliranje modernih distribuiranih sistema zahteva duboko razumevanje kompletnog softverskog i hardverskog steka: od kontejnerskih platformi i fajl sistema do CPU mikroarhitekture, piše InfoQ.

Ostani u toku

Prijavi se na newsletter listu i jednom nedeljno cemo ti poslati email sa najnovijim testovima i vestima iz sveta tehnologije.

Hvala!

Uspešno ste se prijavili na na naš newsletter! Proverite vaš email nalog kako bi potvrdili prijavu.

Možda vam se svidi
Benchmark
Privacy Overview

Ova veb stranica koristi kolačiće kako bismo vam pružili najbolje moguće korisničko iskustvo. Informacije o kolačićima se čuvaju u vašem pregledaču i obavljaju funkcije kao što su prepoznavanje vas kada se vratite na našu veb stranicu i pomoć našem timu da razume koje delove veb stranice smatrate najzanimljivijim i najkorisnijim.