Как полностью очистить кэш файловой системы в Linux?


9

В тесте производительности я хочу обойти влияние кеша системы linux (включая кеш страниц / кэш inode и т. Д.).

Я пробовал флаг O_DIRECT, но оказалось, что прямой ввод-вывод все еще "наслаждается" эффектом некоторого кэша.

Есть ли основательный способ закрыть эффект системного кэша?


2
Какой смысл такого "нереального" теста производительности? Вы пытаетесь протестировать то, что ни одна современная ОС никогда бы не допустила.

К сожалению, это не так уж и нереально, сегодня все еще работает ядро ​​aio. Мне бы очень хотелось, чтобы Mr.T осознал, что асинхронный ввод-вывод и кэш не являются взаимоисключающими терминами. Это то, что ребята из Microsoft осознали уже 15 лет назад (хотя, по общему признанию, производительность до Vista может быть неутешительной, особенно при параллельности). Какой-то индийский парень тоже написал патч много лет назад, но ему отказали.

Ответы:


14

(это на самом деле падает так ..) запустить syncсначала, затем

бесплатный кеш страниц:

echo 1 > /proc/sys/vm/drop_caches

бесплатные зубные и иноды:

echo 2 > /proc/sys/vm/drop_caches

бесплатный pagecache, dentries и inode:

echo 3 > /proc/sys/vm/drop_caches

Тогда вы можете начать с чистого кэша, но, конечно, кэширование все равно будет работать.


я где-то слышал об этом методе. но на моем Ubuntu 10.04 таких файлов нет. поэтому я не смог выполнить вышеуказанные команды.

@tom_cat: Вам нужно ядро ​​новее, чем 2.6.16, и Ubuntu 10.04 вышла с 2.6.32, если я не ошибаюсь, так что это должно работать. Я только что проверил свою установку 11.04 на предмет ее стоимости, у которой есть эта запись прокачки (к сожалению, здесь больше нет 10.04)

@Damon: Да, ты прав. Огромное спасибо. Я обнаружил, что вошел в систему на удаленной машине со старым ядром.

0

нет, вы не можете обойти кеш. Но, однако, вы можете принудительно синхронизировать файловую систему (что означает очистку кэша и запись данных на диск) с помощью дополнительного системного вызова fsync (3).

Привет, CK

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.