В Введение Википедии в сращивание , я нашел:
При использовании splice () с сокетами сетевой контроллер (NIC) должен
поддержка DMA.
Если сетевой адаптер не поддерживает DMA, тогда splice () не доставит
улучшение производительности. Причина в том, что каждая страница
труба просто заполнится до размера кадра (1460 байтов из имеющихся 4096
байт на страницу).
Насколько я понимаю, соединение улучшает производительность, потому что:
- меньше переключения контекста
- минимизирует количество копий (минимум две копии DMA)
Если сетевая карта не поддерживает копирование DMA, мы используем копию процессора. Это все же лучше, чем обычные копии, которые должны идти в пространство пользователя.
Итак, я не понимаю, почему Википедия говорит, что без поддержки DMA в NIC нет улучшений производительности.