Ho letto proc/<pid>/io
per misurare l'attività di I/O delle query SQL, dove <pid>
è il PID del server del database. Ho letto i valori prima e dopo ogni query per calcolare la differenza e ottenere il numero di byte che la richiesta ha causato di essere letta e/o scritta.RCHAR include READ_BYTES (proc/<pid>/io)?
Per quanto ne so il campo READ_BYTES
conta effettiva del disco-IO, mentre RCHAR
comprende più, come si legge che potrebbe essere soddisfatta dalla cache della pagina Linux (vedi Understanding the counters in /proc/[pid]/io per chiarimenti). Ciò porta a supporre che RCHAR
debba avere un valore uguale o maggiore di READ_BYTES
, ma i miei risultati contraddicono questa ipotesi.
potevo immaginare qualche blocco di minore o di una pagina in alto per i risultati che ottengo per Infobright ICE (i valori sono MB):
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|
Ma ho completamente non riescono a capire le IO-contatori per MonetDB (i valori sono MB) :
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|
mi sbaglio con il presupposto che RCHAR
include READ_BYTES
? C'è un modo per ingannare i contatori dei kernel, che MonetDB potrebbe usare? Che cosa sta succedendo qui?
Potrei aggiungere che svuoto la cache della pagina e riavvio il server di database prima di ogni query. Sono su Ubuntu 11.10, con il kernel 3.0.0-15-generico.
Grazie. Infatti, [MonetDB Architecture Docs] (http://www.monetdb.org/Documentation/Manuals/MonetDB/Architecture) dice che usano file mappati in memoria. – lupz