网易首页 > 网易号 > 正文 申请入驻

浅析MPS对PCIe系统性能和稳定性的影响

0
分享至

在pcie协议中,关于TLP数据传输过程,有两个比较重要的参数:

第一个: Max Payload Size, 简称MPS。这参数决定了TLP传输过程中大小。在接收端,需要使用同样的MPS大小,在发送端不能超过MPS的设置。在协议中可以设定128B-4KB,其中默认是128B。在Device Capabilities寄存器中可以查询MPS的大小。

第二个:Max Read Request Size,简称MRRS。MRRS代表最大读数据请求大小,对于MRRS选择,同样有6种:128B,256B,512B,1024B,2048B,4096B. 这个参数也是在Configuration阶段,写入到设备的control寄存器。MRRS可以比MPS大,比如MPS设置为256B,MRRS设置为4KB,通常MRRS大于等于MPS。

在MPS在PCIe整体性能中,有至关重要的作用。随着MPS大小的增加,PCIe传输效率也在不断的提升。不过,在x86的机器中,RC端的MPS通常是128B/256B。在ARM CPU中,为了追求高效性能,部分场景也会设置为512B。

在整个PCIe系统中,MPS的大小,跟RC、PCIe Switch、Endpoint都有相互的影响,最终TLP传输的数据大小取决与MPS最小的一个设备。比如下图示例,RC MPS=256B,PCIe Switch MPS=512B,但是EP3 MPS=128B。所以最终数据传输的大小采用的是MPS=128B。

除了MPS影响系统性能,还有一个更加重要的事情,MPS对系统稳定性也起着决定性的作用。最常见的是,在系统中我们会看到pcie设备出现识别异常的情况,多数情况会看到一个“ Malformed TLP”,比如linux系统中的报错信息:

[ +0.002792] pcieport 0000:00:01.0: AER: Uncorrected (Fatal) error received: id=0020
[ +0.007830] pcieport 0000:00:01.0: PCIe Bus Error: severity=Uncorrected (Fatal), type=Transaction Layer, id=0008(Receiver ID)
[ +0.011387] pcieport 0000:00:01.0: device [10de:10e5] error status/mask=00040000/00000000
[ +0.008415] pcieport 0000:00:01.0: [18] Malformed TLP (First)
[ +0.006851] pcieport 0000:00:01.0: TLP Header: 20000080 010001ff 00000000 80004430

在PCIe spec中的Error Status Register的定义如下图:

上面linux报错信息中的error status=0x00040000,也即对应Error Status Register中的bit18被置位。

Linux系统中通过lspci和setpci可以查询和修改MPS/MRRS参数。

比如:lspci查看设备DevCap寄存器中MPS=512B,最终传输用的MPS=256B,MRRS=4KB。

lspci -s 04:00.0 -vvv | grep DevCtl: -C 2
DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
MaxPayload 256 bytes, MaxReadReq 4096 bytes

如果需要修改MPS或者MRRS,需要先找到Device Control Register中MPS和MRRS的位置,如PCIe Spec定义,MPS在bit5-7,MRRS在bit12-14. 同时Device Control Register的offset是0x8h。

比如小编环境中,PCIe Capacity的位置在0x70. 结合Device Control Register的offset是0x8h,我们就可以整体看到MPS和MRRS修改的PCIe配置空间的位置是在0x78h。注意,这个不同的机器和pcie设备中,PCIe Capacity的位置可能有所不同,有些在0x70,也有在0x60的,这个在修改参数的数据一定要关注下自己机器的位置。

用setpci修改MRRS:下面修改的命令,预期结果:把Device Control Register中的bit12-bit14从原始的101b修改成了010b,也就是把MRRS从4KB修改成了512B。

# setpci -s 04:00.0 78.w

5936

#setpci -s 04:00.0 68.w=2936

这个时候在用lspci查看确认,发现MRRS已经修改成了512B。符合预期,说明修改MRRS修改成功了。MPS的修改方式也跟MRRS修改方式类似,这里就不赘述了。

# lspci -s 04:00.0 -vvv | grep MaxReadReq

MaxPayload 256 bytes, MaxReadReq512bytes

此外,在Windows如果需要修改pci配置空间信息,也可以在按照windows版本的pci工具,使用方式类似,这里就不展开了。感兴趣的同学可以自行尝试哈!

在linux内核中,MPS/MRRS这两个参数,同样会受到内核pcie_bus_config_types的影响。以linux 5.19内核源码为例,pcie_bus_config_types定义有5种:

  • PCIE_BUS_TUNE_OFF:不对MPS做任何操作
  • PCIE_BUS_DEFAULT:保证pcie设备可以满足upstream的要求。
  • PCIE_BUS_SAFE:将MPS设置为设备最大支持的值,这里也要参考水桶原理,最终采用最小MPS的EP设置。
  • PCIE_BUS_PERFORMANCE:将EP pcie设备的MPS设置为RC允许的最大值,同时MRRS也设置为最大值。
  • PCIE_BUS_PEER2PEER:相对比较简单,就是一个标准,把所有的RC/Pcie switch/EP的MPS都设置为128B,不偏不倚。

enum pcie_bus_config_types {
PCIE_BUS_TUNE_OFF, /* Don't touch MPS at all */
PCIE_BUS_DEFAULT, /* Ensure MPS matches upstream bridge */
PCIE_BUS_SAFE, /* Use largest MPS boot-time devices support */
PCIE_BUS_PERFORMANCE, /* Use MPS and MRRS for best performance */
PCIE_BUS_PEER2PEER, /* Set MPS = 128 for all devices */
};

在linux中通过pcie_bus_configure_settings执行配置。在性能调优过程中,一般会选择在linux启动命令行中添加命令行参数pci=PCIE_BUS_PERFORMANCE。如果没有配置的话,会选择默认设置PCIE_BUS_TUNE_OFF。

在调用pcie_bus_configure_set函数时,如果pcie_bus_config == PCIE_BUS_TUNE_OFF || pcie_bus_config == PCIE_BUS_DEFAULT,函数会直接返回return 0; 在其他模式下,会主动调用pcie_write_mps和pcie_write_mrrs修改MPS和MRRS。

通过pcie_write_mps函数修改MPS参数大小,这个函数只有在PCIE_BUS_PERFORMANCE模式下才会修改,其他模式就会直接使用默认MPS设置。

通过pcie_write_mrrs函数修改MRRS参数大小,这个函数只有在PCIE_BUS_PERFORMANCE模式下才会生效,其他模式就会直接return返回。

此外,还可以在驱动里面单独通过pcie_set_readrq 函数调整MRRS参数,以达到提升性能的目的。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
被新疆淘汰,郭士强摊牌发声,官宣决定,去向曝光,辽宁期待

被新疆淘汰,郭士强摊牌发声,官宣决定,去向曝光,辽宁期待

东球弟
2024-04-27 07:43:57
用小腿肌肉顶一罐可乐,格拉利什花式官宣自己成为百事代言人

用小腿肌肉顶一罐可乐,格拉利什花式官宣自己成为百事代言人

懂球帝
2024-04-26 20:40:15
悲情!"墨西哥吴镇宇",38岁奥乔亚十年内在法西意3支球队降级

悲情!"墨西哥吴镇宇",38岁奥乔亚十年内在法西意3支球队降级

直播吧
2024-04-27 07:49:21
广东卫健系统三任前一把手被查,一局长被点名“吃高档菜肴”

广东卫健系统三任前一把手被查,一局长被点名“吃高档菜肴”

澎湃新闻
2024-04-27 13:32:27
金靖回应不官宣结婚原因,大赞老公舒奕橙温柔,孩子代号首曝光

金靖回应不官宣结婚原因,大赞老公舒奕橙温柔,孩子代号首曝光

扒虾侃娱
2024-04-25 20:46:34
聊聊易建联移居美国

聊聊易建联移居美国

阿牛体育说
2024-04-26 17:09:26
无意间在网上看到了一张饭票,这也许可以反击很多人的观点!

无意间在网上看到了一张饭票,这也许可以反击很多人的观点!

翻开历史和现实
2024-04-17 08:53:37
准备打仗?好消息传来,中国五大军种有新变化,国防部捅破窗户纸

准备打仗?好消息传来,中国五大军种有新变化,国防部捅破窗户纸

朝晖前哨
2024-04-25 10:11:59
他弃医从政,曾担任上海副市长,现任湖南省委书记,百姓的父母官

他弃医从政,曾担任上海副市长,现任湖南省委书记,百姓的父母官

蹲马桶看历史
2024-04-27 17:26:27
有网友总结:在中国,想失业比考北大还要难,真正符合失业标准的少之又少!

有网友总结:在中国,想失业比考北大还要难,真正符合失业标准的少之又少!

可达鸭面面观
2024-04-26 18:55:09
布林肯:美国会在乌克兰局势背景下对中国采取新制裁

布林肯:美国会在乌克兰局势背景下对中国采取新制裁

周观环宇
2024-04-27 00:50:04
局部降温10℃!山东迎新一波冷空气!这些地区有雨,阵风7级

局部降温10℃!山东迎新一波冷空气!这些地区有雨,阵风7级

鲁中晨报
2024-04-27 18:37:05
当代第一阳谋!“借警寻妻”迎来终极反转,丈夫以身入局堪称一绝

当代第一阳谋!“借警寻妻”迎来终极反转,丈夫以身入局堪称一绝

金哥说新能源车
2024-04-27 17:22:05
65个国家都收到了“邀请函”,却唯独没有中国,中方正式表态

65个国家都收到了“邀请函”,却唯独没有中国,中方正式表态

慢聊的历史
2024-04-26 14:21:34
林彪的最后24小时:秘书李文普不愿当叛徒,中途跳车遭林立果枪击

林彪的最后24小时:秘书李文普不愿当叛徒,中途跳车遭林立果枪击

拙言问史
2024-04-25 17:15:21
脸都被打肿了!俄罗斯征兵官员说漏嘴:以目前兵力,我们无法应付

脸都被打肿了!俄罗斯征兵官员说漏嘴:以目前兵力,我们无法应付

娱宙观
2024-04-27 09:30:22
私人影院提供特色观影服务?我试图前往体验,却发现掉入桃色陷阱

私人影院提供特色观影服务?我试图前往体验,却发现掉入桃色陷阱

亲爱的落落
2024-04-15 10:57:58
就在刚刚,A股突发王炸消息,原来上涨只是开始,下周将惊天巨浪

就在刚刚,A股突发王炸消息,原来上涨只是开始,下周将惊天巨浪

彩云的夕阳
2024-04-27 18:57:12
震惊我!汪峰居然秃着后脑勺去看车展了!笑晕在网友的评论区里!

震惊我!汪峰居然秃着后脑勺去看车展了!笑晕在网友的评论区里!

小娱乐悠悠
2024-04-27 09:13:17
太会玩了!以收购为名狂拉11个涨停,接着宣布收购失败大割韭菜!

太会玩了!以收购为名狂拉11个涨停,接着宣布收购失败大割韭菜!

云姐闲聊
2024-04-27 08:42:52
2024-04-27 22:00:49
存储随笔
存储随笔
记录SSD相关知识与经验
114文章数 292关注度
往期回顾 全部

科技要闻

特斯拉这款车型刚上市几天,就上调价格

头条要闻

林生斌行程信息被公布引发官司 其曾宣布再婚生女被骂

头条要闻

林生斌行程信息被公布引发官司 其曾宣布再婚生女被骂

体育要闻

时代要落幕了?詹姆斯杜兰特陷0-3绝境

娱乐要闻

金靖回应不官宣恋情结婚的原因

财经要闻

北京房价回到2016年

汽车要闻

5月上市/智能化丰富 海狮 07EV正式到店

态度原创

本地
亲子
房产
游戏
公开课

本地新闻

蛋友碰碰会空降西安!5.1山海境等你!

亲子要闻

日本新幼儿园和之前不一样,作为家长更上心,想有个好印象

房产要闻

海南最新房价出炉,三亚跌价最猛!

梦幻西游劳动节活动电视刷屏,鉴定10把武器炸出不磨、无级别?

公开课

睡前进食会让你发胖吗?

无障碍浏览 进入关怀版