Медленная производительность из-за txg_sync для ZFS 0.6.3 на Ubuntu 14.04

Я использую собственный ZFS с "ZFS на Linux", установленном от PPA здесь. Установка не была проблемой, и я использую ее в зеркальной конфигурации с двумя WD Красные жесткие диски на 4 ТБ. К сожалению, у меня есть проблемы производительности при записи в дисковый массив. Когда чтение производительности в порядке.

У меня есть проблема, которую во время больших записей к массиву, процесс копии останавливает к ~5-10MB/s каждым ~5 секундам, как сообщается rsync. Остановы промежутка скоростей являются ~75MB/s, который встроен с другими файловыми системами и что я ожидал бы от системы (я попробовал btrfs, который получает ~85MB/s). Взгляд на iotop Я нашел, что остановы копии совпадают с процессом txg_sync performing/hogging ввод-вывод. Эта проблема, кажется, проблема "пульсирующего" ввода-вывода, который, кажется, распространенная проблема с ZFS (см. здесь и здесь). Я применил опцию из первой ссылки

options zfs zfs_prefetch_disable=1

который помог несколько с проблемами производительности, но не решил их. 5 интервалов с txg_sync кажется, тот из vfs.zfs.txg.timeout = "5" (например, 5 с), который является настройкой по умолчанию ZFS на Linux.

Это нормальное поведение или является там другими настройками, я могу попробовать? Если так, какие-либо предложения? Обратите внимание, что я не мог найти многие опции в обеих ссылках...

РЕДАКТИРОВАНИЕ 2: продолжать немного: система, которую я использую, является Микросервером HP ProLiant N36L, который я обновил до 8 ГБ RAM ECC. Команды, которые я использовал для создания объема ZFS, даны здесь. Обратите внимание, что я использую -o ashift=12 когда я нашел (найденный на zfsonlinux FAQ), что это должно заставить ZFS играть по правилам с 4096-байтовыми блоками Усовершенствованных Дисков Формата.

$ zpool create -o ashift=12 -m /zpools/tank tank mirror ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E0871252 ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E3PKP1R0
$ zfs set relatime=on tank
$ zfs set compression=lz4 tank
$ zfs create -o casesensitivity=mixed tank/data

Добавленный zfs_prefetch_disable опция к /etc/modprob.d/zfs.conf делать изменения постоянными:

options zfs zfs_prefetch_disable=1

Так, чтобы:

$ cat /sys/module/zfs/parameters/zfs_prefetch_disable 
1

РЕДАКТИРОВАНИЕ 1: Согласно просьбе я добавил zpool get all вывод. Обратите внимание, что я забыл упоминать, что я включил сжатие на пуле...

$ zpool get all
NAME  PROPERTY               VALUE                  SOURCE
tank  size                   3.62T                  -
tank  capacity               39%                    -
tank  altroot                -                      default
tank  health                 ONLINE                 -
tank  guid                   12372923926654962277   default
tank  version                -                      default
tank  bootfs                 -                      default
tank  delegation             on                     default
tank  autoreplace            off                    default
tank  cachefile              -                      default
tank  failmode               wait                   default
tank  listsnapshots          off                    default
tank  autoexpand             off                    default
tank  dedupditto             0                      default
tank  dedupratio             1.00x                  -
tank  free                   2.21T                  -
tank  allocated              1.42T                  -
tank  readonly               off                    -
tank  ashift                 12                     local
tank  comment                -                      default
tank  expandsize             0                      -
tank  freeing                0                      default
tank  feature@async_destroy  enabled                local
tank  feature@empty_bpobj    active                 local
tank  feature@lz4_compress   active                 local
3
задан 13 April 2017 в 15:22
1 ответ

Пакоман, Кажется, что из-за того, что у вас есть два двух диска WD-RED в зеркале, ввод-вывод для записи группы согласованности ZIL на диск вызывает высокий ввод-вывод. Всегда есть ЗИЛ (Write-Cache). Если у вас нет устройств журнала, то устройство журнала находится в самом пуле и может иметь максимальную скорость записи * 5 секунд. Вы, вероятно, читаете из ЗИЛа и фиксируете данные в постоянном хранилище каждые 5 секунд. Вопросы:

  1. У вас есть SLOG-устройство? В идеале это DRAM Drive (HGST ZeusRAM,и т.д ...).
  2. Есть ли у вас какие-либо устройства кэширования для чтения? В идеале, связка Flash, например карта PCIe на 480 ГБ.

Я бы порекомендовал создать SLOG где-нибудь, а не в пуле (даже загрузочное устройство лучше, чем нигде, если оно НЕ флэш). Таким образом, вы не будете интенсивно читать и писать в зеркало каждые 5 секунд.

2
ответ дан 3 December 2019 в 07:00

Теги

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