最近,我阅读了很多关于 10gb/s 网卡、它们的 DMA 以及 linux 内核(10/100 mb/s 网卡)处理数据的方式的网站和书籍,我想到了一些问题。
将 10GB/s 的数据流从 NIC 发送到用户空间的最简单方法是什么(我假设能够以相同的速率处理用户空间中的数据)。
和
您认为在用户空间内实现 DMA 缓冲区以直接从那里读取原始数据(并且显然以相同的速率处理它们)是一个好主意吗?
还是我没有想到的更好的解决方案:/
谢谢你。
最近,我阅读了很多关于 10gb/s 网卡、它们的 DMA 以及 linux 内核(10/100 mb/s 网卡)处理数据的方式的网站和书籍,我想到了一些问题。
将 10GB/s 的数据流从 NIC 发送到用户空间的最简单方法是什么(我假设能够以相同的速率处理用户空间中的数据)。
和
您认为在用户空间内实现 DMA 缓冲区以直接从那里读取原始数据(并且显然以相同的速率处理它们)是一个好主意吗?
还是我没有想到的更好的解决方案:/
谢谢你。
我还建议看一下 PFQ 框架(https://github.com/pfq/PFQ和http://netgroup.iet.unipi.it/software/pfq/),它建立在 netmap 和pf_ring 概念并隐藏它们以允许在用户空间中进行简单的多核数据包处理。
我记得在渥太华 Linux 研讨会上听过英特尔的一些人发表的演讲,该演讲完全实现了您的建议。当他们测量结果与普通套接字接口时,他们惊讶地发现,对于许多工作负载,这种方法的性能并没有比套接字接口更好,有时更差(!)。
我搜索但现在无法在网上找到确切的论文,但也许这会给你一个提示......