Eugene-Usachev
@Eugene-Usachev

Как следует реализовать zero copy операции на уровне движка?

Сейчас я занимаюсь довольно амбициозным проектом: создаю свой асинхронный движок для Rust, работающий поверх io-uring. С помощью io-uring я могу использовать Zero-Copy операции.

Я прочитал про них пару статей, и в них описывались только преимущества Zero-Copy операций. Их доводы мне показались убедительными. Дальше я провёл свой собственный benchmark и не увидел изменений в производительности (потому что они незначительные).

Я могу предпринять следующие решения:

1 - сделать все io операции через НЕ Zero-Copy, что может быть плохо для производительности приложений;
2 - сделать все io операции через Zero-Copy, пока что я не вижу недостатков этого решения;
3 - удвоить количество методов, оставив методы, которые не используют Zero-Copy, и создав методы с постфиксом "zc", которые используют.

Однако я не могу принять решение. Если Zero-Copy во всех случаях лучше, тогда имеет смысл спрятать это от разработчиков, чтобы они не задумывались об этом, но я не уверен, что Zero-Copy не имеет недостатков. Какое решение мне следует принять и почему?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы