Facebook izlaida ielāpus, kas uzlabo Slab atmiņas kontrolleri Linux

Romāns Guščins (Facebook programmatūras inženieris) reģistrā Linux kodola izstrādes sarakstā, plāksteru kontrollera atmiņas kartēšanas lietojumprogrammas ielāpu kopums (atmiņas kontrolieris).

Jaunais kontrolieris ir ievērojams pārvietojot plākšņu uzskaiti no atmiņas lapu līmeņa uz kodola objektu līmeni, kas dod iespēju koplietot plātņu lapas dažādās c grupās, nevis piešķirt atsevišķas plākšņu kešatmiņas katrai c grupai.

Romāns atrada to, ko viņš sauc par "ļoti nopietnu trūkumu" esošajā plātņu atmiņas kontrolierī, kas mūsdienās noved pie zemas izmantošanas grupās.

“Patiesais iemesls, kāpēc esošais dizains noved pie zemas plātņu izmantošanas, ir vienkāršs: plātņu lapas izmanto tikai atmiņas kopa.

Ja grupā ir tikai daži noteikta lieluma piešķīrumi vai pēc grupas noņemšanas ir palikuši daži aktīvi objekti vai ja grupā ir viena vītņota programma, kas gandrīz nepiešķir nevienu galveno objektu, bet katru reizi uz jauna centrālā procesora: visos šajos gadījumos plātņu izmantošana ir ļoti zema.

Ja kmem uzskaite ir atspējota, kodols var izmantot brīvu vietu plātņu lapās citiem piešķīrumiem. «

Piedāvātais plāksnes atmiņas kontrolleris Romano Gushchin autors pagājušajā gadā bija diezgan daudzsološs kā palielina efektivitāti par plātnes izmantošanu, samazināt izmantotās atmiņas apjomu par 30-45% un ievērojami samazina kopējo kodola atmiņas patēriņu.

Arī ieviestie ielāpi ir norādījuši ka Facebook jau izmanto kodu savos serveros ražošanā un bija ietaupot ~ 650–700 MB + priekšgala tīmekļa serveriem, datu bāzes kešatmiņa un DNS serveri, cita starpā.

Samazinot nemobilo plātņu skaitu, pozitīvs efekts tiek novērots arī atmiņas sadrumstalotības samazināšanas jomā. Jauns atmiņas kontrolieris ievērojami vienkāršo kodu uzskaites plāksnei un neprasa sarežģītus algoritmus plākšņu kešatmiņu dinamiskai izveidei un dzēšanai katrai grupai c.

Visas atmiņas cgrupas jaunajā ieviešanā izmanto kopēju plākšņu kešatmiņu komplektu, un plākšņu kešatmiņu kalpošanas laiks vairs nav saistīts ar atmiņas ierobežojumu, kas noteikti ar cgroup, kalpošanas laiku.

Precīzākai resursu uzskaitei, kas ieviesta jaunajā plātņu kontrolierī, teorētiski vajadzētu vairāk ielādēt CPU, taču praksē atšķirības izrādījās nenozīmīgas.

Jo īpaši jaunais plātņu draiveris vairākus mēnešus ir izmantots Facebook serveros darbībā, kas apstrādā dažāda veida slodzes, un līdz šim nav konstatētas būtiskas regresijas.

Plāksteris satur pāris daļēji neatkarīgas daļas, kuras var atrast arī ārpus plāksnes atmiņas kontrollera:

  • Apakšlapas ielādes API, ko nākotnē var izmantot, lai uzskaitītu citus objektus, kas nav lapas izmēri, piemēram, percpu piešķīrumi
  • Mem_cgroup_ptr API, kur rādītāji tiek ieskaitīti memcg, var atkārtoti izmantot citu objektu, piemēram, pagecache, efektīvai atjaunošanai.

Tajā pašā laikā ievērojami samazinās atmiņas patēriņš- Dažos resursdatoros bija iespējams ietaupīt līdz 1 GB atmiņas, taču šis indikators lielā mērā ir atkarīgs no slodzes rakstura, kopējais RAM lielums, CPU apjoms un darba ar atmiņu īpašības.

Tā vietā, lai katrai atmiņas grupai izveidotu atsevišķu kmem_cache kopu, tiek izmantotas divas globālās kopas: sakņu kopa neuzskaitītajiem un sakņu grupas cgroup piešķirumiem un otrā kopa visiem pārējiem piešķīrumiem. Tas ļauj vienkāršot atsevišķu kmem_cache pārvaldību visa mūža garumā.

Visbeidzot, ja jūs interesē uzzināt jauno 19 ielāpu komplektu, to var atrast sarakstā kodola pasts.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.