Kategorien
Technologie

KSM (Kernel SamePage Merging) in der Praxis

Das Gan­ze klingt zwar nach bösem Voo­doo, funk­tio­niert aber tat­säch­lich: Ker­nel Same­Page Mer­ging. Mög­lich ist das seit Ker­nel 2.6.32 und funk­tio­niert, ver­ein­facht dar­ge­stellt, so, dass der Ker­nel ver­sucht, iden­ti­sche Spei­cher­in­hal­te zu iden­ti­fi­zie­ren und die­se qua­si intern zu verlinken.

In der Pra­xis set­ze ich das auf einem von mir ver­wal­te­ten Clus­ter mit 14 Kno­ten ein, der mit der auf Vir­tua­li­sie­rung und Clus­te­ring spe­zia­li­sier­ten Linux-Dis­tri­bu­ti­on Prox­mox läuft. Prox­mox ver­eint KVM und con­tai­ner­ba­sier­te Vir­tua­li­sie­rung unter einem Dach, indem auf der einen Sei­te ein ange­pass­ter Linux-Ker­nel für die para­virt-ops-Schnitt­stel­le ein­ge­setzt und auf der ande­ren Sei­te OpenVZ für die con­tai­ner­ba­sier­te Vir­tua­li­sie­rung ver­wen­det wird. Der letz­te Arti­kel hier han­delt von die­sem The­ma. Prox­mox wird direkt auf jedem der Kno­ten instal­liert und danach über eine recht kom­for­ta­ble und moder­ne Web­ober­flä­che administriert.

Zurück zum The­ma, KSM. Ich habe einen ent­spre­chen­den Ker­nel auf einem der Kno­ten instal­liert und betrei­be auf die­sem drei KVM-Maschi­nen mit Win­dows Ser­ver 2008 R2. Alle drei Maschi­nen haben 4 GB RAM zuge­wie­sen bekom­men, soll­ten also 12 GB RAM benö­ti­gen. Jetzt kommt der Knack­punkt: jeder die­ser Kno­ten ver­fügt nur über 8 GB phy­si­ka­li­schen Spei­cher. Rein rech­ne­risch klappt das also nicht, der Kno­ten müss­te anfan­gen zu swap­pen. In der gra­fi­schen Über­sicht des Kno­tens zeigt Prox­mox eine RAM-Aus­las­tung von theo­re­ti­schen 10 GB an, tat­säch­lich wer­den aber nur unge­fähr 3,75 GB ver­wen­det, über die Hälf­te des ver­bau­ten RAMs ist also noch frei. Da die Basis aller drei Instal­la­ti­on iden­tisch ist, kann der nun theo­re­tisch drei Mal beleg­te Spei­cher zu einem Bereich zusam­men­ge­fasst und somit zu 2/3 ein­ge­spart werden.

Das Ver­fah­ren hat natür­lich nicht nur Vor­tei­le: die auf­wän­di­ge­re Spei­cher­ver­wal­tung kos­tet CPU-Zeit. Wenn aber zu erwar­ten ist, dass die instal­lier­ten VMs haupt­säch­lich viel RAM aber wenig Rechen­leis­tung benö­ti­gen, spielt das eine eher unter­ge­ord­ne­te Rol­le. In mei­nem Fal­le kommt pro Kno­ten ein Intel Core2Quad Q9550 zum Ein­satz. CPU-Leis­tung ist also aus­rei­chend da.

Red­Hat hat es geschafft, auf einer Test­ma­schi­ne mit 16 GB RAM 52 (!) VMs mit Win­dows XP par­al­lel zu betrei­ben, jeder Maschi­ne war 1 GB vir­tu­el­les RAM zuge­ord­net wor­den. Noch mal in Zah­len: theo­re­tisch belegt wor­den wären 52 GB, prak­tisch genutzt aber nur 16 GB.