Networking 当收到大量数据包时,哪种方式更快?

Networking 当收到大量数据包时,哪种方式更快?,networking,kernel,Networking,Kernel,我有两个办法来处理这个包裹 1.我将内存池和mmap分配到用户空间,当数据包到达时,我将数据包复制到内存池中,然后用户空间可以访问它 2.当数据包到来时,我每次都将数据包的数据映射到用户空间,用户空间就可以访问这个数据包。 哪个更好,为什么?取决于接收应用程序线程的处理能力。怎么做 假设您有一个接收线程轮询mmapped描述符环,该环足够快,足以将数据包从缓冲区中取出,从而允许接口上的数据包以相同的速度排队。在这种情况下,选项1肯定是最好的 说到选项2,我觉得每个数据包mmap调用一个系统调用

我有两个办法来处理这个包裹
1.我将内存池和mmap分配到用户空间,当数据包到达时,我将数据包复制到内存池中,然后用户空间可以访问它
2.当数据包到来时,我每次都将数据包的数据映射到用户空间,用户空间就可以访问这个数据包。


哪个更好,为什么?

取决于接收应用程序线程的处理能力。怎么做

假设您有一个接收线程轮询
mmapped
描述符环,该环足够快,足以将数据包从缓冲区中取出,从而允许接口上的数据包以相同的速度排队。在这种情况下,选项1肯定是最好的

说到选项2,我觉得每个数据包
mmap
调用一个系统调用,我认为这会影响性能,而选项1是在用户空间中创建缓冲池,一次只调用一个
mmap
限制一个系统调用