Моя тестовая система представляет собой простой диск raidz 5 (8 ТБ каждый) zpool с 256 ГБ оперативной памяти. Производительность вначале хорошая - около 650 МБ / с. В конце концов, кеш буфера Linux заполняется и начинает вызывать сжатие кеша ZFS ARC, пока не достигнет размера около 32 МБ. Как только это произойдет, пропускная способность упадет примерно до 60 МБ / с.
Я пробовал некоторые параметры настройки ядра, такие как установка vm.vfs_cache_pressure на 200, но не устранял возникновение проблемы.
Мой текущий обходной путь - установить / sys / module / zfs / parameters / zfs_arc_min на 128 ГБ и zfs_arc_max на 252 ГБ. Благодаря буферному кешу Linux, ARC никогда не превышает 128 ГБ, но производительность остается на уровне 650 МБ / с на протяжении всей передачи данных.
В идеале я хотел бы иметь возможность полностью отключить буферный кеш Linux и позволить кэшу ZFS ARC иметь от 0 до 256 ГБ памяти, оставив остальную память доступной для рабочей нагрузки приложения. Если бы можно было дать кешу ZFS ARC более высокий приоритет, чем кеш буфера Linux, это также было бы приемлемым ответом, поскольку это фактически отключило бы буферный кеш Linux.
Спасибо, Зак
Изменить 1: проблема, которую я пытаюсь решить, - это буферный кеш Linux, вытесняющий ZFS ARC из памяти. Я бы хотел, чтобы рабочая нагрузка приложения могла использовать всю память, и ZFS ARC соответственно уменьшился. В качестве обходного пути мне пришлось установить минимальный размер ZFS ARC на большое значение, поскольку буферный кеш Linux вытеснил бы ARC из памяти, если минимальный размер был установлен на 0.
Установите минимальное значение ARC. Это все, что нужно.
ARC будет увеличиваться / уменьшаться по мере необходимости. Все, что пожирает кеш-буфет, не должно находиться в файловой системе ZFS. Что делает этот сервер?
Попробуйте смонтировать каталог NFS с помощью sync
вариант крепления.
Более того, чтобы ограничить использование кэша страниц Linux, вы можете периодически запускать echo 3 > /proc/sys/vm/drop_caches
РЕДАКТИРОВАТЬ: Как видно из комментария eewhite, последняя команда, похоже, удаляет не только кеш страниц, но и ARC. Так что выпускайте его с осторожностью и только при необходимости.
echo 1 >/proc/sys/vm/drop_caches
коснется буферного кеша Linux, но оставит ARC в покое