Я выполняю некоторые тесты с использованием СУБД и виртуальных машин. И я использую эту команду
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
на каждом госте и на каждом хосте перед выполнением запроса, чтобы минимизировать влияние кэширования / буферизации на мое время выполнения. Если данные кэшируются / буферизируются, время выполнения запроса может варьироваться в зависимости от того, какой запрос был выполнен ранее, поскольку часть файла, используемая для ответа на запрос, может находиться в памяти.
Я хотел бы автоматизировать процесс (я делаю это вручную), но немного сложнее выполнять кеширование синхронизации / отбрасывания после каждого запроса. Мне нужно попросить каждую виртуальную машину и каждый физический сервер синхронизировать / отбросить кэши. Я мог бы написать скрипт и использовать для этого SSH, но мне интересно, есть ли способ не дать ОС буферизовать / кэшировать файлы.
Я также нашел этот инструмент: https://github.com/Feh/nocache
Но это требует, чтобы я выполнил это вместе с программой, которая не может использовать кеш. У меня есть распределенная DMBS, работающая в среде виртуальной машины, поэтому не совсем понятно, как ее использовать в моем случае. Я использую команду для инициализации каждого экземпляра на каждом сервере, и они находятся на вершине виртуальной машины.
П.С .: Я использую Ubuntu 12.04 на всех виртуальных машинах (используя KVM) и серверах.
cache=none
в домен XML, что-то вроде <disk type='file' device='disk'><driver name='..' cache='none'> ...