0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCIe配置优化:提升系统性能的关键步骤

Linux阅码场 来源:Linux阅码场 2024-04-09 09:46 次阅读

理解PCIe配置对性能的影响

PCIe用途

当PCIe 应用于网卡和主机间通信时,网络适配器需要与 CPU 和内存(以及其他模块)进行通信。这意味着为了处理网络流量,应该对通过 PCIe 进行通信的不同设备进行良好配置。将网络适配器连接到 PCIe 时,它会自动协商网络适配器和 CPU 之间支持的最大功能。

PCIe 属性

任何 PCI 设备都加载了某些属性。其中一些属性对性能至关重要。设备的 PCIe 属性是通过系统和设备能力之间的协商来设置的。这导致两者都可以支持被选择的最高值。下面,您可以找到相关 PCIe 属性的说明、如何验证它们以及它们对性能的影响。

PCIe 宽度

PCIe 宽度决定了设备可并行用于通信的 PCIe 通道数。宽度标记为 xA,其中 A 是通道数(例如,x8 表示 8 通道)。具体支持多少通道取决于厂商的设备和它们的型号。为了验证 PCIe 宽度,可以使用命令 lspci。

在本例中,我们在 PCI 04.00.0 地址上安装了 Mellanox 适配器。

# lspci -s 04:00.0 -vvv | grep Width
LnkCap: Port #0, Speed 8GT/s, Width x8, ASPM not supported, Exit Latency L0s unlimited, L1 unlimited
LnkSta: Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-

如您所见,PCIe 报告了已通信的设备功能(在 LnkCap 下),以及它们的当前状态(在 LnkSta 下),这是实际的 PCIe 设备属性。

PCIe 速度

确定可能的 PCIe 事务数。速度以 GT/s 为单位,代表“每秒十亿次交易”。与 PCIe 宽度一起确定了最大 PCIe 带宽(速度 * 宽度)。为了验证 PCIe 速度,可以使用命令 lspci。

# lspci -s 04:00.0 -vvv | grep Speed
LnkCap: Port #0, Speed 8GT/s, Width x8, ASPM not supported, Exit Latency L0s unlimited, L1 unlimited
LnkSta: Speed 8GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt

与宽度参数类似,设备能力和状态都会被报告。

PCIe 速度被标识为“代”,其中 2.5GT/s 称为“gen1”,5GT/s 称为“gen2”,8GT/s 称为“gen3”,16GT/s 称为“gen4”.

注意:除了支持的速度之外,各代之间的主要区别在于数据包的编码开销。对于第 1 代和第 2 代,在 PCIe 上发送的每个数据包都有 20% 的 PCIe 标头开销。这在第 3 代中得到了改进,其中开销减少到 1.5% (2/130)。有关更多详细信息,请参阅下面的实际 PCIe 带宽计算。

66e2835a-f610-11ee-a297-92fbcf53809c.png

PCIe Max Payload Size

PCIe Max Payload Size 确定 PCIe 数据包或 PCIe MTU 的最大大小(类似于网络协议)。这意味着较大的 PCIe 事务被分解为 PCIe MTU 大小的数据包。此参数仅由系统设置,取决于芯片组架构(例如 x86_64、Power8、ARM 等)。您可以使用命令 lspci(在 DevCtl 下指定)查看 PCIe Max Payload Size。

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

PCIe Max Read Request

PCIe Max Read Request 确定允许的最大 PCIe 读取请求。由于必须为传入响应准备缓冲区,PCIe 设备通常会跟踪待处理的读取请求的数量。PCIe 最大读取请求的大小可能会影响待处理请求的数量(当使用大于 PCIe MTU 的数据获取时)。同样,使用命令 lspci 来查询 Max Read Request 值。

# lspci -s 04:00.0 -vvv | grep MaxReadReq
MaxPayload 256 bytes, MaxReadReq 4096 bytes

与此处讨论的其他参数相反,可以在运行时使用命令 setpci 更改 PCIe Max Read Request:首先,查询该值以避免覆盖其他属性:

# setpci -s 04:00.0 68.w
5936

第一个数字是 PCIe Max Read Request。设置选Max Read Request:

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

该值应使用命令 lspci 更新:

# lspci -s 04:00.0 -vvv | grep MaxReadReq
MaxPayload 256 bytes, MaxReadReq 512 bytes

可接受的值为:0 -128B、1 - 256B、2 - 512B、3 - 1024B、4 - 2048B 和 5 - 4096B。

计算 PCIe 带宽限制

如前所述,PCIe 功能可能会影响网络适配器的性能。最好了解 PCIe 引入的带宽限制。下面是理论计算和几个例子。

最大可能的 PCIe 带宽是通过乘以 PCIe 宽度和速度来计算的。从这个数字中,我们减少了大约 1Gb/s 的纠错协议和 PCIe 标头开销。开销由 PCIe 编码(有关详细信息,请参阅 PCIe 速度)和 PCIe MTU 确定:

最大 PCIe 带宽 = 速度 * 宽度 * (1 - 编码) - 1Gb/s。

例如,具有 x8 宽度的第 3 代 PCIe 设备将被限制为:
最大 PCIe 带宽 = 8G * 8 * (1 - 2/130) - 1G = 64G * 0.985 - 1G = ~62Gb/s。

另一个示例 - 具有 x16 宽度的第 2 代 PCIe 设备将被限制为:
最大 PCIe 带宽 = 5G * 16 * (1 - 1/5) - 1G = 80G * 0.8 - 1G = ~63Gb/s。

注意:PCIe 事务包括网络数据包有效负载和标头,因此在计算网络流量的 PCIe 限制时需要考虑它们。

PCIe Max Read Request 和 Max Payload Size 可能会由于 PCIe 整体增加和相同负载的待处理事务而导致事务速率限制。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211132
  • 内存
    +关注

    关注

    8

    文章

    2998

    浏览量

    73881
  • PCIe
    +关注

    关注

    15

    文章

    1217

    浏览量

    82436
  • 网络适配器
    +关注

    关注

    0

    文章

    41

    浏览量

    11539

原文标题:性能调优之PCIe配置

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    最新可用隔离元件的性能提升如何帮助替代架构在不影响安全性的前提下提升系统性能

    本文探讨了系统架构选择对电源和控制电路设计以及系统性能的影响。本文还将说明最新可用隔离元件的性能提升如何帮助替代架构在不影响安全性的前提下提升
    的头像 发表于 10-13 06:12 7820次阅读
    最新可用隔离元件的<b class='flag-5'>性能</b><b class='flag-5'>提升</b>如何帮助替代架构在不影响安全性的前提下<b class='flag-5'>提升</b><b class='flag-5'>系统性能</b>

    FPGA的PCIE接口应用需要注意哪些问题

    ,并进行了充分的测试和优化。 主机系统性能 : 主机系统的处理能力和总线架构也会对PCIe设备的性能产生影响,特别是在多设备共享总线资源时
    发表于 05-27 16:17

    PCB制作关键步骤说明书

    PCB制作关键步骤说明书.
    发表于 11-10 19:06

    RNN算法的三个关键步骤

    DL之RNN:RNN算法相关论文、相关思路、关键步骤、配图集合+TF代码定义
    发表于 12-28 14:20

    优化BIOS设置提高系统性能

    BIOS设置对系统性能的影响非常大,优化的BIOS设置,可大大提高PC整体性能,不恰当的设置会导致系统性能下降,运行不稳定,甚至出现死机等现象。下面就BIOS中影响
    发表于 10-10 14:27 43次下载

    布线测试中的几个关键步骤

    布线测试中的几个关键步骤 步骤1: 通断测试是基础   通断测试是测试的基础,是对线路施工的一种最基
    发表于 04-14 11:46 535次阅读

    配置控制器局域网络(CAN)位时序,优化系统性能

    配置控制器局域网络(CAN)位时序,优化系统性能
    发表于 01-07 16:18 0次下载

    企业提升IoT安全性的七个关键步骤

     以下是企业提升IoT安全性以防止数据泄露的七个关键步骤
    的头像 发表于 10-16 09:58 2104次阅读

    设计 NCL30088 控制的 LED 驱动器的 4 个关键步骤

    设计 NCL30088 控制的 LED 驱动器的 4 个关键步骤
    发表于 11-14 21:08 0次下载
    设计 NCL30088 控制的 LED 驱动器的 4 个<b class='flag-5'>关键步骤</b>

    关于工业物联网的3个关键步骤

    可以通过以下三个关键步骤使工业物联网的采用更容易:数据结构、连接性、人机界面 生态系统
    发表于 11-23 09:36 414次阅读

    焊接贴片电阻的关键步骤

    贴片电阻是一种常见的电子元件,用于电路板的焊接。焊接贴片电阻需要注意一些关键步骤和技巧,以确保焊接质量和电路的稳定性。
    的头像 发表于 08-19 10:52 1377次阅读

    邪恶PLC攻击技术的关键步骤

    今天我们来聊一聊PLC武器化探秘:邪恶PLC攻击技术的六个关键步骤详解。
    的头像 发表于 01-23 11:20 1016次阅读
    邪恶PLC攻击技术的<b class='flag-5'>关键步骤</b>

    音视频解码器优化技巧:提升播放体验的关键步骤

    播放效果呢?以下是几个关键步骤。 1. 选择合适的解码器 不同的解码器在处理不同类型和格式的音视频文件时,性能可能会有所不同。因此,选择适合您需求的解码器至关重要。对于大多数常见的音视频格式,像FFmpeg这样的开源解
    的头像 发表于 02-21 14:45 748次阅读

    MES系统实施的几大关键步骤

    MES系统实施的几大关键步骤--万界星空科技MES/低代码MES/开源MES  在制造业中,MES管理系统成为了提升生产效率、优化资源
    的头像 发表于 03-08 11:38 712次阅读

    在主板上优化PCIe通道设置

    在主板上优化PCIe通道设置是提升系统性能的重要步骤,以下是具体的优化建议: 一、了解主板和
    的头像 发表于 11-06 09:30 644次阅读