Я уже разместил это в StackOverflow, но он был помечен как не по теме. Может быть, вы, ребята, можете мне помочь.
В настоящее время я делаю некоторые тесты базы данных на виртуальной машине под управлением Ubuntu 12.04. Я заметил, что во второй раз, когда я выполняю запрос, он запускается значительно быстрее. Скорее всего, это связано с кэшированием ОС, которое просто хранит все данные в основной памяти. Чтобы кэш не испортил мои измерения, я хочу очистить его между последующими прогонами.
Я нашел следующие команды для достижения этого в Google:
sync;echo 3 > /proc/sys/vm/drop_caches
а также
sysctl -w vm.drop_caches=3
что все приводит к ошибке отказа в разрешении, даже когда я вошел в систему как root. Кажется, что просто невозможно очистить системный кеш от гостевой системы. Я думаю, это потому, что он использует кэш хостов. Поскольку у меня нет доступа к хосту, я должен найти обходной путь. В настоящее время у меня есть две идеи.
Первая идея - перезагрузить компьютер между запусками, так как это очищает кеш. Поскольку я хочу выполнить пару десятков пробежек, мне действительно нужно автоматизировать это. Таким образом, я мог бы поместить программу в автозапуск, позволить ей выполнить запрос, перезагрузиться и продолжить следующий запрос при следующем запуске. Чувствуется, будто пишешь вирус.
Вторая идея - просто заполнить память другими данными. Так как на моей машине достаточно оперативной памяти, я бы, например, сгенерировал какой-то большой файл случайных данных и просто прочитал его в /dev /null.
Итак, наконец, мой вопрос: у кого-нибудь есть лучшая идея очистить кеш, или, может быть, избегать использования кеша все вместе? Или у кого-нибудь есть предложения о том, как легко реализовать одну из моих двух идей?
Большое спасибо заранее, Антиго