Отсутствие поддержки TRIM - будут ли тесты на ZFS + SSD постепенно замедляться?

Контекст: Я использую Toshiba 512 ГБ NVMe (модель : KXG50ZNV512G)

Я наблюдаю это странное поведение при тестировании Postgres на ZFS-on-Linux (с помощью pgbench ), где второй и третий прогоны теста все медленнее, чем первый запуск.

Вот что происходит:

client=1  |  770 =>  697 | 10% reduction in TPS
client=4  | 2717 => 2180 | 24% reduction in TPS
client=8  | 4579 => 3339 | 37% reduction in TPS
client=12 | 4219 => 4175 | 01% reduction in TPS
client=48 | 5902 => 5623 | 05% reduction in TPS
client=96 | 7094 => 6739 | 05% reduction in TPS

Я повторно запускаю эти тесты, и ранние числа показывают, что 3-й прогон медленнее, чем 1-й, а 4-й медленнее, чем 3-й.

Может ли это вызвать отсутствие поддержки TRIM в ZFS-on-Linux - https://github.com/zfsonlinux/zfs/pull/8255 ?

1
задан 30 January 2019 в 12:05
2 ответа

Вместо отсутствующей поддержки TRIM (дефицита производительности которого часто можно избежать, просто оставив ~ 10% неразмеченного пространства в конце диска), вероятно, вас поражает поведение ZFS CoW.

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

Чтобы проверить, так ли это, просто используйте zpool iostat для записи общего числа операций чтения / записи при первых трех запусках: если вы видите, что второй и третий запускают команду на увеличенное количество переданных байтов, у вас есть подтверждение того, что написано выше.

1
ответ дан 3 December 2019 в 23:08

Вы можете проверить, включена ли ваша автообрезка в этом пуле.

zpool get autotrim [poolname]

Включение этого параметра может повысить производительность. Если нет, вы можете попробовать включить его с помощью:

zpool set autotrim=on [имя_пула]

Также может помочь оставить 10% пустого места. Однако, если ssd не новый, вам нужно уменьшить существующий раздел, чтобы оставить 10% пустого места. После этого вы также должны ввести «blkdiscard» в это пустое место. Обратите внимание, что blkdiscard — опасная команда, которая может стереть существующие данные, если вы введете неправильный адрес. Не рекомендуется делать это на существующем ssd.

0
ответ дан 20 July 2021 в 18:23

Теги

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