Почему не работает кэширование дискового чтения в FreeBSD?

FreeBSD 9.2
Mem: 392M Active, 2385M Inact, 1808M Wired, 1583M Buf, 26G Free

$ find . -type f | wc -l
26271
$ du -hs
774M .
$ time find . -type f | xargs cat > /dev/null
real 0m22.487s
user 0m0.025s
sys 0m0.797s
$ time find . -type f | xargs cat > /dev/null
real 0m26.454s
user 0m0.055s
sys 0m0.764s

Файлы в каталоге между запусками последних двух команд не изменяются, в gstat при выполнении этих команд наблюдается чтение диска с одинаковой интенсивностью.
  • Вопрос задан
  • 2317 просмотров
Решения вопроса 1
@harloprillar Автор вопроса
А вот и ответ: за количество файлов, которые могут быть закэшированы овтечает параметр kern.maxvnodes. У меня он был равен 20000. Так как файлов много (26к), часть не попадала в кэш. После увеличения параметра все работает как надо.

upd. Общий объем памяти, которая может использоваться для кэша дисков - vfs.maxbufspace. Для увеличения в x64 тюнить kern.nbuf: vfs.maxbufspace / 16384 = kern.nbuf(ro, loader.conf)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы