Tehnologia KSM (fuziunea samei de nucleu)
Figura 1. Serviciul KSMAceastă caracteristică este utilă pentru virtualizare utilizând KVM. Mașina virtuală gazdă moștenește numai memorie din procesul de pornire qemu-kvm la pornire. După pornirea mașinii virtuale gazdă, conținutul imaginii sistemului de operare poate fi partajat cu alte mașini de găzduire care utilizează același sistem de operare sau aceleași aplicații. KSM definește și unifică numai acele pagini de memorie care nu afectează mașina virtuală gazdă și nu compromite securitatea mașinii fizice de hipervizor și a altor mașini de oaspeți. KSM permite KVM să solicite partajarea unor zone identice de memorie ale mașinilor virtuale gazdă. Implementarea experimentală a KSM de la Red Hat a arătat că 52 de instanțe virtuale de Windows XP cu memorie de 1 GB pot rula pe un computer cu 16 GB de memorie RAM.
KSM oferă o utilizare mai bună a memoriei și accelerează funcționarea acesteia. Când se utilizează KSM, este mai puțin probabil ca datele generale să fie eliminate din cache-ul procesorului și din memoria principală. Aceasta reduce numărul de "pierderi" din cache în timpul funcționării mașinilor de oaspeți, ceea ce sporește performanța aplicațiilor și a sistemelor de operare. În plus, partajarea memoriei reduce cantitatea totală de memorie necesară pentru mașinile de oaspeți, ceea ce vă permite să utilizați resursele existente "mai dens".
KSM și NUMA
Începând cu Red Hat Enterprise Linux 6.5, KSM funcționează cu NUMA (Non-Uniform Memory Access). Această caracteristică permite KSM, atunci când fuzionează pagini, să țină cont de topologia NUMA. Acest lucru previne cazurile în care paginile sunt găzduite pe site-uri la distanță și problemele de performanță asociate cu implementarea la distanță.
Red Hat recomandă să nu îmbinați aceleași pagini dacă aceste pagini sunt pe diferite noduri NUMA. Pentru a face acest lucru, trebuie să setați parametrul configurabil / sys / kernel / mm / ksm / merge_nodes la 0. De ce? Mijloacele interne de kernel pot începe să se afle în conflict între ele după un număr mare de fuziuni între noduri. Ca rezultat, daemonul numad poate deveni confuz. Dacă sistemul dvs. are o cantitate mare de memorie liberă, puteți obține performanțe mai mari prin dezactivarea și dezactivarea daemonului KSM. Consultați Ghidul de reglare a performanței Red Hat Enterprise Linux pentru mai multe informații despre NUMA.
Serviciile KSM
Pentru a gestiona KSM în Red Hat Enterprise Linux există două servicii:
- Serviciul ksm pornește și oprește firul kernelului KSM.
- Serviciul ksmtuned monitorizează serviciul ksm. gestionarea dinamic a îmbinării paginilor. Serviciul ksmtuned pornește serviciul ksm și îl oprește dacă există suficientă memorie. Pentru a configura KSM, de exemplu, atunci când o mașină de oaspeți este creată sau distrusă, apelați serviciul ksmtuned retune.
Ambele servicii sunt monitorizate utilizând instrumente standard de gestionare a serviciilor.
Serviciul KSM
Serviciul ksm face parte din pachetul qemu-kvm. În mod implicit, KSM este dezactivat în Red Hat Enterprise Linux 6. Cu toate acestea, când se folosește Red Hat Enterprise Linux 6 ca gazdă KVM, este de obicei activată de serviciile ksm și ksmtuned.
Când serviciul ksm este pornit, KSM va împărți până la jumătate din memoria principală a mașinii fizice pe care este găzduită. Porniți serviciul ksm. KSM utilizează mai multe pagini de memorie partajate.
Serviciul ksm poate fi adăugat la pornirea implicită. Faceți permanent serviciul ksm utilizând comanda chkconfig.
Serviciul de configurare KSM
Serviciul ksmtuned nu are opțiuni. Service ksmtuned reciclează și reglează ksm. Serviciul ksmtuned este notificat prin procesul libvirt. atunci când o mașină virtuală gazdă este creată sau distrusă.
Dacă apelați serviciul ksmtuned retune. Serviciul ksmtuned readuce fișierul de configurare și repornește configurația. Înainte de a începe să descrieți parametrii din fișier, trebuie să clarificați termenii:
- npages - câte pagini ksm vor fi scanate înainte ca ksmd să intre în modul sleep, setat la / sys / kernel / mm / ksm / pages_to_scan;
- rsz este suma memoriei tuturor proceselor qemu-kvm. în Kbytes;
- prag - prag de activare, în Kbytes; ciclul KSM este declanșat atunci când suma thres + rsz depășește valoarea totală a memoriei sistemului.
Variabile și monitorizare KSM
KSM salvează datele de monitorizare în directorul: / sys / kernel / mm / ksm /. Fișierele din acest director sunt actualizate de kernel și oferă o imagine exactă a utilizării KSM. Fiecare dintre următoarele fișiere conține o valoare numerică care vă permite să determinați starea curentă a serviciului:
- full_scans - numărul de pornire a scanării complete;
- pages_shared - numărul total de pagini îmbinate;
- pages_sharing - numărul de pagini îmbinate pentru momentul curent.
- pages_to_scan - numărul de pagini care nu au fost încă scanate;
- pages_unshared - numărul total de pagini îmbinate împărțite în legătură cu înregistrarea datelor noi;
- pages_volatile - numărul de pagini îmbinate care au fost împărțite la momentul curent;
- executați - dacă serviciul KSM rulează;
- sleep_millisecs - câte milisecunde KSM așteaptă următoarea derulare.
Rezultatele activității de configurare KSM sunt salvate în log / var / log / ksmtuned. dacă șirul DEBUG = 1 este adăugat la fișierul /etc/ksmtuned.conf. Locația fișierului jurnal poate fi modificată utilizând parametrul LOGFILE. Schimbarea locației fișierului jurnal nu este recomandată și poate necesita o configurație specială SELinux.
Stația KSM
KSM reduce performanța, care poate fi importantă, de exemplu, cu o putere insuficientă a procesorului. Acest serviciu poate fi dezactivat prin oprirea serviciilor ksmtuned și ksm. Oprirea serviciilor dezactivează KSM până la repornire.
Pentru a dezactiva KSM în timp ce mențineți această stare după repornire, utilizați comanda chkconfig:
Nu schimbați fișierul swap
Asigurați-vă că suma totală a memoriei, inclusiv fișierul de paginare, este suficientă pentru toate procesele în execuție, indiferent dacă KSM rulează. Acest lucru va evita situațiile anormale în cazurile în care paginile nu mai sunt partajate în mod masiv.