Grant Curell Asked: 2021-11-04 08:53:06 +0800 CST2021-11-04 08:53:06 +0800 CST 2021-11-04 08:53:06 +0800 CST RDMA 如何在没有 CPU 的情况下在两台服务器之间传输? 772 我一直在阅读有关 RoCE 的内容,它谈到了将一台服务器中的内存之间的数据零拷贝直接传输到另一台服务器中的应用程序的内存。大多数文章都指出这是在没有 CPU 参与的情况下完成的。我不明白这是如何实现的。数据如何在不经过 CPU 处理的情况下从适配器传到 RAM?它如何知道应用程序的数据在 RAM 中的位置? memory rdma 1 个回答 Voted Best Answer TomTom 2021-11-04T09:32:39+08:002021-11-04T09:32:39+08:00 我认为您误解了“没有 CPU”。这并不意味着 CPU 根本不参与 - 它只是意味着 CPU 没有进行复制。它通过驱动程序进行复制操作的设置,然后硬件进行实际处理。 您的链接非常明确 - 只需阅读它: RDMA 通过使网络适配器能够直接从线路传输数据来支持零拷贝网络 那是复制操作,而不是设置。必须有人告诉网络适配器。 了解真正发挥作用的现代网络是每秒 100+ gigabit - 10 gigabyte+ - ,通常是多条线路相结合,如今的高端是 400gigabit。 这是很多 - CPU 从 RAM 读取,循环它然后将它发送到适配器,当你可以告诉适配器读取和发送哪个内存时。 但同样,“不参与”不是“根本没有 CPU”,而是“CPU 没有复制数据”。它仍然进行所有控制。
我认为您误解了“没有 CPU”。这并不意味着 CPU 根本不参与 - 它只是意味着 CPU 没有进行复制。它通过驱动程序进行复制操作的设置,然后硬件进行实际处理。
您的链接非常明确 - 只需阅读它:
那是复制操作,而不是设置。必须有人告诉网络适配器。
了解真正发挥作用的现代网络是每秒 100+ gigabit - 10 gigabyte+ - ,通常是多条线路相结合,如今的高端是 400gigabit。
这是很多 - CPU 从 RAM 读取,循环它然后将它发送到适配器,当你可以告诉适配器读取和发送哪个内存时。
但同样,“不参与”不是“根本没有 CPU”,而是“CPU 没有复制数据”。它仍然进行所有控制。