Назад | Перейти на главную страницу

zfs на FreeBSD 10

Я столкнулся с очень странной проблемой производительности.

У меня есть приложение, которое обрабатывает некоторые данные и создает около 100 ГБ файлов. Это работает нормально, и после этого я могу скопировать файлы с машины. Локальные диски - это ZFS, Может в этом проблема.

Если, однако, я запускаю другую утилиту, которая отображает файлы и меняет местами байты файлов, перед копированием файлов файлы: 1) передаются намного медленнее, возможно, 50 МБ / с (или хуже) с твердотельного диска, systat - iostat показывает гораздо более высокий уровень дисковых транзакций. 2) Проводная память машины проходит через крышу, чтобы вместить ARC 70+ ГБ. Дуга 70 ГБ кажется смешной, поскольку это около четверти локального дискового хранилища. Если после передачи файлы удаляются, ARC падает, а проводная память - нет. Есть идеи о том, что происходит?

ZFS на платформах, отличных от Solaris, кажется, имеет очень низкую производительность, когда mmap() используется для записи данных.

Видеть эта ветка из старого списка рассылки OpenSolaris:

Способы устранения неоптимальной производительности mmap на zfs

Я получаю неоптимальную производительность с базой данных на основе mmap (mongodb), которая работает на zfs Solaris 10u9.

...

Это было в более старой версии Solaris. Это актуально из-за эта ветка от июля 2016 года из списка рассылки FreeBSD (курсив мой):

Краткая история: ZFS была прикреплена к ядру и никогда не была должным образом интегрирована в управление страницей виртуальной машины, что приводит к ДРАМАТИЧЕСКОЙ низкой производительности для всего, что использует mmap () для ввода-вывода записи. Эта проблема была решена в Oracle Solaris с помощью замечательной перезаписи распределителя виртуальных машин, которая появилась после того, как Opensolaris снова стал закрытым.

Без полной перезаписи системы ВМ эта проблема неразрешима.

с участием это продолжение:

... так как первоначальный импорт был сделан очень мало для улучшения интеграции, и я не знаю никого, кто бы подходил к этой задаче и проявил бы к этому интерес. Следовательно, производительность mmap () в обозримом будущем, скорее всего, «обречена».

Таким образом, проблема решена в Solaris, но не во FreeBSD.

Если вам нужно быстрее mmap() производительности, я бы рекомендовал резко ограничить размер вашего ZFS ARC. Это должно уменьшить влияние проблем согласованности между кешем страницы, mmap() использует и ARC. Который мощь повысить производительность. Опять же, может и нет. Но попробовать стоит. Только не становитесь слишком маленькими, иначе ваш предел ARC будет проигнорирован.