Я настроил cachefilesd
все правильно и проверил следующее:
cachefilesd
служба работает- NFS-хранилище смонтировано
-o fsc
и может видеть,FSC
что установленоyes
в/proc/fs/nfsfs/volumes
- когда файл копируется из NFS, я вижу новый контент, добавленный в
/var/cache/fscache
(это настраивается в/etc/cachefilesd.conf
Теперь, когда я впервые копирую 4 Мб из NFS и время, затраченное на time
команду, составляет около 400-450 millsecs
, то если я снова копирую тот же файл, время сокращается до 50-60 millisecs
. Сокращенное время меня порадовало, что локальный кэш работает так, как и ожидалось.
Но когда я отключил cachefilesd
службу и перемонтировал хранилище без -o fsc
опции, я все еще вижу то же самое поведение, т. е. во второй раз копирование все еще занимает то же время. Я считаю, что когда cachefilesd
было включено копирование из локального кэша должно было быть быстрее.
Я проверил несколько сайтов, где упоминалось, что на самом сервере NFS может быть включено кэширование, и, возможно, именно поэтому второе копирование происходит быстрее, даже если оно cachefilesd
отключено.
Итак, чтобы проверить, копируется ли второй раз из локального кэша, я подумал о введении задержки с помощью tc qdisc add dev eth0 root netem delay 400ms
. (Я убедился, cachefilesd
что включено, а хранилище NFS смонтировано с помощью -o fsc
). Теперь с этим я вижу, что первое копирование занимает гораздо больше времени, чем ожидалось, например, 8-10 secs
и, к удивлению, второе копирование занимает около , 800 millisecs
которое 1 sec
все еще велико, если файл копируется из локального кэша. Это поведение снова соответствует случаю, когда cachefilesd
выключено.
Вопросы:
- Почему повторное копирование занимает так много времени, когда
cachefilesd
включено и возникает задержка? - Как узнать, скопирован ли файл из локального кэша?
Любые подсказки будут очень полезны.
Может ли кто-нибудь предоставить какую-либо информацию?