De System i heeft altijd over uitstekende tools beschikt om performance te monitoren en te beheren. Met het toenemende gebruik van System i voor moderne applicaties als Domino, Portal, en als host voor andere operating systemen als partities, worden nieuwe eisen gesteld aan de inrichting van het systeem en aan de tools waarmee de performance gemeten en gemanaged kan worden. Daarnaast is het nodig om voor applicaties als WebSphere te weten hoe die voor een optimale performance ingericht kunnen worden, bovenop de algemene System i-instellingen.
door Ronald Portier
Subsystemen en shared pools
Om te weten hoe applicaties performen, moeten we eerst weten welke resources door welke applicatie gebruikt worden. Voor het CPU-verbruik is dat meestal vrij eenvoudig, omdat elke taak afzonderlijk zichtbaar kan worden gemaakt met WrkActJob. Voor geheugengebruik is dat lastiger, omdat meestal een zeer groot deel van de taken in het systeem gebruikmaken van de *Base-geheugenpool. Als hierin veel paging optreedt (dus het ophalen van gegevens van schijf omdat ze niet in het geheugen staan), dan zien we in WrkSysSts niet of dit komt door een intensief gebruik van Portal of omdat in een batch subsysteem een rapport wordt aangemaakt waarin met SQL-queries miljoenen records aan elkaar worden gekoppeld.
Het is dus belangrijk om iedere applicatie niet alleen in een eigen subsysteem te draaien, maar liefst ook een eigen pool te geven. Hiervoor gebruik ik meestal een shared pool, te configureren via het WrkShrPool-commando. Een Domino-server kan meestal toe met 1 GB geheugen (liever 2 GB), een WAS-server heeft minimaal 1 GB nodig (kan meer zijn, afhankelijk van de applicatie), een WebSphere Portal-server minimaal 2 GB (nog liever 4 GB).

iSeries Navigator – Index Advisor
Normaal gesproken zal het systeem de ingestelde geheugengroottes steeds aanpassen aan het gebruik. Dit leidt vaak tot ongewenste resultaten. Twee oplossingen zijn mogelijk:
-
Systeemwaarde QpfrAdj (automatische performance adjust) op 0 zetten.
-
In WrkShrPool met functietoets F11 naar configuratie performanceparameters gaan en daar minimum- en maximumpercen- tages instellen voor diverse pools, prioriteiten, streefgetallen voor page- faults etc. Verlaag het maximum aantal pagefaults voor de machinepool van 10 naar 5. Zet QpfrAdj in dit geval op 3.
Persoonlijk geef ik meestal de voorkeur aan vaste poolindelingen, dus het aanpassen van de systeemwaarde naar 0. Maar dat vergt vaak wel een wat uitgebreider onderzoek naar de beste indeling. WrkShrPool gebruik ik voor ‘quick en dirty’ aanpassingen, die in de praktijk toch vaak redelijk effectief blijken. Als eenmaal iedere applicatie zijn eigen pool heeft, dan is goed te zien waar bottlenecks zitten in het geheugengebruik. Meestal kan als richtlijn gehanteerd worden dat het aantal pagefault in een seconde normaal gesproken niet boven de 100 uit moet komen.
Gebruik van meerdere partities
Met het indelen van pools kan goed aangestuurd worden welke applicaties meer of minder geheugen tot hun beschikking hebben. Veel lastiger is het om aan te sturen hoeveel CPU applicaties pakken. Er kan wat gespeeld worden met run priorities, maar programma’s die in een loop raken of niet geoptimaliseerde SQL-statements in een programma, kunnen er nog steeds voor zorgen dat één enkele taak alle andere taken wegdrukt.
Om te garanderen dat applicaties een bepaalde hoeveelheid CPU tot hun beschikking hebben, kan het systeem opgedeeld worden in partities. Uiteraard onder bepaalde voorwaarden: er moet per partitie een apart schijvenpakket kunnen worden toegewezen (dus meerdere IOP’s), het systeem moet gemanaged worden met een HMC (niet met een gewoon Twinax- of PC-console). Overigens zal het vanaf V6R1 (2008) mogelijk worden om een i5/OS-partitie te maken binnen een i5/OS-partitie, gebruikmakend van de schijven en andere hardware van een host i5/OS-partitie.
Het gebruik van meerdere partities – ook als het fysiek op het systeem mogelijk is – is niet altijd aan te raden. Om te beginnen heeft iedere partitie zijn eigen beheer nodig qua installatie van i5/OS, bijhouden van PTF’s, aanmaken van gebruikers, etc. Maar waar er voldoende hardware ter beschikking is – en beheer mankracht – is het ideaal voor het scheiden van bijvoorbeeld een productie- en een test/ontwikkelpartitie. Ook is het mogelijk een partitie met een publieke website – bijvoorbeeld gebaseerd op Portal – aan het internet te hangen, een Linux-partitie aan te maken met een firewall-applicatie en dan een interne partitie met backend database. Allemaal op dezelfde hardware, maar wat betreft security volledig gescheiden.
Bij het indelen van het systeem in partities is het belangrijk deze te definiëren als ‘uncapped’ partities. Dat betekent dat de aan een systeem toegekende CPU- en memory-resources een minimum vormen dat altijd ter beschikking is – als er een beroep op wordt gedaan. Maar is er in zo’n partitie nauwelijks activiteit, dan komen de ongebruikte systeemhulpbronnen stante pede ter beschikking van partities waarin wel veel activiteit is.
Databaseperformance en V5R4
DB2/400 kent al enige tijd een scala aan tools om de performance van de database te analyseren. Met bijvoorbeeld het StrDbMon (Start Database Monitor)-commando kun je voor een subset van taken in het systeem – bijvoorbeeld op gebruiker of taaknaam – alle SQL-opdrachten (en dat is inclusief alles wat query-achtige zaken uitvoert, zoals Query/400) in de gaten houden hoe statements worden uitgevoerd, welke toegangspaden worden gebruikt en of dat misschien beter zou kunnen.
Het was echter een werk voor specialisten om de verzamelde informatie te verzamelen en dan te gebruiken om bijvoorbeeld indexen aan te maken voor veel gebruikte bestanden, of om desnoods verbeteringen aan te brengen in de programmering van de applicatie.
Met V5R4 is er nu echter de Index Advisor. Het systeem houdt een aantal basiszaken altijd automatisch in de gaten en stelt aan de hand daarvan adviezen op over de aan te maken indexen. Met een druk op de knop kunnen vervolgens die adviezen ook uitgevoerd worden. De kunst is het vinden van die adviezen (en dus die knop). Gebruik hiervoor iSeries Navigator (zie afbeelding 1). Breid de categorie databases uit en gebruik de rechter muisknop op de databasenaam om een menu te openen waar ook gekozen kan worden voor de Index Advisor. Hierna wordt een scherm getoond met alle adviezen, dat gesorteerd kan worden op hoe vaak een bepaald advies gegeven is (voor statements die veel uitgevoerd worden), of op de tijd die één enkel statement zou duren.
WebSphere-performance en V5R4
Voor WebSphere (en voor Portal) geldt één belangrijk advies: gebruik steeds de laatst beschikbare versie en zorg dat je heel goed bij bent met al je cumulatieve PTF’s. Daarnaast is het voor WebSphere nog belangrijker dan voor andere applicaties om in een eigen geheugenpool te draaien met ruim voldoende geheugen (en activity level).
Voor V5R4 is een nieuwe 32-bit Java Virtual Machine beschikbaar gekomen. Deze gebruikt tientallen procenten minder geheugen dan de 64-bit machine – die natuurlijk wel extreem schaalbaar is, maar dat is vooral een voordeel voor de allergrootste systemen. Vanaf WebSphere 6.1 kan deze Virtual Machine gebruikt worden. Sterker nog, er is een script beschikbaar in WAS 6.1 dat alle bestaande geconfigureerde machines in één klap om kan zetten naar gebruik van de nieuwe JVM. Helaas is er nog geen Portal-versie voor WAS 6.1, maar binnenkort wel.
Voor het tunen van WebSphere zijn een flink aantal Redbooks gepubliceerd. In V5R4 is er echter een performance-wizard beschikbaar via de webadministrator voor i5/OS. Door simpelweg een bestaande installatie te kiezen en de wizard te draaien, worden aanbevelingen gedaan, zowel voor de basis systeeminrichting als specifiek voor WebSphere en eventueel daaraan gekoppelde HTTP-servers. Daarbij is er ook de keuze om de adviezen direct in het systeem door te voeren (zie afbeelding 2).
De betreffende wizard stelt zaken in als automatische performance adjustment, pool sizes en activity levels, aantal threads, aantal connecties met de database connection pooling, etc. Hoewel de Performance Advisor natuurlijk uitgaat van een grootste gemene deler van installaties, en daarmee niet de laatste druppel performance uit het systeem zal persen, zijn toch spectaculaire verbeteringen in performance mogelijk – mits uw hardware natuurlijk aan de vereisten voldoet die nodig zijn om WebSphere te kunnen draaien. Ook hier geldt dat een systeem met te weinig resources nooit getuned kan worden om toch een goede performance te leveren.

WebSphere Performance Advisor
Andere tools
Tot nu toe hebben we alleen de tools besproken die OOTBR (out of the box ready to run) met System i worden meegeleverd. Voor het overige zijn er nog twee tools die vaak essentieel zijn voor het monitoren en instellen van een juiste performance; één van IBM en één van Tango/04.
Het licensed program 5722PT1 Performance Tools bevat een deel dat gebruikt kan worden om performance te meten en wordt standaard met i5/OS meegeleverd.
En dat al vanaf de eerste releases van OS/400. De meetgegevens zouden met eigen tools geanalyseerd kunnen worden, gebaseerd op queries over de bestanden met performancedata. Echter, IBM heeft al een zeer uitgebreide analysetool, de Manager Feature van 5722PT1. Hiermee kunnen problemen opgespoord worden die niet zozeer te maken hebben met een absoluut tekort aan resources, maar bijvoorbeeld met locking, of met bepaalde taken die heel veel I/O doen etc. Ook kan blijken dat bepaalde schijfarmen worden overbelast, of netwerkpoorten.
Het mooie van de Manager Feature is dat die niet op het systeem zelf hoeft te staan. De ‘no charge agent’ is genoeg om over een aantal dagen de performance te meten, waarna de meetgegevens op tape kunnen worden gezet (of overgebracht via FTP) en door een service provider worden geanalyseerd (die dan uiteraard wel de Manager Feature moet hebben).
Onafhankelijk van IBM heeft Tango/04 een zeer uitgebreide set tools voor het optimaliseren van de System i-performance onder de algemene naam Visual Control. Een aantal modules zijn: Visual Control voor jobs, die run priorities en timeslices manipuleert om te voorkomen dat één taak andere taken aan de kant drukt en om te zorgen voor snelle responsetijden van interactieve taken; Visual Control voor Windows, waarmee de performance van meerdere System i-systemen real-time in de gaten gehouden kan worden.
Een heel nuttige module in dit verband is ook Visual Control LPAR Tuner die met name voor de grote bedrijven ervoor kan zorgen dat niet een LPAR een flink aantal ongebruikte resources heeft, terwijl andere LPAR’s tegen hun grenzen aanlopen.
Conclusie
Zonder extra investeringen in hardware en software kan op System i zeer veel gedaan worden om de performance te monitoren en te verbeteren. Indien meer nodig is, bieden zowel IBM als onafhankelijke leveranciers daar de mogelijkheden voor.
Voor meer informatie over dit artikel van Ronald Portier kunt u contact opnemen met info@eniac.nl.
|