Performance tuning in Vmware Workstation–Memory reservation
Pai se poate face un fel de memory reservation si pe VmWare Workstation, nu numai pe ESX sau ESXi. Ideea mi-a venit sa scriu acest post cand un prieten mi-a povestit ca avea ceva probleme de performanta cu o masina virtuala cu 1.5Gb RAM ruland pe un Ubuntu in Vmware Workstation. Hmm.
Problema la Vmware Workstation e ca ruleaza deasupra unui sistem de operare, care are si el nevoile lui de RAM si procesor. Iar cand OS-ul host nu mai are suficient RAM pentru el sau pentru aplicatiile care ruleaza pe el (poate fi chiar si un web browser) o sa inceapa sa mute pagini din RAM in swap file pentru a face loc proceselor pe care le considera prioritare. E posibil sa mute pagini asociate masinilor mele virtuale din Vmware? Normal.
Va dati seama ce se intampla cand OS-ul host face swap, dupa care mai face swap si OS-ul din interiorul masinii virtuale. O sa mearga prost, foarte prost.
Setarile referitoare la memorie le gasiti in Edit – Preferences:
Ce vedeti mai sus sunt setarile default. Ca sfat v-as sugera sa schimbati pe Fit all virtual machine memory into reserved host RAM.
Si sa acordati atentie si valorii Reserved memory. Incercarea de a rezerva foarte mult RAM pentru masinile virtuale poate duce la performante slabe ale OS-ului host, care va trage dupa el si masinile virtuale.
Totusi setarea de mai sus nu e chiar o garantare, pentru ca prioritate va avea intotdeauna OS-ul host, dar poate aduce imbunatatiri de performanta semnificative. Primul efect al setarii ar fi ca nu vei mai putea sa pornesti mai multe masini virtuale decat RAM ai rezervat, ceea ce mi se pare de bun simt.
Celalalt efect si atentie ca asta face diferenta, se refera la memory trimming. La fel ca in ESX si ESXi si Workstation foloseste o serie de “trucuri” pentru a face memory overcommit. Prin memory trimming, Vmware dealoca pagini de memorie nefolosite asociate cu procesele masinilor virtuale si le da inapoi spre folosire OS-ului host. Alocarea si dealocarea asta a memoriei poate face ca performanta masinilor virtuale sa scada considerabil. Setand “Fit all virtual machine memory into reserved host RAM”, memory trimming se dezactiveaza.
Memory trimming mai poate fi dezactivat si setand “MemTrimRate=0” in fisierul de configurare vmx al masinii virtuale sau din GUI:
Alte tehnici de memory overcommit ar fi Ballooning si Page Sharing. Sper sa ca in curand sa-mi fac timp sa scrie si despre ele.
PS: sunt sigur ca voi intalni pareri si pro si contra. Feel free to comment.