Я проверяю, эффективны ли некоторые изменения, которые я внес в код. Для этого мне нужно знать, как обычно работает кеш файловой системы. Я предполагаю, что мы получаем значение по умолчанию, поскольку мы, вероятно, не изменили ничего интересного в этом отношении.
По сути, если из моего кода я спрашиваю «существует ли этот файл?», Ответ возвращается в «x» миллисекундах. Если я спрошу еще раз через несколько минут, ответ вернется много, много быстрее, поэтому я предполагаю, что там происходит какое-то кеширование.
Как долго мне ждать, если я хочу повторить тест с очищенным кешем, чтобы снова пройти "много времени"? (Я хочу посмотреть, исправил ли я проблему с производительностью в своем веб-приложении, но я могу знать, что она исправлена, только если информация о существовании файлов не кешируется, потому что если это так, она работает быстро)
Я знаю, что это не самый красноречивый вопрос, и ответ, вероятно, будет «в зависимости от обстоятельств», я прошу разумного значения по умолчанию. Другими словами, если я снова буду тестировать через 3 часа, 6 или что-то еще, могу ли я рассчитывать, что он не будет кэширован?
Насколько я могу судить ... Это сервер Ubuntu, версия ядра: 3.9.3-x86-linode52, версия Ubuntu: Ubuntu 12.04.3 LTS, размещенная на Linode. Файловая система ext3
Спасибо!
Даниэль
Вы, вероятно, столкнетесь с кеширование inode, поскольку exists
запросы можно удовлетворить, просто посмотрев на индексный дескриптор. Кэширование файлов немного отличается. К счастью, Linux предоставляет вам способ удалить этот кеш через drop_caches механизм выставлен в /proc/sys/vm/dropcaches
.
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches