Facebook je predstavio mehanizam TMO, koji vam omogućuje uštedu 20-32% memorije na poslužiteljima

Inženjeri Facebooka (zabranjen u Ruskoj Federaciji) objavili su prošlogodišnje izvješće o implementaciji TMO (Transparent Memory Offloading) tehnologije, koja omogućuje značajne uštede u RAM-u na poslužiteljima premještanjem sekundarnih podataka koji nisu potrebni za rad na jeftinije diskove, poput NVMe SSD diskovi. Facebook procjenjuje da korištenje TMO-a može uštedjeti 20 do 32% RAM-a na svakom poslužitelju. Rješenje je dizajnirano za korištenje u infrastrukturama gdje se aplikacije izvode u izoliranim spremnicima. Komponente TMO-a na strani jezgre već su uključene u jezgru Linuxa.

Na strani jezgre Linuxa, tehnologiju podržava podsustav PSI (Pressure Stall Information), dostupan počevši od izdanja 4.20. PSI se već koristi u raznim rukovateljima s malo memorije i omogućuje vam analizu informacija o vremenu čekanja za dobivanje različitih resursa (CPU, memorija, I/O). Uz PSI, procesori korisničkog prostora mogu točnije procijeniti razine opterećenja sustava i obrasce usporavanja, omogućujući ranu identifikaciju anomalija, prije nego što imaju primjetan utjecaj na performanse.

U korisničkom prostoru TMO osigurava komponenta Senpai, koja putem cgroup2 dinamički prilagođava ograničenje memorije za spremnike aplikacija na temelju podataka primljenih od PSI-ja. Senpai analizira znakove početka nedostatka resursa putem PSI-ja, procjenjuje osjetljivost aplikacija na usporavanje pristupa memoriji i pokušava odrediti minimalnu veličinu memorije koju zahtijeva spremnik, pri kojoj podaci potrebni za rad ostaju u RAM-u, a prateći podaci smješteni u predmemoriju datoteka ili trenutno nisu izravno korišteni, istiskuju se na swap particiju.

Facebook je predstavio mehanizam TMO, koji vam omogućuje uštedu 20-32% memorije na poslužiteljima

Dakle, bit TMO-a je držati procese na strogoj dijeti u smislu potrošnje memorije, prisiljavajući zamjenu neiskorištenih memorijskih stranica čije izbacivanje ne utječe značajno na performanse (na primjer, stranice s kodom koji se koristi samo tijekom inicijalizacije, i jednokratne stranice podataka u predmemoriju diska). Za razliku od izbacivanja informacija na swap particiju kao odgovor na pritisak memorije, u TMO-u podaci se izbacuju na temelju proaktivnog predviđanja.

Jedan od kriterija za izbacivanje je odsutnost pristupa stranici memorije 5 minuta. Takve stranice nazivamo hladnim memorijskim stranicama i u prosjeku čine oko 35% memorije aplikacije (ovisno o vrsti aplikacije, postoji raspon od 19% do 65%). Prednost uzima u obzir aktivnost povezanu s anonimnim memorijskim stranicama (memorija koju dodjeljuje aplikacija) i memorija koja se koristi za predmemoriju datoteka (koju dodjeljuje kernel). U nekim aplikacijama glavna potrošnja je anonimna memorija, ali u drugima je predmemorija datoteka također važna. Kako bi izbjegao neuravnoteženost izbacivanja predmemorije, TMO koristi novi algoritam straničenja koji proporcionalno izbacuje anonimne stranice i stranice povezane s predmemorijom datoteka.

Guranje stranica koje se rijetko koriste u sporiju memoriju nema značajan utjecaj na performanse, ali može značajno smanjiti troškove hardvera. Podaci se ispiru na SSD diskove ili u komprimirano swap područje u RAM-u. Što se tiče cijene pohrane bajta podataka, korištenje NVMe SSD-a je do 10 puta jeftinije od korištenja kompresije u RAM-u.

Facebook je predstavio mehanizam TMO, koji vam omogućuje uštedu 20-32% memorije na poslužiteljima


Izvor: opennet.ru

Dodajte komentar