Betrifft: AIX 5L Initial Tuning
Aktualisiert: Oktober 2006
Hier sind jaqui Lynchs AIX 5.3 Initial Tuning Guidelines für kommerzielle Workloads. Jaqui schrieb und hielt die "AIX Performance Tuning" Sitzung auf der "IBM System p, AIX, Linux Technical University" im Oktober 2006 in Las Vegas. pseries-a26-aug06
in -p -rfc1323=1
in -p -o sb_max=1310720
in -p -o tcp_sendspace=262144
in -p -o tcp_recvspace=262144
in -p -o udp_sendspace=65536
in -p -o udp_recvspace=655360
nfso -p -o nfs_rfc1323=1
nfso -p -o nfs_socketsize=60000
nfso -p -o nfs_tcp_socketsize=600000
vmo -p -o minperm%=5
vmo -p -o minfree=960
vmo -p -o maxfree=1088
vmo -p -o lru_file_repage=0
vmo -p -o lru_poll_interval=10
ioo -p -o j2_maxPageReadAhead=128
ioo -p -der maxpgahead=16
ioo -p -o j2_maxRandomWrite=32
ioo -p -o maxrandwrt=32
ioo -p -o j2_nBufferPerPagerDevice=1024
ioo -p -o pv_min_pbuf=1024
ioo -p -o numfsbufs=2048
ioo -p -o j2_nPagesPerWriteBehindCluster=32
Bitte testen Sie diese Einstellungen, bevor Sie in die Produktion gehen.
Weitere Informationen finden Sie unter: http://www.circle4.com/papers/pseries-a26-aug06.pdf
Archiv
Oktober 2006: Ich habe meine ursprünglichen AIX 5.3 Tuning-Richtlinien (unten) zurückgezogen. Die meisten gelten noch. Ich verfasse die ursprünglichen Richtlinien hier als Archiv. Das Dokument kann auf Wunsch bei mir angefordert werden.
Einleitung
Hier sind die AIX 5L-Einstellungen, die ich automatisch ändere, wenn ich einen pSeries-Datenbankserver bestelle. Sie werden hier als Bezugspunkt für die Abstimmung eines AIX-Systems bereitgestellt. Wie immer sollten alle Einstellungen überprüft werden, sobald im System Produktionsworkloads ausgeführt werden.
Haftungsausschluss: Die Einstellungen werden "wie besehen" ohne Garantien bereitgestellt. Jedes System ist anders, so dass Ihre Tuning-Anforderungen unterschiedlich sein können.
AIX 5L
In einem früheren "AIX-Tipp" habe ich die AIX 4.3-Einstellungen aufgeführt, die ich für einen Oracle-Benchmark verwendet habe. Dieser Tipp erweitert diese Einstellungen auf AIX 5L. Die Einstellungen in diesem Fall basieren jedoch auf allgemeinen Felderfahrungen und nicht auf einem bestimmten Benchmark.
Die Angabe von Einstellungen für AIX 5L ist komplexer als für AIX 4.3. Der Grund dafür ist, dass AIX 5 mehr Konfigurationsalternativen mit unterschiedlichen Optimierungsanforderungen hat. Zwei wichtige Konfigurationsalternativen sind der 32/64-Bit-Kernel und die JFS/JFS2-Dateisysteme. Eine weitere Überlegung sind die Unterschiede zwischen AIX 5.1 und 5.2. AIX 5.2 definiert einige Tuning-Einstellungen sehr unterschiedlich (asynchrone E/A), verwendet verschiedene Tuning-Befehle und verfügt über neue Tuning-Funktionen (gleichzeitige und direkte E/A). Darüber hinaus gibt es subtile Optimierungsüberlegungen bei der Verwendung von AIX 5.2 Dynamic LPAR. DLPAR liegt jedoch außerhalb des Rahmens dieses Dokuments. Weitere Informationen erhalten Sie bei IBM Supportline.
Verwenden Sie nach Möglichkeit die Optimierungsempfehlungen Ihres Datenbankanbieters. In Ermangelung dieser Informationen bietet dieses Dokument einen vernünftigen Ausgangspunkt. Für die Ersteinrichtung ändere ich automatisch mehrere Speicher-, E/A-, JFS- und Netzwerkeinstellungen. Ich verwende jedoch Standardeinstellungen für die CPU und JFS2, da diese Einstellungen Probleme verursachen können, wenn sie falsch eingestellt sind. Die hier aufgeführten Einstellungen sind nicht vollständig und sollten überprüft werden, nachdem das System geladen wurde.
Obwohl Systemoptimierung eine Kundenverantwortung ist, kann IBM helfen. IBM Supportline kann Bei Fragen zur Optimierung helfen, und IBM Global Services steht für eine eingehendere Untersuchung Ihres Systems zur Verfügung.
Tuning-Methodik
Das Tuning-Ziel besteht darin, die Service Level Agreement (SLA) zu erfüllen. Die SLA ist eine Vereinbarung zwischen der IT und ihren Benutzern, die das Niveau der Dienstnutzer klar angibt. Die SLA ist am effektivsten, wenn die Ziele quantifiziert werden, z. B. Batch- oder Abfrageantwortzeiten. Quantifizierte Ziele helfen, endlose Tuning-Loops zu vermeiden.
Meine Strategie ist es, die AIX-Tuning im "Ballpark" zu bekommen, und dann auf Datenbank-Tuning konzentrieren. Die Datenbankoptimierung bietet oft eine Größenordnung mehr Nutzen als AIX-Tuning. AIX muss jedoch zuerst abgestimmt werden, um eine solide Basis zu schaffen. Die AIX-Einstellungen müssen sich nur im "Ballpark" befinden, um effektiv zu sein.
Systemoptimierung ist ein iterativer Prozess. Sobald Sie einen Engpass beseitigen, tritt ein anderer an seine Stelle. Jedoch, Es ist in der Regel nicht vorteilhaft zu versuchen, alle Engpässe zu beseitigen. Ich halte Die AIX-Tuning für erledigt, wenn:
1) Die SLA wird bei Spitzenlasten erfüllt, oder
2) Es gibt keine Systemengpässe
Eine. CPU hat Leerlaufzeit (sar -P ALL)
- Speicher ist kein Paging (vmstat => pi/po-Spalte)
- I/O-Antwortzeiten durchschnittlich unter 10-15 ms (Filemon)
- Die Reaktionszeiten des Netzwerks liegen innerhalb akzeptabler Grenzen
3) Das System ist gesund
Eine. Keine Hardwarefehler (errpt)
- Keine AIX-Probleme(http://www-1.ibm.com/servers/eserver/support/pseries/fixes/ oder ibm SupportLine anrufen.)
Zusammenfassend lässt sich sagen, dass die Entscheidungsmatrix für die Optimierung wie folgt lautet:
SLA wird nicht erfüllt | SLA wird erfüllt | |
Systemengpässe vorhanden | Optimieren des Systems
|
fertig |
Keine Systemengpässe | Optimieren der Datenbank
|
fertig |
Wenn nach der Abstimmung mit AIX weiterhin Engpässe bestehen, ist das System möglicherweise unterdimensioniert. Erwägen Sie das Hinzufügen von Hardware (CPU, Arbeitsspeicher, Speicher). In einigen Fällen können schlecht geschriebene Abfragen oder Anwendungen die Engpässe verursachen. Die einzige Alternative ist, die Anwendung zu beheben.
Bruce Spencer
baspence@us.ibm.com
CPU/System-Einstellungen
Einstellung | Befehl | Standard | Richtlinie | Kommentare |
Max. Anzahl der Benutzerprozesse | smit chgsys | 128 | 5000+ | |
Maximale Dateigröße | /etc/security/limits | 2 GB | fsize=-1 | Für die Datenbank-ID |
I/O-Verlauf beibehalten | smit chgsys | Nein | Ja | Ein "nice to have" für die Überwachung der Festplattenaktivität |
Die CPU erfordert fast keine anfängliche Abstimmung.
Speichereinstellungen
Einstellung | AIX 5.1 Befehl | AIX 5.2 Befehl | Richtlinie | Kommentare |
Alle | ||||
Paging-Raum | smit pgsp | smit pgsp | 1-5 GB | |
maxclient | vmtune -t | vmo: maxclient% | =maxperm | maxclient muss ≤ maxperm sein |
minfree | vmtune -f | vmo: minfrei | Verwenden der Standardeinstellung | |
maxfree | vmtune –F | vmo: maxfree | maxfree = minfrei +
maxpgahead |
Siehe E/A-Einstellungen für maxpgahead.
Verwenden Sie den größeren der beiden: JFS maxpgahead Oder JFS2 j2_max_Read_Ahead |
Jfs | ||||
minperm | vmtune –p | vmo: minperm% | 15% | |
maxperm | vmtune -P | vmo: maxperm% | 30% | Stellen Sie sicher, dass maxclient ≤ maxperm ist (siehe oben) |
JFS2 | ||||
minperm | vmtune -p | vmo: minperm% | Verwenden der Standardeinstellung | |
maxperm | vmtune -P | vmo:
maxperm% |
Verwenden der Standardeinstellung |
Seitenbereich: Seitenbereich kann relativ klein sein, vorausgesetzt, der Speicher ist richtig dimensioniert und es gibt keine Speicherverluste. AIX 5 verwendet "Demand Paging", was bedeutet, dass Seitenbereich nur als "Spill over" verwendet wird, falls AIX nicht mehr funktioniert. Wenn der Speicher jedoch unterdimensioniert ist oder ein Speicherverlust vorliegt, müssen Sie den Seitenbereich vergrößern, um das "Spillover" aufzunehmen.
Maxperm: maxperm beeinflusst das Paging-Verhalten. Durch Paging wird Speicher frei, indem der "am wenigsten verwendete" Speicher für den temporären Speicher auf den Datenträger kopiert wird. Optimieren Sie maxperm, um so viel wie möglich von der Datenbank im Speicher zu speichern, wenn die Systemseiten. Die Standardeinstellung ist normalerweise nicht optimal, wenn die Systemseiten das Auslagern der Datenbank zuerst begünstigen.
Die anfängliche maxperm-Einstellung hängt davon ab, ob sich das Datenbankdateisystem auf JFS oder JFS2 befindet. Für JFS ändere ich automatisch den Standardwert "maxperm/maxclient" wie oben. Für JFS2 empfehle ich die Verwendung der Standardeinstellungen und die Optimierung auf das System, auf dem eine repräsentative Workload ausgeführt wird. Der Grund dafür ist, dass AIX JFS- und JFS2-Speicher unterschiedlich klassifiziert. JFS wird von "maxperm" gesteuert, was eine "weiche" Grenze ist und mehr verzeihend ist, wenn zu niedrig eingestellt. JFS2 hingegen wird von "maxclient" gesteuert, was eine "harte" Grenze ist. Bei falscher Einstellung kann die Leistung beeinträchtigt werden. Siehe Abschnitt "maxclient" für JFS2.
Wenn das System unter Last ist, können Sie die Einstellung "maxperm" wie folgt optimieren. Aber zuerst ein wenig Hintergrund. AIX klassifiziert Speicher entweder als persistenten oder funktionierenden Speicher. Persistenter Speicher umfasst Dateicache, ausführbare Dateien und Metadaten. Arbeitsspeicher umfasst die Datenbank. Die Zielspeichermenge für persistenten Speicher, wenn das System ausperformt wird, ist die Einstellung "maxperm". (Beachten Sie, dass die maxperm-Einstellung größtenteils ignoriert wird, wenn das System nicht ausgeponen wird.) Der Standardwert "maxperm" von 80 % begünstigt das Auspausstellen der Datenbank zuerst, wodurch die Leistung beeinträchtigt wird. Darüber hinaus sind die tatsächlichen Anforderungen an den persistenten Speicher in der Regel viel niedriger (20-50%).
Die Optimierungsmethode umfasst die Suche nach dem tatsächlichen persistenten Speicher, der verwendet wird, wenn das System unter Last ist (numperm). Legen Sie dann "maxperm" auf 5% unter diesem Wert fest.
maxperm = numperm% – 5%.
(Hinweis: Stellen Sie sicher, dass Sie maxclient=maxperm festlegen. Weitere Informationen finden Sie unter "maxclient" weiter unten.)
Es gibt mehrere Befehle zum Anzeigen der Speichernutzung. Hier sind zwei, die ich benutze.
AIX 5.1: "/usr/samples/kernel/vmtune | grep numperm"
AIX 5.2: "vmstat –v | grep numperm"
Wenn Sie keinen Root-Zugriff zum Ausführen von vmtune haben, können Sie einen anderen Ansatz verwenden. Verwenden Sie die Spalte vmstat "avm", um die Größe des Arbeitsspeichers zu schätzen. Berechnen Sie numperm% wie folgt:
numperm% = 100% – "Arbeitsspeicher%" = 100% – (avm *100 / Gesamtspeicher)
Hinweis "avm" ist in 4k-Seiten gemessen, so dass Sie diese Zahl in die gleichen Einheiten wie Gesamtspeicher konvertieren müssen.
maxclient: Eine Untergruppierung des persistenten Speichers. Daher ist "maxclient" immer kleiner oder gleich "maxperm" (ich habe "maxclient=maxperm" festgelegt).
Der Wert "maxclient" legt die maximale Speichermenge fest, die von seinen Mitgliedern verwendet wird: JFS2, NFS, CDROM und Veritas-Dateisysteme. Der Wert "maxclient" ist ein "hartes" Limit, das immer erzwungen wird.
Wichtig ist, dass JFS2 eine "harte" Grenze hat, JFS jedoch nicht. Es ist besser, das JFS2 als Standard zu belassen, bis das System während der Ausführung einer repräsentativen Last optimiert werden kann. Wenn Sie "maxclient" zu niedrig einstellen, kann die LEISTUNG von JFS2 beeinträchtigt werden.
Tune the"maxclient" mit dem System unter Last. Verwenden Sie die "maxperm" Tuning-Prozedur für die Einstellung "maxclient", und setzen Sie "maxclient" gleich "maxperm". Wenn Sie genauer sein möchten, können Sie den Befehl "svmon –G" verwenden, um die Menge an Arbeitsspeicher anzuzeigen, die vom Clientspeicher verwendet wird. Es wird unter der Spalte "clnt" ("in Use") angezeigt.
svmon -G
Größe inuse free pin virtuell
Speicher 131072 129422 1650 11704 50091
pg Platz 131072 4279
arbeit pers clnt lpage
Anstecker 11704 0 0 0
im Einsatz 47052 76146 6224 0
Der Befehl svmon zeigt auch den Arbeitsspeicher unter der Spalte "Arbeit" an. Alles kommt wie folgt zusammen:
Gesamtspeicher = frei+"arbeiten"+"persistent"
= free+work+(pers+clnt)
= 1650+47052+(76146+6224) = 1331072
minfree: Paging beginnt, wenn der freie Speicher "minfree" erreicht.
maxfree: Gibt an, wann das Paging beendet werden soll.
maxfree = minfree + "MaxPageAhead"
Der Wert "MaxPageAhead" ist maxpgahead für JFS und j2_maxPageReadAhead für JFS2.
I/O-Einstellungen
Einstellung | AIX 5.1 Befehl | AIX 5.2 Befehl | Richtlinie | Kommentare |
Alle | ||||
Festplattenlayout | smit lvm | smit lvm | Alle Daten auf ALLE physischen Datenträger verteilen | |
Warteschlangentiefe für Fibre-Channel-Adapter | smit fcsa | smit fcsa | Siehe Kommentare | |
Asynch-E/A (AIX 5.1)
|
smit chgaio | Min: 1
Max: 1000 Req: 8192
Aktiviert |
In AIX 5.1 ist AIO min/max eine Systemsumme.
Erfordert Einen Neustart |
|
Asynch-E/A (AIX 5.2)
|
smit chgaio | Min: 1
Max: 1000/#CPUs Req: 8192 Aktiviert |
AIX 5.2 AIO min/max ist pro CPU
Erfordert Einen Neustart |
|
Direkt & Gleichzeitige E/A | N/A | Siehe Kommentare | ||
Jfs | ||||
Dateisystempuffer | vmtune -b | ioo: numfsbufs | 500 | Muss vor der Montage von Dateisystemen ausgeführt werden |
minpgahead | vmtune –r | ioo: minpgahead | 2 | |
maxpgahead | vmtune –R | ioo: maxpgahead | 16 | |
JFS2 | ||||
Dateisystempuffer | vmtune -Z | ioo:
j2_nBufferPerPagerDevice |
Standard=512 | Muss vor der Montage von Dateisystemen ausgeführt werden |
minpgahead | vmtune –q | ioo: j2_minPageRead
Vor |
2 | |
maxpgahead | vmtune –Q | ioo: j2_maxPageRead
Vor |
16 |
Disk Layout: Der wichtigste E/A-Optimierungsschritt besteht darin, alle Daten auf alle physischen Laufwerke zu verteilen*. Wenn Sie über ein SAN verfügen, arbeiten Sie eng mit dem SAN-Administrator zusammen, um das logische zu physische Datenträgerlayout zu verstehen. In einem SAN können sich zwei oder mehr hdisks auf demselben physischen Datenträger befinden. (*-Die einzige Ausnahme ist, wenn Sie auf dem Datenträger sichern. Stellen Sie sicher, dass sich die Sicherungsdatenträger auf einem separaten Speichersystem befinden, um einen einzelnen Fehlerpunkt zu vermeiden.)
Warteschlangentiefe für Fibre-Channel-Adapter: Diese Einstellung hängt vom Speicheranbieter ab. Für IBM Shark-Speicher habe ich dies um 100 festgelegt. Wenn Sie Nicht-IBM-Speicher verwenden, wenden Sie sich an Ihren Hersteller, um dessen Empfehlung für die Warteschlangentiefe zu erhalten. Es ist bekannt, dass Einstellungen für die hohe Warteschlangentiefe datenbeschädigungen auf einigen Nicht-IBM-Speicher verursachen. Wenn Sie sich nicht sicher sind, verwenden Sie den Standardwert.
Asynch-E/A: Verbessert die Schreibleistung für JFS- und JFS2-Dateisysteme. Sie gilt nicht für unformatierte Partitionen. AIO wird in AIX 5.1 und 5.2 unterschiedlich implementiert. In 5.1 gelten die min/max AIO-Einstellungen für das gesamte System. In 5.2 sind die AIO-Einstellungen pro CPU.
In AIX 5.1 habe ich den "max Server" auf 1000 gesetzt. Dividieren Sie bei einem 5.2-System 1000 durch die Anzahl der CPUs. Ich neige dazu, AIO zu überkonfigurieren, da ein Neustart erforderlich ist. Bei der Konfiguration von "max server" werden keine zusätzlichen Ressourcen verwendet, da AIO-Server nur bei Bedarf erstellt werden. Der "max Server" legt nur das Maximum fest, nicht die tatsächlich verwendete Zahl. Wenn Sie DLPAR verwenden und dynamisch CPUs hinzufügen möchten, wenden Sie sich an Supportline, um die Auswirkungen zu besprechen.
Direkte und gleichzeitigeE/A: Ich habe diese als Platzhalter aufgenommen, da sie vielversprechend aussehen. Allerdings habe ich noch nicht die Erfahrung, sie zu empfehlen. Weitere Informationen finden Sie unter
Direkte I/O: http://www-106.ibm.com/developerworks/eserver/articles/DirectIO.html
Gleichzeitige E/A:: http://www-1.ibm.com/servers/aix/whitepapers/db_perf_aix.pdf
Dateisystempuffer: Unzureichende Puffer beeinträchtigen die E/A-Leistung. Die Standardeinstellung AIX für diese Puffer ist für Datenbankserver in der Regel zu niedrig. JFS/JFS2 werden separat abgestimmt. JFS verwendet "vmtune –b", während JFS2 "vmtune –Z" verwendet.
Achten Sie darauf, den Wert nicht zu hoch festzulegen, wenn Sie einen 32-Bit-Kernel mit einer großen Anzahl von Dateisystemen (50+) ausführen. Die Puffereinstellung ist pro Dateisystem, und Sie können nicht mehr über den Kernelspeicher verfügen, wenn dieser wert zu hoch eingestellt ist. (Dies gilt nicht für den 64-Bit-Kernel, der größere Kernelspeichergrößen unterstützt.)
Optimieren Sie die Dateisystempuffer, wenn das System unter Spitzenlast steht. Führen Sie den folgenden Befehl mehrmals aus:
AIX 5.1: /usr/samples/kernel/vmtune –a | grep fsbufwaitcnt
AIX 5.2: vmstat –v | grep "Dateisystem I/Os ohne fsbuf gesperrt"
Wenn der Wert mit der Zeit steigt, bedeutet dies, dass nicht genügend Puffer vorhanden sind. (Der absolute Wert ist nicht wichtig….nur die Änderungsrate.). Wenn dies der Zuspruch besteht, erhöhen Sie die Anzahl der Dateisystempuffer. Das Dateisystem muss aufgehoben/gemountet werden, damit die neue Einstellung wirksam wird.
Netzwerkeinstellungen
Einstellung | AIX 5.1 Befehl | AIX 5.2 Befehl | Richtlinie | Kommentare |
tcp_sendspace | Nein | smit TunNet | 262144 | |
tcp_recvspace | Nein | " | 262144 | |
rfc1323 | Nein | " | 1 |
Umsetzung
Die Tuning-Konzepte in AIX 5.1 und 5.2 sind die gleichen, aber die Implementierung ist anders.
In AIX 5.1 habe ich den Befehl vmtune in /etc/inittab gesetzt. Ich finde es direkt über dem "/etc/rc"-Eintrag, da einige der Tuning-Befehle ausgeführt werden müssen, bevor /etc/rc die Fallsysteme montiert. Sie können alle vmtune-Optionen mit demselben Befehl kombinieren. Hier ist ein Beispiel für einen /etc/inittab-Eintrag für vmtune.
……..
vmtune:2:wait:/usr/samples/kernel/vmtune –R16 –b465 –p10% -P30%
rc:23456789:wait:/etc/rc…..
…………..
In AIX 5.2 wurde die vmtune in zwei Befehle aufgeteilt: vmo und ioo. Es ist am besten, über "smit tuning" zu konfigurieren.
Verweise
"Datenbankleistungsoptimierung auf AIX",
https://www.redbooks.ibm.com/. Suchen Sie nach Dokument SG24-5511.
"AIX Performance Tools Handbuch",
https://www.redbooks.ibm.com/ Suche nach Dokument SG24-6039
"Verstehen der IBM eServer pSeries-Leistung und -Größe"
https://www.redbooks.ibm.com/ Suchen nach SG24-4810
"Leistungsmanagement-Leitfaden"
http://publib16.boulder.ibm.com/pseries/en_US/infocenter/base/aix52.htm