Запись в несколько файловых дескрипторов с минимальными системными вызовами - PullRequest
1 голос
/ 01 мая 2020

У меня есть REST API, который также служит SSE для отправки событий клиентам. Ожидаемая нагрузка может составлять до 10 тыс. Одновременно. К счастью, так как клиент никогда не отправляет данные, нам не нужно беспокоиться об опросе соединений, однако нашим следующим узким местом становится отправка данных на FD. или их подмножество. Есть ли хороший способ сделать это, не тратя более 60% нашего профилированного процессорного времени внутри syscall?

Я видел некоторые разговоры о сплайсинге tcp, так что мы vmsplice затем загружаем нашу полезную нагрузку в канал tee это в n много труб, затем разделить на n много сокетов. Но действительно ли это идеальный способ достижения этого?

Может ли что-то наподобие memfd_create + sendfile работать?

Достигнет ли такой длины даже того, чтобы сохранить копирование полезной нагрузки ~ 10k раз

...