У нас есть сервер хранения с пулом RAID-6 на 12 дисков объемом 100 ТБ. Он используется несколькими клиентскими вычислительными узлами через NFS, в основном выполняя обучение глубокому обучению (много изображений размером ~ 100 КБ, загружаются в случайном порядке).
Чтобы ускорить доступ к файлам, мы используем cachefilesd на вычислительных узлах. Это хорошо работает, потому что рабочая нагрузка такова, что каждое учебное задание обычно читает одни и те же 10–100 ГБ снова и снова, что может быть хорошо кэшировано на локальном SSD.
Теперь предположим, что помимо обычных тренировок, другой тип нагрузки также запускается (тяжелая работа по чтению). Этот не может быть так хорошо кэширован, потому что он считывает большой объем данных только один раз (занимает много времени), вместо повторяющегося поведения обычных учебных заданий. Эта работа всегда требует глубокого чтения с реальных дисков.
Проблема, с которой мы сталкиваемся, заключается в том, что, хотя обычные задания по обучению могут читать из своего локального кеша, метаданные чтения становятся узким местом. То есть, cachefilesd должен убедиться, что кеш все еще актуален, поэтому он спрашивает сервер NFS, был ли файл изменен с момента его кэширования. Поэтому cachefilesd запрашивает атрибут модификации (mtime) каждого читаемого файла. Однако, поскольку сервер хранения занят обслуживанием тяжелого задания чтения, у него недостаточно времени для ответа на эти запросы getattr, поступающие от вычислительных узлов с достаточно высокой скоростью, что приводит к узкому месту.
Есть ли способ настроить сервер так, чтобы на эти запросы getattr отвечали очень быстро (поэтому обычные обучающие задания выполнялись быстро), потенциально задерживая чтение фактических данных содержимого файла для тяжелого задания чтения?
Операции с интенсивным использованием метаданных - не лучший вариант использования для рабочей нагрузки NFS. Если содержимое каталогов не меняется или эти изменения не видны клиентам сразу, вы можете увеличить время жизни кеша атрибутов на стороне клиента, настроив actimeo
вариант крепления. Проверьте man nfs
Больше подробностей.