Неустойчивая (ужасная) производительность ввода-вывода диска (Debian/Proxmox)

Неустойчивая (ужасная) производительность ввода-вывода диска (Debian/Proxmox)

Краткое содержание

Я наблюдаю резкое колебание производительности ввода-вывода на зеркале ZFS SSD в Proxmox VE 7 (Bullseye). Я просто слишком новичок, чтобы отследить это самостоятельно.

Подробности

Это ОЧЕНЬ заметно плохая производительность в реальных задачах, так что это не просто искусственные бенчмарки. Но чтобы помочь диагностировать это, я запускаю:

sysbench fileio --file-test-mode=rndrw run

Он работает "на голом железе" с терминала Proxmox без активных виртуальных машин. Результаты сильно различаются. Вот два примера:

File operations:
    reads/s:                      2316.07
    writes/s:                     1544.08
    fsyncs/s:                     4949.70

Throughput:
    read, MiB/s:                  36.19
    written, MiB/s:               24.13

General statistics:
    total time:                          10.0062s
    total number of events:              88040

Latency (ms):
         min:                                    0.00
         avg:                                    0.11
         max:                                   35.66
         95th percentile:                        0.65
         sum:                                 9947.54

Threads fairness:
    events (avg/stddev):           88040.0000/0.00
    execution time (avg/stddev):   9.9475/0.00

и

File operations:
    reads/s:                      22.60
    writes/s:                     15.07
    fsyncs/s:                     56.98

Throughput:
    read, MiB/s:                  0.35
    written, MiB/s:               0.24

General statistics:
    total time:                          10.6162s
    total number of events:              877

Latency (ms):
         min:                                    0.00
         avg:                                   11.43
         max:                                  340.62
         95th percentile:                       77.19
         sum:                                10020.19

Threads fairness:
    events (avg/stddev):           877.0000/0.00
    execution time (avg/stddev):   10.0202/0.00

Как видите, есть 10000-кратное колебание общего числа событий и колоссальное увеличение задержки. Эти колебания не "единоразовые". Они постоянно колеблются между этими крайностями.

Я сделал все возможное, чтобы попытаться сузить круг простых аппаратных проблем. Оба SSD совершенно новые, со всеми 100 в smartctl. Я поменял кабели SATA. Я запустил его с деградировавшим зеркалом, чтобы попытаться изолировать проблему с одним диском. Я переместил диски на отдельный контроллер SATA. Ничто не дает мне другого результата.

У меня есть второй сервер, настроенный аналогичным образом, хотя и со старыми (и несоответствующими) SSD в зеркале. Не вижу этой проблемы. Хотя аппаратное обеспечение сервера отличается. Плохие результаты получены с системы, описанной ниже. "Нормальные" кажущиеся результаты получены со старого переделанного ПК с E3-1275v2.

Я надеюсь на советы, которые помогут диагностировать эту проблему. Кажется, проблема в задержке. Что может быть причиной этого? Какие дальнейшие шаги мне следует предпринять?

Заранее спасибо!

Система (если это поможет)

  • МБ: Supermicro X9DRi-F
  • Процессор: Dual Xeon E5-2650 v2
  • Оперативная память: 128 ГБ (8 x 16 ГБ)
  • Контроллеры SATA: встроенный SATA 3 (отдельный SATA 2 также протестирован)
  • SSD: 2x 1 ГБ TeamGroup SATA (да, дешево, но должно подойти)
  • Карты PCIe:
    • Мелланокс MCX312B
    • LSI SAS9207-8i (HBA подключен к 8 несмонтированным дискам...пропущенным через VM)
    • Nvidia GTX 750 (пропущено через VM)

решение1

Нечто подобное произошло вчера со мной с моей новой установкой: Proxmox VE 7 на Intel 11500 с 32 ГБ ОЗУ и 2x SSD Crucial BX500 (это потребительские товары), настроенные как зеркало ZFS.

Я сделал бенчмарк, ddзаписав 1 ГБ нулей на SSD, и он работал на скорости 5 МБ/с (я знаю, что ddэто не очень хорошо для бенчмарка, но все же...). Во время бенчмарка iostatбыло 100% загрузки. В моем случае я решил проблему производительности, обрезав SSD. Вы можете принудительно использовать его zpool trim rpool, а можете включить автообрезку с помощью zpool set autotrim=on rpool. После обрезки дисков я снова запустил бенчмарк, и он работал за 7 с (153 МБ/с).

В процессе поиска способа улучшения производительности я установил значение, xattrрекомендованное saвПроксмокс викии я настроил zfs_arc_min/ zfs_arc_maxи другие параметры ядра.

Надеюсь, это сработает и для вас.

решение2

Вам следует создать пул ZFS на SSD с ashift=12, чтобы выровнять его с 4096 секторами SSD.

Проверить текущее значение

zpool get all pool_name | grep ashift

Также проверьте выравнивание раздела до 1 МБ (2048 секторов по 512 байт)

решение3

ZFS — это файловая система с функцией копирования при записи. Это очень и очень плохо для дешевых SSD. Вы можете протестировать этот SSD на машине с Windows напрямую, выполнив безопасное стирание и выполнив полный тест записи (я думаю, что HD Tune справится с этим), и вы увидите, какова производительность этого SSD, когда у него заканчивается SLC \ RAM... она будет очень плохой... около 50-70 МБ/с вместо 500+ для SATA. Кроме того, некоторые дешевые SSD используют системную оперативную память вместо собственного модуля RAM или кэша SLC, и это плохо для ZFS. Надеюсь, эта помощь помогла решить похожую проблему, которая была решена путем замены SSD на 980 Pro (но меньший размер из-за стоимости).

Связанный контент