Montag Aug 19, 2013

Memory-DR fuer Zonen

Zonen bieten unter Anderem die Moeglichkeit, den Hauptspeicher zu begrenzen.  Das geht idR. mit dem Zonen-Parameter "capped-memory", bei dem man die drei Werte "physical", "swap" und "locked" jeweils einzeln setzen kann.  "Physical" entspricht dabei der Resource-Control "zone.max-rss", also dem tatsaechlich belegten Hauptspeicher.  "Swap" entspricht "zone.max-swap" - dem belegten Swapspace und "locked" entspricht "zone.max-locked-memory", dem nicht pagebaren Speicher, typischerweise sind das shared memory Segmente.  Swap und Locked Memory sind dabei recht harte Grenzen, beim physischen Speicher ist es etwas "weicher".   Der physische Speicher wird durch rcapd ueberwacht, der ggf. versucht, Speicherseiten jenseits der erlaubten Menge auf das Swapdevice auszulagern.  Je nach Aktivitaet der Prozesse, die diesen Speicher verwenden, ist das mehr oder weniger erfolgreich, hat aber in jedem Fall zur Folge, dass diese Prozesse durch Paging stark beeintraechtigt werden.

Aendert man diese Werte mittels zonecfg, werden die neuen Werte erst nach einem Neustart der Zone wirksam.  Wirklich dynamisch, wie man das z.B. bei LDoms gewohnt ist, ist das nicht.  Es geht aber auch anders, wie ich an einem kleinen Beispiel zeigen moechte:

Gegeben sei eine kleine Zone, deren Speicherkonfiguration wie folgt aussieht:

root@benjaminchen:~# zonecfg -z orazone info capped-memory
capped-memory:
    physical: 512M
    [swap: 256M]
    [locked: 512M]

Um diese Werte im Betrieb zu aendern, muss an zwei verschiedenen Stellen eingegriffen werden.  Fuer den physischen Speicher beim rcapd, der diesen verwaltet.  Fuer swap und locked memory mit dem normalen Resource Control Kommando prctl.  Um also bspw. alle drei Grenzen zu verdoppeln, brauche ich folgende Kommandos:

root@benjaminchen:~# prctl -n zone.max-swap -v 512m -r -i zone orazone
root@benjaminchen:~# prctl -n zone.max-locked-memory -v 1g -r -i zone orazone
root@benjaminchen:~# rcapadm -z orazone -m 1g

Diese neuen Werte werden sofort, bzw. nach dem naechsten Rekonfigurations-Intervall des rcapd wirksam. Dieses kann man ebenfalls mit rcapadm veraendern. Wichtig ist dabei, dass diese Aenderungen nicht persistent sind. D.h. fuer den naechsten Zonen-Neustart gelten die Werte, die mittels zonecfg gesetzt wurden. Will man beides - persistente Aenderung und sofortige Wirkung, muss man an beiden Stellen eingreifen.

Literatur:

  • Solaris Admin Guide:
    http://docs.oracle.com/cd/E19683-01/817-1592/rm.rcapd-1/index.html
About

Neuigkeiten, Tipps und Wissenswertes rund um SPARC, CMT, Performance und ihre Analyse sowie Erfahrungen mit Solaris auf dem Server und dem Laptop.

This is a bilingual blog (most of the time). Please select your prefered language:
.
The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

Search

Categories
Archives
« August 2013 »
MoDiMiDoFrSaSo
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20
21
22
23
24
25
26
27
28
29
30
31
 
       
Heute