Linux: необходимо спроектировать pre-fetcher для кеширования файлов из NAS в системную память - PullRequest
0 голосов
/ 16 мая 2011

Я проектирую сервер для следующего сценария:

  1. серия отдельных изображений хранится на NAS, скажем, 100 из них
  2. клиент подключается к серверучерез сокет TCP и запрашивает изображение 39
  3. сервер считывает изображение 39 из NAS и отправляет обратно клиенту через сокет
  4. вполне вероятно, что клиент также запросит другие изображения из серии, поэтому:
  5. Я хотел бы запустить поток, который просматривает изображения, читает их и выполняет cat image39 > /dev/null для принудительного кэширования в память на сервере.
  6. поток будет извлекать изображения следующим образом: image38, image40, image37, image41 и т. д.
  7. уже извлеченные изображения игнорируются
  8. если клиент теперь запрашивает image77, я хочу сбросить поток извлечения для извлечения: image76, image78 и т. д.

Это масштабируется для многих серий и клиентов.Вероятно, порядка 1000 одновременных предварительных выборок.Я понимаю, что потоки могут привести к снижению производительности, если их слишком много.Было бы лучше вместо этого развить новый процесс?Есть ли более эффективный способ, чем потоки или процессы?

Спасибо !!!

1 Ответ

1 голос
/ 16 мая 2011

Это преждевременная оптимизация. Попробуйте реализовать свою систему без хитростей, чтобы «форсировать» кэш, и посмотрите, как он работает. Могу поспорить, что все будет хорошо - и тогда вам не нужно будет беспокоиться о неприятных сюрпризах, если окажется, что ваши трюки не будут хорошо сочетаться с другими вещами в системе.

...