AIX Paging Space

Paging Space und AIX V4 - Paging Space und AIX V5+

Paging space ab AIX 4.3.3

Beginnend mit AIX 4.3.2 wurde die Nutzung des Paging Space geändert. Die Standard Nutzung wurde damals die Deferred Paging Space Allocation DPSA. D.h. die Nutzung des Paging Space wird solange hinausgezögert, bis im RAM kein Platz mehr ist. Erst dann werden Daten in den Paging Space weggeschrieben. DPSA wird über den Virtual Memory Manager VMM ein- bzw. ausgeschaltet.  

# /usr/samples/kernel/vmtune -d 0/1 (off/on)

Mit DPSA nutzt man late allocation, die späte Allokierung von Paging Space. Bis  4.3.2 war die Standardeinstellung early allocation, die frühe Allokierung (d.h. mit Start eines Programms wurde im Paging Space so viel Platz belegt, wie das Programm auch benötigt). Um DPSA mit early allocation zu nutzen muß man die PSALLOC Variable exportieren:

# export PSALLOC=early

Um die Änderung permanent zu machen, muß sie beim booten des Servers aus einer (rc.-) Datei exportiert werden.

Vorsichtige Naturen werden trotz allen Änderungen den paging space genauso groß anlegen, wie das physikalische RAM. Es sollte aber allen klar sein, ein Server, der seinen paging space ständig nutzt, braucht aber vor allem eines: MEHR RAM. Denn da AIX den paging space heute erst nutzt, wenn der RAM wirklich voll ist, deutet ein gefüllter paging space überdeutlich darauf hin, daß man unbedingt Speicher aufrüsten sollte.

Paging Space, die Anzahl der genutzten Festplatten und Spiegelung

In der Regel wird paging space in der rootvg angelegt. Wenn man die rootvg spiegelt, sollte das paging device ebenfalls unbedingt gespiegelt werden. Da im paging space Daten ausgelagert werden würde bei Ausfall der Festplatte, auf der das ungespiegelte device liegt Teile des genutzten Speicherinhalts verloren gehen. Im günstigsten Fall gehen dabei lediglich ein paar Applikationsprozesse über den Jordan, wahrscheinlicher ist jedoch, daß der Server komplett abstürzt weil dann Teile des laufenden Betriebssystems fehlen. Wer für die Spiegelung der rootvg das mirrorvg Kommando benutzt braucht sich nicht mehr extra darum kümmern, da alle aktuellen AIX Versionen in diesem Fall den Paging Space ebenfalls spiegeln.

Wenn man mehrere paging spaces anlegt, gibt es den einen oder anderen Punkt zu beachten. Zum ersten sollten die paging spaces alle gleich groß sein, da AIX die paging spaces gleichzeitig nacheinander im sog. round-robin Verfahren nutzt. D.h. es verteilt den Inhalt gleichmäßig auf alle paging spaces. (/hd6 wird marginal mehr genutzt, da er beim boot als erstes vorhanden ist. Wenn also ein Paging Space größer ist als die anderen, so ist das hd6.).  Ist nun ein paging space deutlich kleiner als der/die andere/n, fällt er für eine weitere Nutzung aus, sobald er voll ist. Zum zweiten sollten mehrere paging spaces nach Möglichkeit auf verschiedenen Festplatten liegen, also z.B. der default paging space /hd6 auf hdisk0 und gespiegelt auf hdisk1, sowie der zweite paging space auf hdisk2 und  gespiegelt auf hdisk3. Auch hier sollten die paging spaces gleich groß sein. Wenn mehrere paging spaces unbedingt auf ein und derselben Platte liegen sollen (was zu Testzwecken oder zum beheben kurzfristigen Speichermangesl durchaus gemacht werden kann), dann sollte man darauf achten, daß die paging spaces direkt nebeneinander liegen (edge - middle - center - inner middle - inner edge), da, wie oben gesagt, AIX beide paging spaces gleichzeitig benutzt und die Bewegung der Schreib-Leseköpfe der Festplatten einen Rechner wirklich extrem bremsen.

Warum IBM z.B. in der Standardinstallation von VIO Servern auf einer Platte eine hd6 und einen paging00 anlegt ist mir deshalb ein Rätsel. Ein zweiter Paging Space auf ein und derselben Festplatte sollte in der Praxis sofort entfernt werden. Wer möchte kann anschließend hd6 um die entsprechenden Logical Volumes vergrößern, so daß anschließend genausoviel Paging Space vorhanden ist. Allerdings sollte dann darauf geachtet werden, daß die LV alle zusammenhängend auf der Platte liegen. Ggf. hilft ein reorgvg (mit passender LV Intra Policy)

Achtung: eine VG, auf der ein paging space aktiv ist, kann nicht abgehängt werden. Und ohne paging space weigert sich AIX überhaupt zu booten.

Paging space verändern unter AIX 4.3.3 - Paging space löschen und verkleinern unter AIX 5L

Paging space verändern unter AIX 4.3.3

Unter AIX 4.3.3 kann paging space im laufenden Betrieb angelegt jedoch nicht deaktiviert  und deshalb nicht verändert oder gar gelöscht werden. Der primäre paging space /hd6 wird beim boot aus der /sbin/rc.boot mit dem swapon Kommando aktiviert.

Löschen eines paging space

Die Schritte zum entfernen von zusätzlichen paging space (nicht hd6).

# chps -a n paging00

# vi /sbin/rc.boot --> entferne „swapon /dev/paging00

# bosboot -ad /dev/ipldevice

# shutdown -Fr

# rmps paging00

Wenn der default paging space hd6 gelöscht werden soll, dann muß man zunächst einen zweiten (kleinen) paging space anlegen, den man nutzt während hd6 nicht verfügbar ist. Der default paging space muß mindestens 32MB groß sein.

# mkps -a -n -s1 rootvg

# chps -a n hd6

# vi /sbin/rc.boot --> deaktiviere Eintrag für hd6, füge Eintrag für neuen paging space hinzu.

[ ! -f /needcopydump ] && swapon /dev/paging00

# bosboot -a -l /dev/hd5 -d /dev/ipldevice

# sysdumpdev -Pp /dev/sysdumpnull

# shutdown -Fr

# rmps hd6

# mkps -a -n -s<richtige Größe in PP> rootvg hdisk0  --> es wird ein paging01 angelegt

# chlv -h hd6 paging01

# vi /etc/swapspaces --> aktiviere dort hd6 statt paging01

[ ! -f /needcopydump ] && swapon /dev/hd6

# bosboot -a -l /dev/hd5 -d /dev/ipldevice

# chps -a n paging00

# shutdown -Fr

# rmps paging00

# sysdumpdev -Pp /dev/hd6

AIX 5L - verkleinern und löschen von paging space

Unter AIX 5L kann paging space im laufenden Betrieb nicht nur angelegt, sondern auch gelöscht werden. Im folgenden Beispiel wurden zwei (gespiegelte) paging spaces mit jeweils 128 PP angelegt, der default paging space hd6 sowie ein paging00.

# lsvg -l rootvg

rootvg:

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT

[...]

hd6 paging 128 256 2 open/syncd N/A

paging00 paging 128 256 1 open/syncd N/A

[...]

Im folgenden Beispiel werden mit chps im laufenden Betrieb von paging00 12 PP entfernt. Dazu darf der paging space natürlich nicht vollständig gefüllt sein, entfernt werden nur unbenutzte PP. Chps ruft dabei ein Skript shrinkps auf. Der Vorgang kann eine erhebliche Zeit dauern und belastet den Rechner sehr. Dies sollte also nicht zu einer Zeit gemacht werden, zu der der Server stark beansprucht ist.

# chps -d 12 paging00

shrinkps: Temporary paging space paging01 created.

shrinkps: Paging space paging00 removed.

shrinkps: Paging space paging00 recreated with new size.

Ergebnis: beide paging spaces existieren aktiv nebeneinander, der zweite ist um 12 PP verkleinert.

# lsvg -l rootvg

rootvg:

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT

[...]

hd6 paging 128 256 2 open/syncd N/A

paging00 paging 116 232 1 open/syncd N/A

[...]

#

Im nächsten Beispiel soll der zweite paging space gelöscht werden. Dazu verwendet man das neu dazugekommene swapoff Kommando (muß auf das Device abgesetzt werden). Dabei wird aus dem deaktiviertem paging space der genutzte Inhalt in den anderen paging space übertragen. D.h. dort muß natürlich genügend Platz sein. Anschließend wird der paging space durch rmps oder rmlv gelöscht. Hier im Beispiel wurde rmps verwendet. rmps hat den Vorteil, daß die /etc/swapfiles automatisch mit aktualisiert wird, d.h. der gelöschte paging space wird auch dort ausgetragen.

# lsps -a

Page Space Physical Volume Volume Group Size %Used Active Auto

Type

paging00 hdisk0 rootvg 3712MB 1 yes no lv

hd6 hdisk0 rootvg 4096MB 87 yes yes lv

# swapoff /dev/paging00

# lsps -a

Page Space Physical Volume Volume Group Size %Used Active Auto

Type

paging00 hdisk0 rootvg 3712MB 0 no no lv

hd6 hdisk0 rootvg 4096MB 87 yes yes lv

# rmps paging00

Default paging space /hd6 im laufenden Betrieb löschen.

Im Gegensatz zur Aussage, daß man den default paging space NICHT im lfd. Betrieb löschen, bzw. ihn auf unter 32 MB verkleinern kann, ist es vielmehr so, daß das durchaus funktioniert. AIX wenn es einmal läuft legt nämlich nicht absoluten Wert darauf, daß /hd6 existiert, sondern daß überhaupt ein paging space vorhanden ist. Diesen Umstand kann man sich zunutze machen um /hd6 zu verändern. Dabei wird zunächst ein temporärer paging space angelegt und aktiviert, anschließend /hd6 deaktiviert und gelöscht. Danach kann man hd6 neu anlegen und nach deaktiveren des temporären paging spaces diesen wiederum löschen. Übrig bleibt ein im laufenden Betrieb verändertes /hd6. Man sollte es jedoch unbedingt vermeiden den Server neu zu starten, während kein hd6 vorhanden ist.

Defekten Spiegel /hd6 im lfd. Betrieb reparieren

# mkps -s 168 rootvg hdisk0 # sekundären paging space anlegen, gleich groß wie hd6

# swapon /dev/paging00 # sekundären ps aktivieren

# swapoff /dev/hd6 # primären ps deaktivieren

# rmlvcopy hd6 1 # entfernt 1 Kopie

# chlv -s n hd 6 # falls strict oder superstrict gesetzt, sonst schlägt der nächste Schritt fehl

# migratepv -l hd6 hdisk1 # entfernt alle pp von hdisk1 (nach hdisk0)

# mklvcopy hd6 2 hdisk1 # zweite Kopie auf hdisk1 anlegen (nur diese Reihenfolge ergibt primäre PP auf hdisk0, sonst bei lspv Anzeige der primären PP auf hdisk1)

# chlv -s s -u 2 hd6 # superstrict aktivieren

# lsvg -l rootvg # überprüfen -> zweite Kopie ist stale

# syncvg -P 8 -l hd6 # synchronisieren, jeweils 8 pp auf einmal (max. 32)

# swapon /dev/hd6 # primären ps wieder aktivieren

# swapoff /dev/paging00 # sekundären ps abhängen

# rmps paging00 # sekundären ps entfernen

# lsps -a # Probe ob alles i.O.

Mitschnitt einer solchen Aktion:

(0)aix51ml4srv:/root 26$ mkps -s 168 rootvg hdisk0

paging00

(0)aix51ml4srv:/root 27$ swapon /dev/paging00

(0)aix51ml4srv:/root 28$ swapoff /dev/hd6

You have mail in /usr/spool/mail/root

(0)aix51ml4srv:/root 29$ rmlvcopy hd6 1

(0)aix51ml4srv:/root 30$ migratepv -l hd6 hdisk1

0516-1244 migratepv: Destination physical volume hdisk0 contains

partitions of the logical volume hd6.

0516-812 migratepv: Warning, migratepv did not completely succeed;

all physical partitions have not been moved off the PV.

(1)aix51ml4srv:/root 31$

[strictness wegnehmen]

(1)aix51ml4srv:/root 42$ chlv -s n hd6

[superstrict aufheben]

(1)aix51ml4srv:/root 34$ migratepv -l hd6 hdisk1 hdisk0

(0)aix51ml4srv:/root 47$ lslv -m hd6

hd6:N/A

LP PP1 PV1 PP2 PV2 PP3 PV3

0001 0326 hdisk0

0002 0327 hdisk0

0003 0328 hdisk0

(0)aix51ml4srv:/root 47$

(0)aix51ml4srv:/root 47$ mklvcopy hd6 2 hdisk1

(0)aix51ml4srv:/root 48$ chlv -s s -u 2 hd6

(0)aix51ml4srv:/root 49$ lsvg -l rootvg

rootvg:

LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT

hd5 boot 1 2 2 closed/syncd N/A

hd6 paging 168 336 2 closed/stale N/A

hd8 jfs2log 1 2 1 open/syncd N/A

[...]

paging00 paging 168 168 1 open/syncd N/A

loglv00 jfslog 1 2 1 open/syncd N/A

lv00 jfs 2 4 2 open/syncd /usr/local

(0)aix51ml4srv:/root 50$ syncvg -P 32 -l hd6

(0)aix51ml4srv:/root 51$ swapon /dev/hd6

(0)aix51ml4srv:/root 52$ swapoff /dev/paging00

You have mail in /usr/spool/mail/root

(0)aix51ml4srv:/root 53$

(0)aix51ml4srv:/root 53$ rmps paging00

rmlv: Logical volume paging00 is removed.

(0)aix51ml4srv:/root 54$ lsps -a

Page Space Physical Volume Volume Group Size %Used Active Auto Type

hd6 hdisk0 rootvg 5376MB 23 yes yes lv

(0)aix51ml4srv:/root 55$

Details folgen