p2p - PCIe 设备之间的点对点通信?

标签 p2p pci-e solid-state-drive

为了实现NVMe SSD和其他PCIe设备之间的p2p通信,我想知道是否需要对Linux内核和NVMe驱动程序进行一些修改,或者其他什么?我应该做哪些修改?我已经搜索了几天,但是这方面的信息很少,我需要一些引用。 非常感谢!

最佳答案

有一个 NVMe 规范。称为“ Controller 内存缓冲区写入数据”的功能。反过来,CMB 写入数据支持 NVMe 设备与 PCIe 总线上其他设备之间的 P2P 事务。虽然大部分 CMB 规范已在最新的上游内核中实现,但 CMB 写入数据尚未实现。 CMB 的问题是它为这些 P2P 交易提供的内存非常少。这是尚未有人在上游实现该功能的原因之一。不过,您可以通过用户空间 NVMe 驱动程序/框架 SPDK 来使用它。

另请注意,有一个新的 NVMe 规范。称为持久内存区域的功能。这有更多的内存可供使用,我怀疑有人会在不久的将来将其贡献给上游。

https://www.flashmemorysummit.com/English/Collaterals/Proceedings/2018/20180808_SOFT-201-1_Bates.pdf是有用的背景 Material 。

关于p2p - PCIe 设备之间的点对点通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39954133/

相关文章:

java - 设置客户端套接字和服务器套接字监听器 (Java)

linux - 扇区大小不是 4096 的 xfs 文件系统导致英特尔 NVMe 驱动器性能下降

p2p - 向Kademlia添加新节点,构建Kademlia路由表

vite - 有 vite 的 browserify 吗?如何在基于 vite 的项目中使用 webrtc-swarm?

linux-kernel - mmap() 比 write() copy_form_user() 慢,为什么?

linux - 运行 nvme 测试用例时出错

linux - MMIO 读/写延迟

azure - Azure 辅助角色如何使用 SSD 存储?

java - 如何使用 Google Compute Engine Java 客户端创建 SSD 磁盘

java - 基于网络的点对点客户端使用什么技术