I/O-Durchsatzmessung mittels calibration unter Oracle 11g
von Frank Schneede, ORACLE Deutschland GmbH
Die Implementierung eines I/O Subsystems mit einem hohen Durchsatz ist ein integraler Bestandteil der Infrastruktur für eine zeitgemäße Applikation, sowohl im
Datawarehouse- als auch im OLTP-Umfeld. Defizite im Design des Gesamtsystems wie zum Beispiel eine zu geringe Anzahl eingesetzter Festplatten oder eine nicht ausreichende
Netzwerk-Bandbreite machen sich dann im laufenden Betrieb in Form schlechter Antwortzeiten unangenehm bemerkbar. Um den Kunden zur Vermeidung von Performanceengpässen
eine Hilfe zu geben, hat Oracle vor einiger Zeit die
Oracle Optimized Warehouse Initiative gestartet, die eine auf allen Ebenen der Systemlandschaft ausgewogene Architektur
beschreibt. Diese Initiative hat im September letzten Jahres ihren bisherigen Höhepunkt in der Vorstellung der HP Oracle Database Machine gefunden, die auf den Prinzipien der
well-balanced Architektur beruht. Diesen Idealzustand findet der DBA jedoch in historisch gewachsenen Umgebungen häufig nicht vor - vielmehr hat er für Anwenderklagen über mangelhafte
Antwortzeiten Ursachen und Lösungen zu finden.
Der Prozeß der Problemlösung beginnt üblicherweise mit der Waitevent-Analyse eines AWR-Reports. Hierbei deutet sich durch erhöhte Werte für I/O-bezogene Wait-Events
(Wait Class "User I/O" oder "System I/O") ein Engpass im I/O-Durchsatz an. Um diesen Ansatz weiterzuverfolgen, ist es notwendig, die maximale Rate der I/O Operationen der Datenbank zu messen,
die diese zuverlässig bereitstellen kann. Diesen Vorgang nennt man calibration. Das Ziel einer calibration hängt natürlich auch von dem Lastprofil ab, mit der die Datenbank
betrieben wird:
- OLTP-Last: Fokus auf IOPS und Latenz
- DWH-Last: Fokus auf I/O-Durchsatz
Dieser Community-Tipp zeigt die Möglichkeiten der calibration in der aktuellen Version von Oracle 11g auf.
Damit können I/O-Engpässe in bestehenden Umgebungen aufgezeigt oder auch die I/O Spezifikation einer neuen Systemlandschaft verifiziert werden.
Dabei bieten sich folgende Ansätze zur Analyse des I/O Durchsatzes an, die am Ende dieses Tipps miteinander verglichen werden:
- calibration mit Hilfe eines unabhängigen Utilities
- calibration mit Hilfe der Oracle Datenbank
Bis zur Datenbankversion Oracle 10g war der DBA ausschließlich auf die Nutzung eines unabhängigen Utilities angewiesen, das für die eingesetzte Plattform und die Datenbankversion
vorliegen und installiert werden muss. Über das Oracle Technology Network steht zu diesem Zweck das Tool
ORION zum Download bereit. ORION erzeugt unabhängig von der
Datenbank eine synthetische Last auf dem Speichersystem. Diese Last entspricht von der Charakteristik, also der Verteilung und Art der I/O Operationen sowie den genutzten Betriebssystemaufrufen einer Last,
die durch eine laufende Oracle Datenbank erzeugt wird. Nach Durchführung der Messung hat der DBA einen Richtwert für den Durchsatz der Hardware. Die Messergebnisse können benutzt werden,
um Fehlerquellen abseits der Datenbank auszuschließen oder eine neue Hardware auf deren Eignung hin zu überprüfen. ORION kann für zahlreiche Einsatzmöglichkeiten
parametrisiert werden, an dieser Stelle soll nur ein kurzes Beispiel gezeigt werden.
Die zur Verfügung stehenden LUNs müssen in einem File angegeben werden, das den Namen des durchzuführenden Tests tragen muss. Anschließend wird der Test aufgerufen,
wobei die Anzahl der benutzten Festplatten als Parameter angegeben wird:
In diesem Test, der auf MS Windows Plattform stattfand, standen keine unterschiedlichen Volumes zur
Verfügung, sinnvollerweise sollte hier auf physikalisch separate Festplatten zugegriffen werden.
Das Ergebnis ist dann in einer Datei zusammengefasst:
Zusätzlich werden noch weitere Ergebnisdateien (in diesem Beispiel: mytest_mbps.csv, mytest_iops.csv, mytest_lat.csv) erzeugt, die im csv-Format vorliegen
und, nach erfolgter Bearbeitung in MS Excel, die Messungen visualisieren. Im hier dargestellten Beispiel wurde auf die Visualisierung verzichtet, da die Ergebnisse
der Laborumgebung (Laptop, single disk) hierfür nicht geeignet sind.
Das Tool ORION steht auch für die aktuelle Datenbankversion Oracle 11g auf unterschiedlichen Betriebssystemen, zur Zeit jedoch nicht auf
MS Windows Plattform, zur Verfügung. Für diesen Test wurde daher die Orion Version 10g verwendet.
Zu beachten:
ORION ist eine beta Software, die durch Oracle nicht unterstützt wird. Der Anwender ist also für Konsequenzen,
die sich aus der Benutzung von ORION ergeben, selbst verantwortlich!
Eine bessere Alternative gibt es ab Oracle 11g auch innerhalb der Datenbank. Das Werkzeug zur
calibration des I/O-Systems steht nun als Erweiterung des bewährten Database Resource Managers bereit. Die API
DBMS_RESOURCE_MANAGER.CALIBRATE_IO() erzeugt eine gemischte read-only Last bestehend aus:
- zufälligen I/Os in der Größe der parametrisierten db_block_size
- sequentiellen I/Os mit 1MByte Blockgröße
Da die Prozedur CALIBRATE_IO() den Oracle Call-Stack nutzt und die I/O Operationen gegen Blöcke laufen, die in
der Datenbank gespeichert sind, kann man die erzielten Messergebnisse als sehr realistisch für die tatsächlich erreichbare
Performance ansehen. Da die calibration möglicherweise eine starke Belastung der Datenbank darstellt, ist es sinnvoll, diesen Vorgang zu Zeiten
durchzuführen, an denen die Datenbank sehr gering ausgelastet ist. Zu beachten ist ebenfalls, dass Datenbanken, die auf den gleichen Speicher zugreifen
und zum Zeitpunkt der calibration aktiv sind, das Messergebnis verfälschen können.
Um den die calibration mit dem Database Resource Manager nutzen zu können, müssen verschiedene Vorausetzungen eingehalten werden:
- eingesetzte Datenbankversion >=11.1
- aufrufender Benutzer hat SYSDBA-Privileg
- asynchrones I/O ist aktiviert (DISC_ASYNCH_IO=TRUE und FILESYSTEMIO_OPTIONS=SETALL)
- zum Zeitpunkt der calibration geringe Last auf der Datenbank
Der Initialisierungsparameter DISC_ASYNCH_IO ist bereits standardmäßig auf den Wert TRUE gesetzt, während der Standardwert für den
Parameter FILESYSTEMIO_OPTIONS abhängig vom eingesetzten Betriebssystem automatisch auf den optimalen Wert für diese Plattform gesetzt wird. Im
Zweifelsfall sollte an dieser Stelle die plattformspezifische Dokumentation zu Rate gezogen werden.
FILESYSTEMIO_OPTIONS kann folgende Werte annehmen:
- asynch: Asynchronous I/O wird verwendet, wenn das OS das unterstützt.
- directIO: Direct I/O wird verwendet, wenn das OS das unterstützt. Direct I/O umgeht den Unix buffer cache.
- setall: Asynchronous und direct I/O wird aktiviert.
- none: Deaktiviert asynchronous und direct I/O. Oracle benutzt normale synchronous writes ohne direct I/O Options.
Die Voraussetzungen lassen sich durch Abfrage des Data Dictionary verifizieren:
Anschließend wird die calibration durch Aufruf der API in einem kleinen PL/SQL-Block gestartet. Die API benötigt hierbei zwei Parameter als Eingabe:
- NUM_DISKS: Dieses ist die Anzahl der Platten, die der Datenbank zur Verfügung stehen. Hier ist zu beachten, dass bei ASM-Nutzung lediglich die
physikalischen Platten angegeben werden, die für Daten genutzt werden, Platten, die für eine Flash Recovery Area genutzt werden, müssen
also ausgespart werden.
- MAX_LATENCY: Hier ist die maximale Latenz in Millisekunden für einen Plattenzugriff einzutragen.
Mit diesen Informationen aufgerufen, erhält man nach kurzer Zeit das Ergebnis angezeigt:
Der Status der Messung wird in der View V$IO_CALIBRATION_STATUS festgehalten, dieses verschafft dem DBA auch während einer laufenden Messung einen Überblick. Nach
Ende der calibration wird das Ergebnis in der Data Dictionary View DBA_RSRC_IO_CALIBRATE festgehalten und kann jederzeit abgefragt werden:
Mit den beiden vorgestellten Methoden hat der DBA somit ein Portfolio, aus dem er das geeignete Utility auswählen kann. Zur Abgrenzung beider calibration Tools und als "Auswahlhilfe"
soll zum Abschluß noch diese Aufstellung dienen:
| DBMS_RESOURCE_MANAGER.CALIBRATE_IO() | ORION |
Pro |
- RAC-weite calibration möglich
- Verfügbar auf allen Plattformen
- volle Oracle-Unterstützung
|
- Standalone Betrieb ohne Datenbank-Installation möglich
|
Contra |
- Nicht verfügbar in Releases vor 11g
- Benötigt eine laufende Datenbank
|
- calibration eines RAC muß manuell durchgeführt werden
- Nicht verfügbar auf allen Plattformen
- nicht unterstützt von Oracle
|
Zusammengefasst lässt sich sagen, dass die Erweiterung des Database Resource Managers ein sehr wertvolles Tool darstellt, das hilft, die Einschränkungen
der vorliegenden I/O Architektur zu verstehen. Nach Beendigung einer calibration verfügt der DBA über die Informationen, die notwendig sind,
um die Größe und das Design des I/O Systems anforderungsgerecht zu gestalten.
Mehr zu diesem Thema bzw. zu weiteren Themen rund um die Datenbank lesen Sie in den nächsten Ausgaben ...
Zurück zur Community-Seite
|