zfs на FreeBSD 10

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

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

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

2
задан 16 March 2017 в 03:16
1 ответ

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

См. этот поток из старого списка рассылки OpenSolaris:

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

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

...

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

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

Без полного переписывания системы VM эта проблема заключается в следующем. неразрешимый.

с этим последующим :

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

Так что проблема была исправлена на Solaris, а не на FreeBSD.

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

2
ответ дан 3 December 2019 в 11:29

Теги

Похожие вопросы