In Wikipedia's entry into the splice , I found:
When using splice () with sockets, the network controller (NIC) must support DMA.
When the network adapter does not support DMA, then splice () will not provide any performance improvement. The reason for this is because each page pipe will simply fill in the frame size (1460 bytes of available 4096 bytes per page).
From what I understand, splicing improves performance because:
- less context switching
- it minimizes the number of copies (at least two copies of DMA)
If the NIC does not support DMA copying, we use a copy of the CPU. This is still better than regular copies that should go into user space.
So, I donโt understand why on Wikipedia there are no performance improvements without DMA support in NIC.
source share