Назад | Перейти на главную страницу

Отсутствие поддержки 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 ?

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

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

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