c't Performance Monitor Utility ctpaul 2.5

Was ist das?
------------
ctpaul liest die maschinenspezifischen Register der CPU aus
und ermglicht somit Performance Monitoring. Man erfhrt, was
der Prozessor so alles treibt. Zum Beispiel, wieviele Gleitkomma-Befehle
er ausfhrt, wieviele Cache-Fehlzugriffe auftreten und wieviele
Sprnge er korrekt vorhergesagt hat.

Wie luft es?
-------------
Nur bestimmte Prozessoren untersttzen Performance Monitoring, und
zwar in unterschiedlichen Formaten. ctpaul kommt nur mit folgenden
CPUs zurecht: Pentium, Pentium MMX, Cyrix/IBM 6x86MX. Auf allen
anderen Prozessoren luft das Programm nicht.
Durch die intimen Systemzugriffe bentigt ctpaul einen Treiber-Unterbau.
Unter Windows 95 erledigt das der DIRECT95.VXD, unter NT DIRECTNT.SYS.
Eine Installation der Treiber im System ist nicht notwendig, da
ctpaul sie dynamisch ldt. Somit entfllt fr ctpaul jegliche Installation
oder De-Installation. Das Ent-zippen des Archives in einen Ordner
beziehungsweise komplettes Lschen gengt.

Standard-Erklrung
------------------
ctpaul darf, wenn das Archiv nicht verndert wird, frei weitergegeben und
in Mailboxen, im Internet und auf CD-ROMs frei angeboten werden. Ein
Verkauf ist nicht zulssig. Die Urheberrechte liegen bei c't und beim Autor.

Neu in der aktuellen Version
----------------------------
ctpaul 2.5 zeigt auf Wunsch eine Zusatzanzeige im System Tray an.

Wie geht das?
-------------
Wie Performance Monitoring funktioniert und welche Erkenntnisse man
daraus gewinnen kann, steht in einem c't-Artikel: "Gleitzeit" in 
Heft 9/97, Seite 256.

Was zhlt ctpaul?
-----------------
Im Listenfeld links oben kann man whlen, was ctpaul zhlen soll.
Dabei sind sinnvollerweise immer zwei Zhler zusammengefat (die
CPUs haben nmlich zwei Zhlregister). Sobald man eine Funktion whlt,
beginnt ctpaul, die Mewerte im Fenster anzuzeigen. Neben
Minima, Maxima und Mittelwerten der Einzelmewerte zeigt ctpaul
auch die Verhltnisse und Summen beziehungsweise deren Mittel-
und Extremwerte. Der Knopf "Reset stats" setzt die Statistik
zurck.
Das Verhltnis ist meist der interessanteste Wert. So zhlt ctpaul
"fp instructions/instructions", also im ersten Zhler alle Gleitkomma-
Befehle und im zweiten alle Befehle. Das Verhltnis ergibt damit
den Gleitkomma-Anteil der laufenden Programme. Dieser interessante
Wert erklrt oft Performance-Einbuen des IBM/Cyrix-Prozessors
gegenber dem Pentium. Software mit dauerhaft hohen Gleitkomma-
Anteilen im Bereich von 10 bis 20 Prozent laufen auf 6x86MX
meist langsamer als auf Pentium, weil letzterer die schnellere
FPU aufweist.
Insgesamt eignet sich Performance Monitoring auch sehr gut zum
Optimieren zeitkritischer Routinen.
Hier die Erluterungen zu den einzelnen Zhlmodi:

 "fp instructions/instructions"
 Gleitkomma-Anteil (siehe auch oben). Wichtige Anmerkung: manche
 FPU-Instruktionen (insbesondere trigonometrische Befehle) zhlen
 mehrfach. Theoretisch kann der Gleitkomma-Anteil also ber 100
 Prozent liegen. Trotzdem ist er ein gutes Ma fr die FPU-Belastung
 eines Programms: mehrfache Zhlung kommt nur bei sehr langwierigen
 Befehlen vor.
 Zu den Rekordhaltern in Dauer-FPU-Belastung gehrt der Freeware-
 Raytracer POVRay. Die Windows-Version fhrt whrend der Berechnung
 eines Bildes dauerhaft etwa 20 Prozent FPU-Befehle aus.

 "branches/instructions"
 Anzahl bedingter und unbedingter Sprnge pro Befehl

 "cache miss/data read"
 Cache-Fehlzugriffe pro Daten-Lesezugriff (L1-Cache). Je hher
 diese Rate liegt, umso fter mu die CPU Daten in den Cache holen.
 Bei vielen Anwendungen zeigt der 6x86MX hier, was ein groer Cache bringt.

 "cache miss/data write"
 Cache-Fehlzugriffe pro Daten-Schreibzugriff (L1-Cache). Bei
 Fehlzugriffen mu auf den L2-Cache oder den Hauptspeicher zugegriffen
 werden.
 
 "cache miss/code read"
 Cache-Fehlzugriff pro Code-Lesezugriff (L1-Cache). Programme mit
 niedriger cmcr-Rate sind "cache-gngig". Beispiel: Quake erzeugt
 weniger cmcr's als die Windows-95-Oberflche im Wartezustand (Idle).

 "u/u+v instructions"
 In u-Pipeline abgearbeitete Befehle pro Befehl. Moderne x86-Prozessoren
 verfgen ber zwei parallele Pipelines (u und v), so da sie im
 Idealfall zwei Befehle gleichzeitig verarbeiten knnen. Je nher
 dieser Wert an 50 Prozent liegt, umso gnstiger.

 "mmx instructions"
 Zhlt die MMX-Befehle. Hier ist die Summe interessant, da Zhler 1
 die MMX-Befehle in der u-Pipeline zhlt und Zhler 2 die in der
 v-Pipe (das ist systembedingt). Man kann gut erkennen, ob Software
 MMX verwendet und, falls ja, in welchen Funktionen. So gibt es
 Programme, die mit "MMX-Untersttzung" werben und keinen einzigen
 MMX-Befehl verwenden. Hier bedeutet "untersttzt" wohl eher
 "strzt nicht ab bei Verwendung von". brigens benutzt DirectX
 MMX-Befehle, wenn die CPU das untersttzt.

 "mmx-fp-transitions/instructions"
 Bei MMX-Befehlen mu der Prozessor umstndlich zwischen FPU-
 und MMX-Sektion umschalten (weil die MMX-Register ja eigentlich
 mit den FPU-Registern physikalisch identisch sind). Das dauert
 eine mittlere Ewigkeit. Je mehr dieser mmx-fp-Umschaltungen
 geschehen, umso ungnstiger.

 "BTB Hits/branches"
 Branch Target Buffer (Sprungzielzwischenspeicher) Treffer pro
 Sprung. Die CPU merkt sich Sprungziele. Wenn bei einem Sprung
 die Zieladresse im Buffer liegt, geht's schneller. Je hher
 dieser Wert ist, umso besser.

 "Data TLB miss/r or w"
 Translation Look-aside-Buffer Fehlzugriff pro Lese- oder Schreib-
 Zugriff.
 
 "Data cache line wb/r or w"
 Datencache-Line Write-Back pro Lese- oder Schreib-Zugriff.

 "Data misaligned/instr"
 Alignment-Probleme pro Befehl (Worte an ungeraden Adressen usw.)
 
 "Code TLB miss/read"
 Code-Lesezugriff Translation-Look-Aside-Buffer Fehlzugriff
 
 "Locked bus cycles/instr"
 Locked Bus-Zyklen pro Instruktion

Fr weitere Informationen empfielt sich ein Blick in die Dokumentation
des Pentium (developer.intel.com) oder 6x86MX (www.chips.ibm.com)

Plot-Funktion
-------------
Der bersicht halber kann ctpaul die letzten maximal 1000 Mewerte
im Diagramm anzeigen, und zwar wahlweise einen der Zhler, die Summe oder
das Verhltnis. Ein Zurcksetzen des Plot-Speichers ermglicht die
"Reset stats"-Taste. Die gerade im Speicher vorhandenen Daten kann
ctpaul in einer Textdatei speichern. Es entstehen zwei Spalten
(Nummer und Wert), die man beispielsweise in Excel importieren kann.

Info-Box
--------
Neben der Copyright-Information bietet die Info-Box Daten
ber die CPU an, in Form von Frequenz und CPUID. Auerdem
erfhrt man die Versionsnummer des Treibers, auf dem ctpaul
gerade aufsetzt.

Weitere Informationen und neue Versionen
----------------------------------------
ctpaul und die unterliegenden Treiber werden von c't weiterentwickelt.
Bei Fragen und Kommentaren empfiehlt sich eine Email an den Autor
(Uwe Post, up@ct.heise.de). Neue Versionen und weitere Programme
finden Sie auf dem c't-ftp-Server (http://www.heise.de/ct/ftp)
sowie auf der Homepage des Autors (http://www.heise.de/ct/Redaktion/up).

Viel Spa mit Paul!



Uwe Post
Februar 1998
