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

Почему репликация ZFS однопоточная?

На моем 8-ядерном NAS я вижу, что при репликации ZFS через SSH исчерпано только одно ядро.

Я ожидал, что передача снимка будет идеально масштабироваться с количеством ядер, поскольку снимок можно разделить на N независимых частей.

Есть ли какие-то технические причины, по которым он однопоточный?

Не уверен в этом, но (обоснованное) предположение:

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

Когда вы добавляете LAN-соединение в микс, все снова по-другому.
Соединение SSH - это однопоточная штука. Очевидно, что вы можете запускать несколько подключений параллельно, но, опять же, природа подключения к локальной сети очень последовательна (и скорость локальной сети обычно является наиболее ограничивающим фактором), поэтому спорный вопрос, приведет ли это к увеличению производительности и стоит ли затраченных усилий.

И конечно ... Может ли другая сторона справиться с этим таким же образом?
Если у принимающего NAS меньше ядер (худший случай: всего 1), чем у отправителя, вы можете легко обременять его огромными накладными расходами на переключение задач.
И если физические дисковые структуры между NAS-блоками не совпадают, существует также (нетривиальный) объем реорганизации данных, который необходимо выполнять на лету.
Опять же: стоит ли это сложности и усилий?