Alocarea de memorie în linux, blogul lui sysadmin

Cu mult timp în urmă, într-un sat îndepărtat, serverele CentOS trăiesc în zeci de zeci de perechi. Nucleul este un smarald pur (2.6.18-194.17.1.el5). Ei au trăit, nu s-au întristat, și-au zguduit șuruburile și i-au străpuns lumina. Și trăiau împreună cu ei în acel sat, dezvoltatorul și capul exuberant și un bun administrator. Dezvoltatorul a inventat tot felul de lucruri dificile pe java, iar berea de bere admin a băut, mușchii curg, tastatura picurând.







Și odată ce dezvoltatorul a avut ideea de cap mic blond - pe aceste servere tot felul de documente minunate în formate străine în pură HTML pentru a transforma, și nu doar rândul său, cât și prin OpenOffice. Este conceput - făcut. Și ei dintr-o dată minuni peste noapte se întâmplă - a intrat în serverul de obicei, unul câte unul, întrista, pentru a lucra așa cum este sa oprit pe consola a scris plângăcios că, spun ei, nu-i mai Silushka eroic au, deoarece memoria operativnyya toate caz liber afară, și chiar Oom-criminal nu a făcut- ajută (pentru că, deși încearcă să memoreze înainte de memoria vânătorii, da, rareori ajunge în ceea ce ai nevoie). Da, nu a ieșit doar, și așa este "swap free: 0Kb". Apoi a ajutat doar un răzbunare magică. Descarcat apoi de administrator, pentru că nu a fost timp pentru a bea miere de bere, toate serverele au scăzut numai și a ridicat-le. Da, nu este nimic de făcut - nu veți scrie HTML-ul pe coaja de mesteacăn html, openoffic-ohm cumva totul a fost mai util.

Într-o zi, visul unui vis a fost făcut în fața administratorului. Ea părea să-l sfânt Patreg în lumină aurie și vorbește cu o voce umană: „Ai politica de alocare de memorie, deoarece cele mai vechi timpuri în nucleele Linux implicit adoptate, dar s-ar schimba Pune vm.overcommit_memory = 2 în loc de default 0, poate, opritorul final de memorie.“. El a ascultat sfatul administratorului, dimineața a luat bash miraculos și a făcut așa cum i-a spus Patreg într-un vis:







echo 2> / proc / sys / vm / overcommit_memory

Și atunci sa întâmplat un miracol - serverul nu sa mai prăbușit în epavă, iar din nou a câștigat mai mult decât cel vechi. Admin bucurat și a decis înțelepciunea minat în tablete sculpta, pentru ca fiii si nepotii a fost mai ușor să facă față cu nelinistita Linux și încă mai păstra stocurile /etc/sysctl.conf făcut:

Despre vm.overcommit_ratio = 100 administratorul a înțeles deja, deoarece cu implicit 50 prea adesea java "Nu se poate aloca memorie" a fost primită. Și acum înțelepciunea care a coborât până în acest timp a ajuns până astăzi:

Există doi parametri principali de bază pentru memoria supraordonată:

  • vm.overcommit_memory - responsabil pentru strategia de supraordnare.
  • vm.overcommit_ratio - responsabil pentru nivelul (în procente) al cheltuielilor excesive

Există câteva strategii (vedeți fișierul cu sursa de kernel mm / mmap.c):

  • 0 - OVERCOMMIT_GUESS - abordare euristică a alocării memoriei. El alocă cât mai multă memorie decât procesul dorește. Dar în swap / res doar acele pagini sunt folosite care sunt folosite de acest proces.
  • 1 - OVERCOMMIT_ALWAYS - memoria de tip overcommit este întotdeauna prezentă. Folosiți mai bine aplicațiile complet curbate și fiți pregătiți pentru toate acestea.
  • 2 - OVERCOMMIT_NEVER - fără comisioane. În acest caz, cantitatea permisă de spațiu de memorie va fi swap + ram * overcommit_ratio / 100.

În mod implicit, strategia OVERCOMMIT_GUESS este utilizată, iar vm.overcommit_ratio este setată la 50% și este utilizată numai în cazul OVERCOMMIT_NEVER. Sistemul stochează aproximativ 3% din memorie pentru procesele utilizatorilor root.

Note asemănătoare:







Articole similare

Trimiteți-le prietenilor: