Ich lese proc/<pid>/io
, um die IO-Aktivität von SQL-Abfragen zu messen, wobei <pid>
die PID des Datenbankservers ist. Ich lese die Werte vor und nach jeder Abfrage, um die Differenz zu berechnen und die Anzahl der Bytes zu ermitteln, die die Anforderung zum Lesen und/oder Schreiben veranlaßt hat.Enthält RCHAR READ_BYTES (proc/<pid>/io)?
Soweit ich das Feld READ_BYTES
zählt tatsächlicher Disk-IO wissen, während RCHAR
mehr enthält, wie liest, dass die Linux-Seiten-Cache befriedigt werden kann (siehe Understanding the counters in /proc/[pid]/io zur Klärung). Dies führt zu der Annahme, dass RCHAR
sollte mit einem Wert gleich oder größer als READ_BYTES
kommen, aber meine Ergebnisse widersprechen dieser Annahme.
Ich konnte einige kleinere Block oder Seite Aufwand für Ergebnisse, die ich für Infobright ICE (Werte MB) erhalten vorstellen:
Query RCHAR READ_BYTES
tpch_q01.sql| 34.44180| 34.89453|
tpch_q02.sql| 2.89191| 3.64453|
tpch_q03.sql| 32.58994| 33.19531|
tpch_q04.sql| 17.78325| 18.27344|
Aber ich völlig versagen die IO-Zähler für MonetDB (Werte MB) zu verstehen, :
Query RCHAR READ_BYTES
tpch_q01.sql| 0.07501| 220.58203|
tpch_q02.sql| 1.37840| 18.16016|
tpch_q03.sql| 0.08272| 162.38281|
tpch_q04.sql| 0.06604| 83.25391|
Bin ich mit der Annahme falsch, dass RCHAR
READ_BYTES
enthält? Gibt es eine Möglichkeit, die Kernel-Zähler auszutricksen, die MonetDB benutzen könnte? Was geht hier vor sich?
Ich könnte hinzufügen, dass ich den Seitencache löschen und den Datenbankserver vor jeder Abfrage neu starten. Ich bin auf Ubuntu 11.10, mit Kernel 3.0.0-15-generic.
Danke. In der Tat sagen die [MonetDB Architecture Docs] (http://www.monetdb.org/Documentation/Manuals/MonetDB/Architecture), dass sie Speicherkarten verwenden. – lupz