Swap tuning în Linux

Acest post ar trebui să înceapă cu “DO NOT TRY THIS AT HOME” sau mai pe românește, “De încercat doar dacă nu-ți mai încapi în piele”

De când a apărut kernelul 2.6, printre multele tricuri posibile pentru tuningul sistemelor Linux se găsesc și multe moduri de a modifica comportamentul și felul de lucru cu swap-ul, și de a schimba modul în care datele vor fi scrise în swap atunci când memoria se va încărca.

Ca idee generală, atunci când o aplicație cere memorie, dar memoria RAM este încărcată total cu alte aplicații, kernelul are două opțiuni de management al memoriei: prima este să reducă cache-ul din RAM – eliminând datele vechi, sau, varianta a doua, să trimită spre swap porțiunile (paginile) mai puțin utilizate ale aplicațiilor care rulează în acel moment. E greu de spus, care variantă este mai bună și kernelul, face o balansare între cele două metode, încercând să ghicească care este mai eficientă doar în baza istoricului activităților recente.

Până la apariția kernelului 2.6. era imposibilă intervenția utilizatorului asupra modurilor de calcul și a modului de lucru, și erau destul de des întâlnite momente în care kernelul lua opțiunea greșită, acțiune finalizată cu o scădere drastică a performanțelor.

Indicele de balansare în swap, poate lua valori de la 0 la 100. La 100, kernelul va încerca întotdeauna să găsească paginile inactive și să le trimită spre disc, în swap. In cazul celălalt, factorul de apariție și redirectare către swap depinde de câtă memorie este folosită de aplicații.

Valoarea implicită este de 60.

Valoarea 0 de exemplu va duce la un comportament asemănător kernelelor vechi, unde aplicația care are nevoie de memorie poate micșora cache-ul pentru a obține o bucată din RAM.

Utilizatorii de laptopuri, vor prefera o valoare apropiată de 30, pentru a nu suprasolicita activitatea harddiscului.

Valoarea actuală a indicelui de balansare în swap se poate vedea cu:

$cat /proc/sys/vm/swappiness

Și poate fi modificat cu comanda:

$echo 30 > /proc/sys/vm/swappiness

Valoarea implicită poate fi de asemenea modificată în /etc/sysctl.conf:

vm.swappiness = 30

Revin la prima frază, nu încercați totuși să vă jucați cu treaba asta pe mașini aflate în producție… E mult mai bine să incercați pe mașini de test…și doar atunci când aveți suficient timp:)

Leave a Reply

Your email address will not be published. Required fields are marked *

CommentLuv badge