pcie_bus_perf :了解 MRRS 的上限

pcie_bus_perf :了解 MRRS 的上限

引用linux内核文档的启动参数:

pcie_bus_perf :根据其父总线将设备 MPS 设置为最大允许的 MPS。还将 MRRS(最大读取请求大小)设置为支持的最大值(不大于设备或总线可以支持的 MPS)以获得最佳性能。

我不明白为什么 MRRS 不应该大于 MPS“以获得最佳性能”。

我的意思是,如果设备可以执行 MPS=X 和 MRRS=4.X,那么读取请求的数量可能会更少,因此与 MRRS=X 情况相比,总线不会那么繁忙,即使需要拆分请求的满足在 4.

分裂会在某个地方引起一些重大的开销吗?

顺便说一句,我知道“公平共享”的概念,也了解大 MRRS 对共享的影响,但我从来不理解公平分享同义于最棒的表演

答案1

我希望您找到答案,但我找到了一些可以提供帮助的信息。

内核邮件列表讨论和这个文章提到这个问题,解释是,通过设置 MRRS,您可以确保设备不会发送完成数据包大小(答案)大于发送读取请求的设备的 MPS 的读取请求。如果确保这一点,则每个节点都可以将上面节点的 MPS 作为自己的 MPS(如果低于上面节点的 MPS,则将其设为设备支持的最高 MPS)。因此 MPS 非常低的一个节点无法减慢整个总线的速度。

讨论中的这个示意图帮助我理解了这个问题:

普通的:

        root (MPS=128)
         |
   ------------------
  /                  \
 bridge0 (MPS=128)    bridge1 (MPS=128)
/                      \
EP0 (MPS=128)           EP1 (MPS=128)

性能:

        root (MPS=256)
         |
   ------------------
  /                  \
 bridge0 (MPS=256)    bridge1 (MPS=128)
/                      \
EP0 (MPS=256)           EP1 (MPS=128)

除 EP1 外,每个节点都能够具有高于 128 字节的 MPS。

相关内容