Application Response Measurement
Application Response Measurement
Historie
Der Application Response Measurement (ARM) Standard der OpenGroup
wurde ursprünglich in der Version 1.0 1996 von Tivoli und
Hewlett-Packard entwickelt und veröffentlicht. Dieser Standard
spezifiziert ein API zur Performancemessung für die Programmiersprache
C.
1997 wurde der ARM 2.0 Standard unter dem Dach der Computer
Measurement Group (CMG) von der ARM Working Group entwickelt und
erlaubte die Korrelation von Parent-Child Transaktionen in einem
verteilten Computer-System.
ARM 3.0 wurde 2001 von der OpenGroup als Standard angenommen. Dieser
Standard spezifiziert ein API für die Programmiersprache Java.
Im Herbst 2003 wurde die Version 4.0 des ARM Standards von der
OpenGroup angenommen. Diese Version bietet nun ein API sowohl für die
Programmiersprache C als auch Java.
Einführung
Moderne Anwendungen werden immer komplexer und oft auch über mehrere Rechner
in einem Netzwerk verteilt. Hieraus ergeben sich neue Herausforderungen für
Werkzeuge zur Beobachtung und Analyse dieser verteilten Anwendungen. Für diese
Aufgabe wurde der ARM-Standard entworfen. Um einen genaueren Einblick das
Verhalten einer verteilten Anwendung zu bekommen, können folgende Fragen
gestellt werden:
# Werden Geschäftstransaktionen ausgeführt und, wenn nicht, was sind die Gründe dafür?
# Wie groß ist die Antwortzeit einer Transaktion?
# Wo ist die Schwachstelle, welche Unter-Transaktionen können die Schwierigkeiten auslösen?
# Welche und wieviele Transaktionen werden in einer Anwendung ausgeführt?
# Wie kann die Performance einer Anwendung verbessert werden?
ARM kann auf diese Fragen Antworten geben, indem die Performance von
definierten Transaktionen gemessen und die Verfügbarkeit von Anwendungen
überprüft wird. Es können sowohl sogenannte Geschäftstransaktionen als
auch technische Transaktionen gemessen werden (also solche, die einen
technischen Sachverhalt näher analysieren).
Vorgehensweise
Die grundsätzliche Vorgehensweise um Anwendungen mit ARM zu instrumentieren
und Performance Daten zu gewinnen ist wie folgt:
# Ermitteln und Definieren sowohl der Geschäftstransaktionen als auch technischer Transaktionen.
# Instrumentierung der Anwendung mit Aufrufen zur ARM API.
# Start der instrumentierten Anwendung in ihrer gewohnten
# Laufzeitumgebung und Aufruf der fraglichen Transaktionen.
# Die benutzte ARM Implementierung stellt nun Messdaten zur Verfügung, die betrachtet, weiter verarbeitet oder statistisch analysiert werden können.
Konzepte
ARM stellt verschiedene Konzepte zur Modellierung einer Anwendung und
deren Performancemessung zur Verfügung. Die im nachfolgenden
dargestellten Konzepte der ARM Applikation und der ARM Transaktion
unterscheiden zwischen Definitionen und Instanzen. Eine Definition
beschreibt die Eigenschaften eines Konzepts wohingegen eine Instanz
die eigentliche Messung beschreibt:
;ARM Applikation (Application): In verteilten Systemen (klassisch Client/Server-Anwendungen) operieren viele verschiedene Anwendungen zusammen. Erst dieses Zusammenspiel beschreibt das komplette verteilte System. Zur Identifizierung einzelner Anwendungen im ARM-Kontext wird das Konzept einer Applikation in ARM etabliert. Wird ein und dieselbe Anwendung mehrfach gestartet, so wird es mehrere ARM Applikationsinstanzen geben, jedoch nur eine Applikationsdefinition.
;ARM Transaktion (Transaction): Eine Transaktion stellt das Hauptkonzept des ARM-Standards dar und beschreibt genau eine Performance Messung. Eine Transaktionsdefinition legt dabei die Randbedingungen fest (z.B. welche Daten werden aufgezeichnet, an welcher Stelle der Applikation wird die Transaktion gestartet und gestoppt usw.). Wird ein und dieselbe Transaktion mehrfach durchgeführt, resultieren daraus viele Transaktionsinstanzen, es gibt aber nach wie vor nur eine Transaktionsdefinition. Eine Transaktion besteht im wesentlichen aus einem Status (Gut, Fehlerhaft, Abgebrochen), einem Start- bzw. Stopzeitpunkt, der daraus resultierenden Dauer und der Beschreibung des Rechners (SystemAddress), auf dem die Transaktion aufgezeichnet wurde. Zusätzlich können weitere Informationen wie spezielle Metriken (Metrics) oder Zeichenketten (Properties) an eine Transaktion gebunden werden.
;ARM System Adresse (SystemAddress): Beschreibt eindeutig einen Rechner z.B. durch seinen Namen, seine IP-Adresse oder sonstige eindeutige Beschreibungen.
;ARM Korrelatoren (Correlators): Ein Korrelator beschreibt im ARM Kontext genau eine Transaktionsinstanz als eine Folge von Bytes. Mit Hilfe eines solchen Korrelators können Eltern/Kind Beziehungen zwischen Transaktionsinstanzen hergestellt werden. Somit ist es möglich, eine komplexe Transaktion in ihre einzelnen Bestandteile zu zerlegen.
Beispiel: Zeige mir den ARM-Wikipedia-Artikel in meinem Web-Browser an. Hierfür könnten beliebig viele sogenannte Sub-Transaktionen (Kinder) gemessen werden, wie Zugriff auf den Web-Server, Datenbankzugriff oder dass Zeichnen der Seite im eigenen Browser.
;ARM Metriken (Metrics): Metriken im ARM Sinne sind zusätzliche Daten (Zähler, Füllstand, IDs), die einer Transaktion zugeordnet werden können. Zum Beispiel kann die Anzahl gedruckter Seiten eines Druckauftrags und dessen Dauer eine genauere Beurteilung über die Performance eines Drucksystems geben als die reine gemessene Zeit für dessen Durchführung.
;ARM Eigenschaften (Properties): Sogenannte Properties erlauben einer Transaktion beliebige Daten anzuhängen. Properties bestehen aus zwei Zeichenketten, einem Namen und einem Wert. Diese Zeichenketten können mit spezieller Semantik für jede Transaktionsdefinition versehen werden.
;ARM Benutzer (User): Eine Transaktionsinstanz kann genau einem Benutzer zugeordnet werden. Hierbei ist zu beachten, dass der Benutzer keineswegs der Benutzer sein muss, der sich gerade am Rechner befindet und sich dort angemeldet hat.
Weblinks
• Offizielle ARM Web-Seite und Open-Source SDK
• ARM4 orientierte Web-Seite
• Open-Source ARM4 Java Implementierung
• Kommerzielle ARM4 C und Java Implementierung
• Vollständige ARM4 C und Java Implementierung

