Linux: будут ли файлы, прочитанные из CIFS, кэшироваться в памяти?

Я пишу потоковый сервер для Linux, который читает файлы с монтирования CIFS и отправляет их через сокет. В идеале Linux будет кэшировать файл в памяти, чтобы последующие чтения были быстрее. Так ли это? Могу ли я указать ядру кэшировать сетевые чтения?

Изменить: в этих файлах будет несколько операций чтения, но не записи.

Спасибо!

Обновление: я проверил это на томе CIFS, используя fadvise POSIX_FADV_WILLNEED для локального кэширования файла (используя linux-ftools в командной строке). Оказывается, чтобы это работало, том должен быть смонтирован в режиме чтения-записи. В режиме только для чтения причуда, кажется, игнорируется. Это должно иметь какое-то отношение к механизму oplock samba.


person Jacko    schedule 15.05.2011    source источник


Ответы (1)


В соответствии с обычными правилами когерентности кэша [1] в CIFS, да, клиент ядра CIFS будет кэшировать данные файла.

[1] Грубо говоря, CIFS в принципе не кэшируется, но при использовании оплоков клиент может кэшировать данные более агрессивно. Для объяснения блокировки CIFS см., например, руководство по Samba на http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.html . Если клиент (клиенты) открывают файлы в режиме только для чтения, то я подозреваю, что клиент будет использовать oplocks уровня 2, а поскольку конфликтного доступа не происходит, несколько клиентов должны иметь возможность иметь oplocks уровня 2 для одних и тех же файлов. Только когда какой-либо клиент запрашивает доступ на запись к файлам, оплоки будут разорваны.

person janneb    schedule 15.05.2011
comment
Спасибо! не могли бы вы объяснить, как oplocks улучшают кеширование? Я почти ничего не знаю о SAMBA или ядре Linux. - person Jacko; 15.05.2011
comment
Я нашел эту ссылку smallnetbuilder.com/nas/ nas-features/ указывает на то, что оппортунистические блокировки не годятся там, где есть операции с общими файлами. Для меня это точно было бы.... - person Jacko; 15.05.2011
comment
примечание: в этих файлах будет несколько операций чтения и записи. - person Jacko; 15.05.2011
comment
Спасибо, Яннеб! очень признателен. - person Jacko; 15.05.2011