linux – 在用户空间中使用DMA内存传输
发布时间:2020-12-14 01:49:30 所属栏目:Linux 来源:网络整理
导读:用户空间是否有可用的 linux DMA mem-to-mem复制机制? 我有一个Linux应用程序,通常(每秒50-100次)必须记忆几个兆(10)的数据.通常这不是问题,但我们已经开始看到证据表明它可能消耗了太多的CPU带宽.目前的测量结果表明我们正在以1Gbytes / s的速度移动. 我知
用户空间是否有可用的
linux DMA mem-to-mem复制机制?
我有一个Linux应用程序,通常(每秒50-100次)必须记忆几个兆(10)的数据.通常这不是问题,但我们已经开始看到证据表明它可能消耗了太多的CPU带宽.目前的测量结果表明我们正在以1Gbytes / s的速度移动. 我知道内核中的dma功能,我看到一些文档讨论为大内存副本构建自定义驱动程序,正是出于这个原因.但似乎有人会为此构建一个通用API.我错了吗? DMA是仅内核功能吗? 我应该澄清,这是针对英特尔X86架构,而不是嵌入式. 解决方法
> Linux的DMA API不允许内存到内存传输.它仅用于设备和内存之间的通信.查看Documentation / DMA-API.txt以获取更多详细信息.
>在硬件级别,x86 DMA控制器不允许内存到内存传输.这里讨论过: DMA transfer RAM-to-RAM >鉴于内存总线通常比CPU慢,启动内核驱动的内存副本有什么好处?您仍然需要等待传输完成,其持续时间仍然取决于内存带宽,与CPU驱动的副本完全相同. >如果程序的性能完全取决于内存到内存复制性能,则意味着可以通过尽可能避免复制或通过实现更智能的过程(如写入时复制)来大大改进. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |