Почему мой пул ZFS тратит 97% своего времени на чтение цели и только около 3% записи на операцию записи?

514
Stilez

Это сбивает с толку меня, и я не знаю способа углубиться в то, что на самом деле делает ZFS.

Я использую чистую установку FreeNAS 11.1 с быстрым пулом ZFS (импортированные зеркала на быстрых 7200) и отдельным SSD UFS для тестирования. Конфиг в значительной степени "из коробки".

SSD содержит 4 файла размером 16 -120 ГБ, скопированных с помощью консоли в пул. Пул дедуплицирован (стоит того: экономия в 4 раза, размер на диске 12 ТБ), а система имеет много оперативной памяти (128 ГБ ECC) и быстрый Xeon. Памяти вполне достаточно - zdbпоказывает, что пул имеет в общей сложности 121M блоков (544 байта каждый на диске, 175 байтов каждый в ОЗУ), поэтому весь DDT составляет всего около 20,3 ГБ (около 1,7 ГБ на ТБ данных).

Но когда я копирую файлы в пул, я вижу это в zpool iostat: enter image description here

Это делает цикл из минут чтения низкого уровня и краткого всплеска записей. Прочитанная часть показана на рис. Общая скорость записи для задачи также невелика - пул пуст на 45% / 10 ТБ и изначально может записывать со скоростью 300–500 МБ / с.

Не зная, как проверить, я подозреваю, что низкоуровневые чтения - это чтение DDT и других метаданных, так как они не загружаются в ARC (или постоянно выталкиваются из ARC при записи данных файла). Может быть.

Возможно, он обнаружил попадания дедупликации, так что не так много написано, только я не помню ни одной дублированной версии этих файлов, и он делает то же самое из / dev / random, насколько я помню (я проверю это и скоро обновлю). Может быть. Нет настоящей идеи.

Что я могу сделать, чтобы разобраться в том, что происходит более точно, с целью его оптимизации?

Обновление ОЗУ и дедупликация:

Я обновил Q, чтобы показать размер ДДТ после первоначального комментария. ОЗУ дедупликации часто указывается как 5 ГБ на ТБ x 4, но это основано на примере, который действительно не очень подходит для дедупликации. Вы должны рассчитать количество блоков, умноженное на байты на запись. «Х 4» часто цитируются просто «мягкий» предел по умолчанию только (по умолчанию метаданных ZFS ограничивает до 25% АРК, если не сказано, чтобы использовать больше - эта система specced для DeDup и я добавил 64GB, который все использовать, чтобы ускорить кэширование метаданных).

Таким образом, в этом пуле zdbподтверждается, что для всего ДДТ необходимо всего 1,7 ГБ на ТБ, а не 5 ГБ на ТБ (всего 20 ГБ), и я рад предоставить метаданные 70% ARC, а не 25% (80 ГБ из 123 ГБ).

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

1
Это дедупликация. Из практических правил в статье [ZFS: дедупировать или не дедупировать ...] (https://constantin.glez.de/2011/07/27/zfs-to-dedupe-or-not-dedupe/ ), вам может понадобиться около 240 ГБ ОЗУ (12 ТБ × 5 ГБ / ТиБ × 4), чтобы вместить всю таблицу дедупликации. Эта статья, вероятно, более полезна, чем ответ, который я мог бы написать здесь. Deltik 6 лет назад 0
Спасибо и Q обновлен. Я больше ищу способы на самом деле исследовать это. Я тоже не могу думать, что еще это может быть - кроме этого не должно быть. Таблица дедупликации в онлайн-примерах из пула без большого дублирования. У меня в 4 раза больше, и это означает, что весь ДДТ составляет всего 1,7 ГБ на ТБ или 20 ГБ, что составляет менее 17% от ARC (см. Обновление для расчета). Теоретически я не нахожусь вблизи такого предела, и дедупликация должна составлять 100% в оперативной памяти (или настраиваться так). Отсюда мое недоумение по поводу его активности и интереса к исследованию ZFS, чтобы узнать точно, что ** он ** думает, что он на самом деле делает ....... Stilez 6 лет назад 0
Как насчет тестирования тех же данных в новом пуле без дедупликации? Затем в последующем меньший объем данных с дедупликацией, но по правилу Deltik выкладывается. Таким образом, вы можете довольно быстро уменьшить неизвестные факторы. user121391 6 лет назад 0

0 ответов на вопрос

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