Ermitteln der Cache-Statistik bei mehreren Bufferpools
Existieren in einer Instanz Bufferpools unterschiedlicher Größen, so ist es ein Problem, die Effizenz der einzelnen Bufferpools zu ermitteln. Das Kommando onstat -p (Profile-Informationen) gibt nur eine allgemeine Cache-Rate für Lese- und Schreiboperationen aus.
IBM Informix Dynamic Server Version 11.50.FC6 -- On-Line -- Up 14 days 21:53:50 -- 858168 Kbytes Profile dskreads pagreads bufreads %cached dskwrits pagwrits bufwrits %cached 178991 187416 122085412 99.85 134052 287522 1454924 90.79 ....
Was ist aber, wenn die Cache-Raten optimiert werden müssen?
In diesem Fall müssen die Zahlen für jeden einzelnen Bufferpool bestimmt werden. Leider gibt es keinen onstat-Befehl für diese Ausgabe. Die einzige per onstat zu ermittelnde Zahl ist die Anzahl der Lese- und Schreiboperationen auf den einzelnen Chunks, die sich mittels onstat -g iof ermitteln läßt. Den Chunks ist die Page-Size direkt zuordenbar und damit entspricht die Summe der reads/kaio_reads bzw. write/kaio_writes aller Chunks mit der gleichen Page-Size den diskreads bzw. diskwrites aus der onstat -p - Ausgabe.
Zum Berechnen der Cache-Raten fehlen aber die bufreads bzw. bufwrites. Mit onstat kommt man an dieser Stelle nicht weiter.
Die Lösung des Problems versteckt sich in der sysmaster-Datenbank in der Tabelle sysbufprofile. Hier gibt es für jede auf dem System mögliche Page-Size eine Anzahl von Sätzen mit jeweils 2 Spalten.
name value dskreads_8K 1893 pagreads_8K 7576 bufreads_8K 1416494 dskwrites_8K 8485 pagwrites_8K 33940 bufwrites_8K 101512 bufwaits_8K 0 flushes_8K 23 fgwrites_8K 0 lruwrites_8K 0 chunkwrites_8K 8485
Im Beispiel sieht man die Werte für die 8k Page-Size.
Für jede belegte Page-Size berechnet man jetzt die Cache-Rate nach der Formel:
Cache-Rate = 100 - ( dskreads * 100 / bufreads )
Das ergibt im Beispiel:
Cache-Rate = 100 - ( 1893 * 100 / 1416494 ) = 99.84%
Berechnet man diesen Wert für jede benutzte Page-Size, für den Lese- und analog für den Schreibcache, so kann man gut beurteilen, wie die Effizenz der angelegten Bufferpools ist und welcher Bufferpool vergrößert oder verkleinert werden sollte.
Der Inhalt der Tabelle sysbufprofile kann auch über das Open-Admin-Tool abgefragt werden. Im Menüpunkt Perfomance Analysis -> Performance-History kann man in den 'Profiled Fields' unter Disk und Buffer diese Werte für die einzelnen Page-Sizes ermitteln. OAT zeigt auch noch eine Historie der Werte an. So kann man auch noch Messwerte ermitteln nachdem die aktuellen Werte der Tabelle mit onstat -z auf 0 gesetzt wurden.