我一直在阅读关于RoCE的文章,它谈到了如何在一台服务器中的内存之间直接将数据零拷贝传输到另一台服务器中的应用程序内存。大多数文章指出,这是在没有来自CPU的参与下完成的。不过,我不明白这是怎么做到的。数据是如何在没有CPU处理的情况下从适配器获取到RAM的?它如何知道应用程序的数据在RAM中的位置?
发布于 2021-11-03 17:32:39
我想你误解了“没有CPU”。这并不意味着CPU根本不涉及-它只是意味着CPU没有进行复制。它通过驱动程序完成复制操作的设置,然后硬件完成实际处理。
你的链接写得很清楚--只要读一读:
RDMA通过允许网络适配器直接从有线传输数据,支持零拷贝网络。
这是复制操作,而不是设置。总得有人告诉网络适配器。
要知道,现代网络的真正亮点是100+千兆比特--每秒10 gigabyte+,通常是多行加在一起,如今高端网络达到了400 10。
这是很多- CPU从RAM读取,循环它然后将它发送到适配器,当你可以告诉适配器读和发送哪个内存。
但是,“不参与”不是“根本没有CPU”,而是"CPU没有复制数据“。它仍然能控制一切。
https://serverfault.com/questions/1082543
复制相似问题