Promon

Administratorzy baz danych stają czasem przed problemem: jak analizować parametry generowane w narzędziu promon w funkcji czasu. Wszystkie te parametry pochodzą z tablic VST i można łatwo napisać odpowiedni program w języku ABL. Problem polega jednak na tym, że administratorzy często nie mają uprawnień do kompilacji.
Sytuacja nie jest jednak beznadziejna i można sobie z nią poradzić bez większych problemów.

Promon to narzędzie które można obsługiwać ręcznie, przeglądając określone statystyki lub generować zrzuty ekranowe w sposób automatyczny. Zrzuty takie można potem analizować na różne sposoby. Wystarczy stworzyć wejściowy plik tekstowy, zawierający zestaw znaków sterujących, odpowiadający dokładnie takim samym klawiszom które użylibyśmy przeglądali określone statystyki ręcznie.

Zanim stworzymy taki plik, musicie wiedzieć, że dla wersji OE12 znajdują się w katalogu [DLC]\bin skrypty dla serwera bazy Enterprise: gather-script-enterprise.bat
oraz Workgroup: gather-script-wrkgrp.bat.
Wystarczy uruchomić taki skrypt na naszej bazie i powstanie plik wynikowy zawierający wiele ekranów z menu podstawowego oraz R&D. We wcześniejszych wersjach OE trzeba poszukać skryptu gather. Dokładniejszy opis jest w bazie wiedzy.
Dla naszych potrzeb stwórzmy prostszy plik sterujący promon_in.txt:

R&D  # Opcje R&D
5    # Adjust Monitor Options
1    # Display page length
9999 # Enter 9999 for length
3    # Monitor sampling interval
30   # Ustaw na 30 sek.
4    # Pause between displays
30   # Ustaw na 30 sek.
6    # Number of auto repeats 
10   # Ustaw 10 odświeżeń
t    # Powrót do głównego menu R&D 
2    # Activity Displays
1    # Summary
A    # Tryb automatyczny

Plik ten zawiera określone wybory menu i ustawienia oraz komentarz. Oczywiście dla wysterowania promona komentarz musimy usunąć. Plik więc będzie wyglądał następująco:

R&D
5
1
9999
3
30
4
30
6
10
t
2
1
A

W tym prostym przykładzie dostaniemy zrzut 10 ekranów z ogólnej aktywności bazy. Każdy ekran wygeneruje się co 30 sekund.
Uruchamiamy zatem promona na bazie testowej poleceniem:
promon sports2000 < promon_in.txt > promon_out.txt
Można użyć opcjonalnie parametru -NL, szczególnie do analizy problemów z konfliktami aktywności w pamięci współdzielonej. Tutaj można go pominąć. Nas będzie interesował parametr BI Writes.
Pominąłem jeden krok, uruchomiłem wcześniej program, który dokonuje losowo transakcji na tablicy Customer. Krok ten zostawiam czytelnikom, o ile będzie potrzebny.

Promon wygeneruje plik wynikowy promon_out.txt, zawierający zrzuty ekranowe. Z uwagi na jego obszerność wyświetlam tylko interesujący nas fragment. Zgodnie z ustawieniami plik zawiera 10 wygenerowanych takich ekranów.

Event                  Total  Per Sec |Event                  Total  Per Sec

Commits            17245004      99.4 |DB Reads                332       0.0
Undos               1864747      10.8 |DB Writes            904278       5.2
Record Reads       38455612     221.7 |BI Reads              61998       0.4
Record Updates     15614825      90.0 |BI Writes           1380881       8.0
Record Creates      1630171       9.4 |AI Writes                 0       0.0
Record Deletes      1630180       9.4 |Checkpoints           20601       0.1
Record Locks       82489712     475.5 |Flushed at chkpt     883672       5.1
Record Waits              0       0.0 |Active trans              0

Dla nas jest ważne aby wyekstrahować określone informacje, np. linie zawierające określone dane, jak badany parametr BI Writes.
W systemie Windows możemy posłużyć się komendą findstr. Poniżej ściąga jak używać tej komendy:
findstr [szukane słowo] promon_out.txt > wynik.txt
findstr /C:”[szukana fraza]” promon_out.txt > wynik.txt

W systemie Linux/Unix możemy posłużyć się komendą grep.
Uruchamiamy tutaj następująca komendę.
findstr /C:”BI Writes” promon_out.txt > bi.txt
Zawartość pliku bi.txt wygląda następująco.

Record Updates        10859     362.0 |BI Writes               938      31.3
Record Updates        10879     362.6 |BI Writes              1005      33.5
Record Updates        10476     349.2 |BI Writes               872      29.1
Record Updates        10930     364.3 |BI Writes              1005      33.5
Record Updates        10933     364.4 |BI Writes               938      31.3
Record Updates        10850     350.0 |BI Writes               938      30.3
Record Updates        10578     352.6 |BI Writes               939      31.3
Record Updates        10847     361.6 |BI Writes               938      31.3
Record Updates        10855     361.8 |BI Writes              1006      33.5
Record Updates        10828     360.9 |BI Writes               938      31.3

Juz jest nieźle, bo mamy tylko 10 potrzebnych linii. Teraz trzeba zaimportować te dane do arkusza jak Excell czy LibreOffice. Tu posłużyłem się LibreOffice, w którym można wygodnie ustalić miejsca podziału kolumn.

Niepotrzebne kolumny można usunąć. Potrzebujemy jeszcze osi czasu, ale to prosta sprawa bo odczytujemy tylko czas dla pierwszego odczytu, dodajemy 30 sekund do następnego a pozostałe czasy wygenerują się automatycznie po przeciągnięciu kursorem myszy.

Na koniec generujemy wykres w celu analizy. Tutaj jest akurat w Excellu.

Jak widać cały proces nie jest trudny i gdy raz go przejdziemy nie będzie kłopotu aby powtarzać go dla innych danych.
Następnym razem napiszę o jeszcze kilku analizach w promonie.