Очистка кешей в Ubuntu

Мне нужно очистить системный кеш, чтобы записывать время, затраченное на запрос postgres в холодном кеше. Для очистки системного кэша я выполняю следующие команды от имени root на сервере Ubuntu 12.04:

sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches

Я выполняю следующие команды SQL вместе с очисткой кэшей:

1. select col1 from my_table;  //Time Taken= 3000 ms
2. sync; echo 1 > /proc/sys/vm/drop_caches
   sync; echo 2 > /proc/sys/vm/drop_caches
   sync; echo 3 > /proc/sys/vm/drop_caches
3. Now again running the same select command and clearing caches:
   select col1 from my_table;  //Time Taken= 200 ms
4. sync; echo 1 > /proc/sys/vm/drop_caches
   sync; echo 2 > /proc/sys/vm/drop_caches
   sync; echo 3 > /proc/sys/vm/drop_caches
5. Now again running the same select command and clearing caches:
   select col1 from my_table;  //Time Taken= 10 ms

Из чего Я могу истолковать из-за того, что время выполнения запроса, даже после очистки кэшей, фактически не очищается. Правильна ли моя интерпретация? Есть ли другой способ очистки кэшей на сервере Ubuntu 12.04?

3
задан 23 June 2013 в 00:46

1 ответ

Я думаю, вы сделали неверное предположение. С помощью интерфейса drop_caches вы можете очистить кеши, которыми управляет ядро, но это не возвращает все процессы пользовательского пространства обратно в их предыдущее состояние.

Сервер SQL, вероятно, кэширует некоторые промежуточные результаты или, возможно, даже конечный результат запроса, в своей собственной памяти. Или, может быть, он динамически корректировал свой план выполнения для запроса на основе статистики, собранной во время первых двух запусков.

Вы можете частично компенсировать это, перезапустив демон, но с такой сложной системой, как SQL-сервер, будет действительно сложно точно воспроизвести любое предыдущее состояние, кроме «только что установленного». Если вы не сделаете снимок всей машины.

0
ответ дан 23 June 2013 в 00:46

Другие вопросы по тегам:

Похожие вопросы: