引用 linux 内核文档的引导参数:
pcie_bus_perf :将设备 MPS 设置为基于其父总线的最大允许 MPS。还将 MRRS(最大读取请求大小)设置为最大支持值(不大于设备或总线可以支持的 MPS)以获得最佳性能。
我不明白为什么 MRRS 不应该大于 MPS“以获得最佳性能”。
我的意思是,如果设备可以执行 MPS=X 和 MRRS=4.X,那么读取请求的数量可能会更少,因此与 MRRS=X 情况相比,总线不那么繁忙,即使需要拆分请求的满足在 4.
拆分会在某处引起一些重大开销吗?
顺便说一句,我知道“公平共享”的概念,并了解大型 MRRS 对共享的影响,但我从来不理解公平共享是最佳性能的同义词。
我希望你找到了答案,但我找到了一些可以提供帮助的信息。
这个kernel-mailing-list-discussion和这篇文章都提到了这个问题,解释是通过设置 MRRS,您可以确保设备不会发送完成数据包大小(答案)大于的读取请求发出读取请求的设备的 MPS。如果确保,每个节点都能够将上面节点的 MPS 作为自己的 MPS(或者如果它低于上面节点的 MPS,则设备支持的最高)。所以一个 MPS 非常低的节点不能减慢整个总线的速度。
讨论中的这个示意图帮助我理解了这个问题:
普通的:
性能:
除了 EP1 之外,每个节点都能够拥有高于 128 字节的 MPS。