繁体   English   中英

从内核到用户空间(DMA)

[英]From the kernel to the user space (DMA)

最近,我一直在阅读很多网站,关于10gb / s NIC的书籍,他们的DMA以及linux内核(10/100 mb / s网卡)处理数据的方式,我想到了一些问题。

将10GB / s数据流从NIC​​发送到用户区的最简单方法是什么(我假设能够以相同的速率处理用户区中的数据)。

您是否认为在用户空间内实现DMA缓冲区以直接从那里读取原始数据(并以相同的速率处理它们)是一个好主意

或者是他们没有想到的更好的解决方案:/

谢谢。

使用Linux正常套接字最容易的事情。 它可能不是最有效的,但它是最简单的。

有框架,可以非常有效地在用户空间中接收和传输数据。 它们将相同的缓冲区映射到NIC(DMA)和进程,因此不需要复制数据。
这些框架完全绕过内核 - 您必须直接与NIC进行交互。 这样的框架例如是PF-RINGNetmap

我还建议看看PFQ框架( https://github.com/pfq/PFQhttp://netgroup.iet.unipi.it/software/pfq/ ),它构建于netmap之上, pf_ring概念并隐藏它们以允许在用户空间中进行简单的多核数据包处理。

我记得听过英特尔在渥太华Linux研讨会上的一些人的演讲,这些演讲完全实现了你提出的建议。 当他们测量结果与正常套接字接口时,他们惊讶地发现,对于许多工作负载,这种方法没有表现得更好,有时甚至更糟(!)然后是套接字接口。

我搜索但是现在无法在网上找到确切的纸张,但也许这会给你一个提示......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM