Я читал proc/<pid>/io
для измерения IO-активности SQL-запросов, где <pid>
является PID сервера базы данных. Я читал значения до и после каждого запроса, чтобы вычислить разницу и получить количество байтов, которые запрос получил, чтобы читать и/или записывать.Включает ли RCHAR READ_BYTES (proc/<pid>/io)?
Насколько я знаю, поле READ_BYTES
рассчитывает фактические дискового ввода-вывода, в то время как RCHAR
включает в себя больше, как говорится, что может быть удовлетворен кэшем линукс страницы (см Understanding the counters in /proc/[pid]/io разъяснений). Это приводит к предположению, что RCHAR
должно иметь значение, равное или большее READ_BYTES
, но мои результаты противоречат этому предположению.
я мог себе представить некоторые незначительный блок или накладные расходы страницы для результатов я получаю для Infobright ICE (значения 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|
Но я совершенно не понимаю IO-счетчик для MonetDB (значения 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|
я не прав в предположении, что RCHAR
включает READ_BYTES
? Есть ли способ обмануть счетчики ядер, которые может использовать MonetDB? Что здесь происходит?
Я могу добавить, что я очищаю кэш страницы и перезапускаю сервер базы данных перед каждым запросом. Я на Ubuntu 11.10, запущен ядро 3.0.0-15-generic.
Спасибо. В самом деле, [MonetDB Architecture Docs] (http://www.monetdb.org/Documentation/Manuals/MonetDB/Architecture) говорят, что они используют файлы с отображением памяти. – lupz