Кирилл Бобров
@vitalif Слушай вопрос, ты наверно сто раз писал, но всетаки как ты fsync() реализовал в vitastore? ну всмысле если ceph ждет fsync(), а витастор шо?
есть 2 режима
1) как в цефе - автоматический fsync на каждую операцию. то есть клиент просто шлёт write-write-write...
2) ожидание явного fsync от клиента. то есть клиент шлёт write-write-sync-write-write-sync и т.п.
соответственно, 1) выгоден на хороших SSD, где fsync бесплатный, а 2) на говно-ссд, где fsync платный (но только не в iodepth=1, в iodepth=1 режим 2 всегда медленнее режима 1 из-за дополнительного roundtrip).
одним из последствий реализации 2) является то, что клиент вынужден также держать в памяти все непросинканные врайты.
т.к. если OSD, на который они писались, упадёт до того, как клиент отправит fsync - врайтов, вероятно, не окажется физически на дисках и клиенту нужно будет их повторить. поэтому в режиме 2) каждый врайт ещё копируется в память клиента
настройка режима 2 или 1 общая на весь кластер