Я хочу сравнить скорость этих двух команд:
grep pattern1 files*
grep pattern2 files*
К сожалению, первый grep считывает большую часть файлов * в буферы памяти, поэтому второй grep работает очень быстро, но по неправильной причине.
Как мне сказать Linux (Fedora 11): «пожалуйста, прекратите кэширование чтения с диска, потому что я что-то тестирую».
Ответы:
Я не думаю, что вы можете легко сказать "временно прекратить кеширование". Но то, что вы можете сделать, это сказать системе удалять кеш перед каждым запуском:
Как корень:
(Это описано в документации к ядру по адресу Documentation / sysctl / vm.txt , что удобно, если, как и некоторые из нас, вы не всегда можете вспомнить, что делают значения 1, 2 или 3.)
Или, альтернативно, конечно, заправьте кеш и сравните производительность в кеше. (Я думаю, что оба полезные числа.)
источник
echo 1
удалит только кеш страницы, а не кеш диска.При синхронизации таких вещей я обычно запускаю его сначала, чтобы заполнить кеш. Затем выполните команду, используя время. При тестировании чего-то подобного вам следует больше беспокоиться о процессоре и истекшем времени, а не о времени ввода-вывода.
В любом случае трудно получить полностью точные сроки. Если входные файлы превышают размер памяти, доступной для буферов, то вы, скорее всего, в конечном итоге зациклите все файлы через буферный кеш. В противном случае вы можете просто получить доступ ко всем данным из буферного кеша. В реальной жизни часто существует смесь буферизованных данных и данных, считываемых с диска.
источник