Включает ли RCHAR READ_BYTES (proc//io) ?

Я читаю proc//io, чтобы измерить активность ввода-вывода SQL-запросов, где — это PID сервера базы данных. Я читаю значения до и после каждого запроса, чтобы вычислить разницу и получить количество байтов, которые запрос вызвал для чтения и/или записи.

Насколько я знаю, поле READ_BYTESподсчитывает фактический дисковый ввод-вывод, в то время как RCHARвключает в себя больше, например чтение, которое может быть удовлетворено кешем страниц linux (см. Понимание счетчиков в /proc/[pid]/ioдля пояснений). Это приводит к предположению, что RCHARдолжно иметь значение, равное или большее, чем READ_BYTES, но мои результаты противоречат этому предположению.

Я мог бы представить себе некоторые незначительные накладные расходы на блоки или страницы для результатов, которые я получаю для Infobright ICE (значения в МБ):

        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|

Но я совершенно не понимаю счетчики ввода-вывода для MonetDB (значения в МБ):

        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|

Am Я ошибаюсь в предположении, что RCHARвключает READ_BYTES? Есть ли способ обмануть счетчики ядер, которые могла бы использовать MonetDB? Что здесь происходит?

Могу добавить, что очищаю кэш страниц и перезапускаю сервер БД перед каждым запросом. У меня Ubuntu 11.10 с ядром 3.0.0-15-generic.

5
задан Community 23 May 2017 в 12:31
поделиться