pcie原始吞吐量测试

时间:2013-01-24 14:29:04

标签: linux-device-driver throughput pci-e

我正在通过内核模块进行PCIE吞吐量测试,测试结果数字非常奇怪(写入速度为210MB / s,但PCIE gen1 x1的读取速度仅为60MB / s)。如果我的测试配置有错误的方法,我想问你的建议和更正。

我的测试配置如下:

  • 一块板配置为根端口,一块板配置为 端点。 PCIE链路为gen 1,宽度x1,MPS 128B。两块板都跑了 Linux OS
  • 在Root Port端,我们分配一个内存缓冲区,其大小为4MB。 我们将入站PCIE内存事务映射到此缓冲区。
  • 在Endpoint端,我们对远程缓冲区执行DMA读/写操作 测量吞吐量。有了这个测试,Endpoint将永远是 交易发起人。
  • EP Write测试的测试结果为214MB / s,仅为60MB / s 用于EP读测试。写测试吞吐量对于PCIe是合理的 Gen1 x1,但EP读取吞吐量太低。

对于RP板,我使用PCIE以太网e1000e卡进行了测试,最大吞吐量达到900Mbps。我只是想知道在以太网TX路径的情况下,以太网卡(播放端点角色)也执行EP读取请求,并且可以通过更小的DMA传输获得高吞吐量(~110MB / s),因此我的DMA必定有问题EP读配置。

DMA读取测试的细节可以用以下伪代码汇总:

dest_buffer = kmalloc(1MB)
memset(dest_buffer, 0)
dest_phy_addr = dma_map_single(destination_buffer)
source_phy_addr = outbound region of Endpoint
get_time(t1)
Loop 100 times
    Issue DMA read from source_phy_addr to dest_phy_addr
    wait for DMA read completion
get_time(t2)
throughput = (1MB * 100)/(t2 - t1)

任何建议和建议都表示赞赏。先谢谢!

0 个答案:

没有答案