Вот мои предположения о том, что несоответствие в ожидании / реальности:
Для теста чтения (3 прогона чтения 1 МБ записей из файла 8 ГБ)
Устройство кэш-памяти ZFS (обычно называемое «L2ARC») заполняется при записи или чтении блока. Из вашего описания я предполагаю, что тест записывает файл один раз, а затем читает его последовательно 3 раза. Я ожидаю, что L2ARC сделает копию блоков на вашем устройстве кеша во время первой записи или, по крайней мере, при первом чтении данных. (Хотя обратите внимание, что L2ARC еще не сохраняется при перезагрузках, потому что карта того, что находится на диске, хранится только в памяти - глупое ограничение, но, вероятно, не то, что влияет на ваш тест.)
Используете ли вы zfs set secondarycache=all
для кэширования всех блоков данных, в отличие от просто metadata
блоков? (Просто для устранения неоднозначности / объяснения именования свойство primarycache
имеет аналогичные настройки для кэш-памяти в оперативной памяти, также называемой «ARC».)
Чтобы проверить, используется ли L2ARC во время вашего теста, вы можете посмотреть arcstat
данные - статистика, которая вас заинтересует:
"l2hits": [6, 1000, "L2ARC hits per second"],
"l2miss": [6, 1000, "L2ARC misses per second"],
Учитывая описанный вами тест, я ожидаю увидеть очень высокую частоту обращений (при условии, что ваш SSD> 8 ГБ).
Для теста записи (3 прогона записи 1 МБ записей из файла 8 ГБ)
Это поможет только в том случае, если вы также добавите устройство SSD log
(обычно называемое «ZIL», как вы упомянули в одном из комментариев). Я бы разделил ваш SSD на два раздела: один очень маленький для использования в качестве ZIL (нужно только хранить достаточно данных для кеширования ~ 10 секунд записи, если вы не настроили файловую систему), а другой - использовать оставшуюся часть диска как L2ARC.
Чтобы обратиться к совету, который вы нашли по поводу неиспользования ZIL, если у вас нет большого мощного сервера, я не думаю, что есть какая-либо причина не использовать ZIL в небольшой системе. Я предполагаю, что это связывает немного дополнительного SSD, который мог бы быть использован для кэша чтения, но он не использует дополнительную оперативную память или значительный объем дополнительного процессора, поэтому эффективно он должен увеличить ваши задержки записи / пропускную способность без негативных последствий побочные эффекты.