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

时间:2014-08-25 12:30:39

标签: networking kernel

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

哪一个更好,为什么?

1 个答案:

答案 0 :(得分:1)

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

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

当涉及到选项2时,我觉得每个数据包mmap会调用一个系统调用,我认为这会影响性能,而选项1则是您在用户空间中立即创建缓冲池,只调用一个{{1}限制一个系统调用。