Linux 记忆通道 问题(背景):

Linux 记忆通道 问题(背景):,linux,memory,memory-management,allocation,Linux,Memory,Memory Management,Allocation,我的目标是一台有四个内存通道和一个pcie卡的机器,我希望尽可能快地传输数据。考虑到卡理论上每种方式可以传输大约8GB/s(7.88GB/s),这将导致大约15.8GB/s的吞吐量。通过查看,我知道我的最大内存传输速率是12.8GB/s。即使不考虑实际安装的内存,PCIe吞吐量显然也超过了一个内存通道的能力 为了避免这种情况,我希望确保流向设备的内存块最终位于与我接收到的不同的通道上 问题: 是否可以在linux内核的特定通道上分配内存?如果可以,将使用什么接口 是否需要获取物理调用内存映射到不

我的目标是一台有四个内存通道和一个pcie卡的机器,我希望尽可能快地传输数据。考虑到卡理论上每种方式可以传输大约8GB/s(7.88GB/s),这将导致大约15.8GB/s的吞吐量。通过查看,我知道我的最大内存传输速率是12.8GB/s。即使不考虑实际安装的内存,PCIe吞吐量显然也超过了一个内存通道的能力

为了避免这种情况,我希望确保流向设备的内存块最终位于与我接收到的不同的通道上

问题:
  • 是否可以在linux内核的特定通道上分配内存?如果可以,将使用什么接口
  • 是否需要获取物理调用内存映射到不同通道(哪个通道上有哪个地址范围/页面帧)的信息
  • 是否有一个接口来请求将页面移动到/分配到特定的框架上
  • 如何确保在调出/重新定位页面之前将其固定?(假设我必须执行
    magic\u allocate\u page\u on_channel();get\u user\u pages(…)
    我将有一个短暂的时间,页面可以(理论上)再次交换,并且可以通过
    get\u user\u pages
    交换到不同的网络框架)
  • 看看