跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

抡锤者

  1. 主页
  2. AI硬件
  3. 【实测】X99 PCIe 4.0 是真是假?用实际带宽测试拆穿华强北黑魔法

【实测】X99 PCIe 4.0 是真是假?用实际带宽测试拆穿华强北黑魔法

已定时 已固定 已锁定 已移动 AI硬件
10 帖子 9 发布者 233 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • A 离线
    A 离线
    abaalei
    技术大牛 劳动模范
    编写于 最后由 编辑
    #1

    起因

    最近逛论坛看到有大佬论证 X99 支持 PCIe 4.0 ,说是华强北的板厂在 BIOS 里加了 PCIe 4.0 的选项,实际也能协商到 4.0。看着挺诱人的——毕竟 X99 板子便宜,Xeon E5 v3/v4 白菜价,要是真能跑 4.0,配上两张 RX 7900 XTX 跑 LLM 的 TP(张量并行),跨卡通信带宽直接翻倍,美滋滋。
    (原始贴现在因为论坛的搜索改版,已经找不回来了,大概意思就是该大佬通过几个命令,都能读出来协商的是16GB/s的带宽,然后推定x99支持pcie4.0)

    但冷静下来一想:X99 的 PCIe 控制器是集成在 CPU 里的,Haswell-E/Broadwell-E 的 IMC 和 PCIe root complex 都是 Intel 定死的规格,只到 PCIe 3.0。华强北再牛逼,能改 BIOS 设置,总不能重做 CPU 的硅片吧?

    于是决定不靠嘴炮,上机实测。

    测试平台

    项目 规格
    主板 6卡直插矿板 X99-6Plus
    CPU Intel Xeon E5-2682 v4(Broadwell-EP)
    被测 GPU RTX 3080 Ti(GA102,支持 PCIe 4.0)
    OS Ubuntu Linux
    测试工具 nvidia-smi / lspci / gpu-pcie-bench

    本来是打算测两张 7900 XTX 的,但它们在跑推理工作中,就不打扰了。拿 3080 Ti 测,结果是一样的——瓶颈在 CPU/主板侧,不在 GPU 侧。

    第一步:看协商状态

    nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.gen.max,pcie.link.width.current --format=csv
    

    结果:

    1, 3, 16
    
    • current = 1:空闲降到了 PCIe 1.0,正常省电行为
    • max = 3:最大只支持 PCIe 3.0 🔴
    • width = 16:通道数正常

    关键就是 max = 3——如果真解锁了 4.0,这里应该显示 4。

    再来看看 lspci:

    sudo lspci -s 02:00.0 -vvv | grep -E "LnkCap|LnkSta"
    
    LnkCap: Speed 8GT/s, Width x16
    LnkSta: Speed 2.5GT/s (downgraded), Width x16
    
    • LnkCap(能力):Speed 8GT/s = PCIe 3.0(Gen3 = 8GT/s,Gen4 = 16GT/s)
    • LnkSta(当前):Speed 2.5GT/s = 空闲降到了 Gen1
      (这里其实存在一个问题,之前看到贴子的时候,汇报是Speed 16GT/s,可能是指那2张7900xtx吧)

    到这里已经很明显了:硬件能力上就不支持 Gen4。

    第二步:实际跑带宽

    协商是一回事,实际能不能跑出那个速度是另一回事。上 gpu-pcie-bench(https://github.com/tpoechtrager/gpu-pcie-bench)做实际 PCIe 吞吐测试。

    # 安装
    git clone --depth=1 https://github.com/tpoechtrager/gpu-pcie-bench.git
    cd gpu-pcie-bench && make
    
    # 跑测试
    ./bin/x86_64/gpu-pcie-bench --device 0 --rounds 50 --direction both --unit gb
    

    实测结果:

    Buffer 大小 Host→Device(CPU→GPU) Device→Host(GPU→CPU)
    512 KB 9.30 GB/s 9.73 GB/s
    1 MB 10.03 GB/s 10.54 GB/s
    10 MB 11.33 GB/s 11.47 GB/s
    100 MB 9.05 GB/s 4.36 GB/s
    1 GB 8.99 GB/s 5.13 GB/s
    2 GB 8.98 GB/s 5.14 GB/s

    对比理论值:

    标准 理论单向带宽 实测典型值
    PCIe 3.0 x16 ~15.75 GB/s ~9-11.5 GB/s ✅ 符合预期
    PCIe 4.0 x16 ~31.5 GB/s ❌ 差得远
    PCIe 3.0 x8 ~7.88 GB/s 大 buffer D2H 接近这个值

    注意大 buffer 的 Device→Host 掉到 ~5 GB/s,这个是因为 Xeon E5-2682 v4 的 DDR4 内存带宽成了瓶颈——数据从 GPU 读回来要写进系统内存,老平台的内存控制器跟不上。这进一步说明:哪怕 GPU 再快,整个平台的 PCIe 子系统的天花板就在那里。

    结论:所谓的"魔改 PCIe 4.0"到底是什么?

    拆穿来看,无非是三件事:

    1. GPU 端是真支持 Gen4——RTX 3080 Ti 和 RX 7900 XTX 自身都支持 PCIe 4.0,会向上报 Capability
    2. 寨板焊了 Gen4 的 retimer/switch 芯片——为了兼容性,物理层芯片用支持 4.0 的
    3. BIOS 菜单直接从 GPU 的 Capability 里读选项显示出来——但实际 CPU-PCH 的链路仍然是 Gen3 握手

    一句话总结:

    插槽是 4.0 的皮,链路是 3.0 的芯。

    PCIe 协商是双向的——一方说 4.0 没用,双方都支持才是真 4.0。CPU 那端的 root complex 不支持,插宇宙最快的显卡也没用。

    对 X99 双卡跑 LLM 的启示

    如果你像我一样,想在 X99 上插两张卡跑 TP(张量并行),除了确认是 3.0 不是 4.0 之外,还要注意:

    • X99 的 CPU 只有 40 条 PCIe 通道
    • 两张 GPU 如果都插 x16 槽,实际可能是 x16 + x8(CPU 的 PCIe lane 分配限制)
    • 如果第二张卡是 x8,那 PCIe 3.0 x8 ≈ ~5-7 GB/s,TP 模式的通信会成为明显瓶颈
    • PP(流水线并行)比 TP 友好一些,但依然有影响

    当然,单卡推理完全没所谓——模型加载到显存后,PCIe 只做偶尔的数据传输,瓶颈在算力和显存带宽上。

    附:Windows 上怎么测?

    如果是在 Windows 下,推荐:

    工具 用法
    GPU-Z 打开 → 点问号旁边的「Render Test」按钮 → 看 Bus Interface 那行从 @ x16 1.1 升到 @ x16 3.0 就是 Gen3,升到 @ x16 4.0 才是真 Gen4
    AIDA64 Tools → GPGPU Benchmark,看 Host→Device / Device→Host 的带宽
    nvidia-smi Windows 版一样可以用:nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.gen.max,pcie.link.width.current --format=csv

    快速排查命令(Linux)

    # 1. 看 GPU 协商到的最大版本
    nvidia-smi --query-gpu=pcie.link.gen.max --format=csv
    
    # 2. 看 PCIe 设备能力(Gen3=8GT/s, Gen4=16GT/s)
    sudo lspci -s <GPU_BUS> -vvv | grep LnkCap
    
    # 3. 跑实际带宽(最靠谱)
    gpu-pcie-bench --device 0 --direction both --unit gb
    

    数据说话,别信 BIOS 菜单里的花活。

    c25acc51-c60a-416b-ad6e-d3600b89a880-image.jpeg

    J 1 条回复 最后回复
    7
    • M 离线
      M 离线
      mark
      超凡大师
      编写于 最后由 编辑
      #2

      你这也太牛了, 我linux 动手能力,没有你强.

      1 条回复 最后回复
      0
      • kos orK 离线
        kos orK 离线
        kos or
        劳动模范 德高望重
        编写于 最后由 编辑
        #3

        我剛好在猶豫購買PCIe 4.0 x 16 的 Riser adpater 延長線, 就怕商家吹牛 買到品質不好的 導致32GB/s 降速到16G/s 以下 😞

        1 条回复 最后回复
        0
        • ,Tony WangT Tony Wang 固定了此主题
        • John PanJ 离线
          John PanJ 离线
          John Pan
          编写于 最后由 编辑
          #4

          帅! 就喜欢这种数据党。

          1 条回复 最后回复
          0
          • ,Tony WangT Tony Wang 取消固定了此主题
          • ,Tony WangT Tony Wang 固定了此主题
          • williamlouisW 在线
            williamlouisW 在线
            williamlouis
            超级版主
            编写于 最后由 编辑
            #5

            赞。这对很多采购用户是非常重要的。

            个人主页:xlkj.org Telegram https://t.me/xlkjorg

            1 条回复 最后回复
            0
            • terryT 离线
              terryT 离线
              terry
              超级版主
              编写于 最后由 编辑
              #6

              非常有意义,真正要上PCIE 4的话,还是买AMD的7k系列CPU的寨板套装,贵了不少,但是性能也强悍。

              油管:https://www.youtube.com/@抡锤者

              1 条回复 最后回复
              0
              • mei liM 离线
                mei liM 离线
                mei li
                德高望重 劳动模范
                编写于 最后由 编辑
                #7

                soc的主控都不支持,主板怎么能支持。但是现在那些商家,V4的soc 用法d3的板子怎么搞的难道兼容向下吗,又没有人试过,问了ai 说主板做了兼容。

                445e2098-9080-418b-8585-83d808c2c3ea-image.jpeg

                1 条回复 最后回复
                0
                • sirwangS 离线
                  sirwangS 离线
                  sirwang
                  超级版主
                  编写于 最后由 编辑
                  #8

                  不用想那么多了。不可能让你拿旧机器来压着新机器涨价的。

                  1 条回复 最后回复
                  0
                  • williamlouisW 在线
                    williamlouisW 在线
                    williamlouis
                    超级版主
                    编写于 最后由 编辑
                    #9

                    应该没那做测试的 7900XTX 破。我那台就是 3.0的插槽。现在又扔去吃灰了。坐等7900XTX 涨价 。

                    个人主页:xlkj.org Telegram https://t.me/xlkjorg

                    1 条回复 最后回复
                    0
                    • ,系统 取消固定了此主题
                    • A abaalei

                      起因

                      最近逛论坛看到有大佬论证 X99 支持 PCIe 4.0 ,说是华强北的板厂在 BIOS 里加了 PCIe 4.0 的选项,实际也能协商到 4.0。看着挺诱人的——毕竟 X99 板子便宜,Xeon E5 v3/v4 白菜价,要是真能跑 4.0,配上两张 RX 7900 XTX 跑 LLM 的 TP(张量并行),跨卡通信带宽直接翻倍,美滋滋。
                      (原始贴现在因为论坛的搜索改版,已经找不回来了,大概意思就是该大佬通过几个命令,都能读出来协商的是16GB/s的带宽,然后推定x99支持pcie4.0)

                      但冷静下来一想:X99 的 PCIe 控制器是集成在 CPU 里的,Haswell-E/Broadwell-E 的 IMC 和 PCIe root complex 都是 Intel 定死的规格,只到 PCIe 3.0。华强北再牛逼,能改 BIOS 设置,总不能重做 CPU 的硅片吧?

                      于是决定不靠嘴炮,上机实测。

                      测试平台

                      项目 规格
                      主板 6卡直插矿板 X99-6Plus
                      CPU Intel Xeon E5-2682 v4(Broadwell-EP)
                      被测 GPU RTX 3080 Ti(GA102,支持 PCIe 4.0)
                      OS Ubuntu Linux
                      测试工具 nvidia-smi / lspci / gpu-pcie-bench

                      本来是打算测两张 7900 XTX 的,但它们在跑推理工作中,就不打扰了。拿 3080 Ti 测,结果是一样的——瓶颈在 CPU/主板侧,不在 GPU 侧。

                      第一步:看协商状态

                      nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.gen.max,pcie.link.width.current --format=csv
                      

                      结果:

                      1, 3, 16
                      
                      • current = 1:空闲降到了 PCIe 1.0,正常省电行为
                      • max = 3:最大只支持 PCIe 3.0 🔴
                      • width = 16:通道数正常

                      关键就是 max = 3——如果真解锁了 4.0,这里应该显示 4。

                      再来看看 lspci:

                      sudo lspci -s 02:00.0 -vvv | grep -E "LnkCap|LnkSta"
                      
                      LnkCap: Speed 8GT/s, Width x16
                      LnkSta: Speed 2.5GT/s (downgraded), Width x16
                      
                      • LnkCap(能力):Speed 8GT/s = PCIe 3.0(Gen3 = 8GT/s,Gen4 = 16GT/s)
                      • LnkSta(当前):Speed 2.5GT/s = 空闲降到了 Gen1
                        (这里其实存在一个问题,之前看到贴子的时候,汇报是Speed 16GT/s,可能是指那2张7900xtx吧)

                      到这里已经很明显了:硬件能力上就不支持 Gen4。

                      第二步:实际跑带宽

                      协商是一回事,实际能不能跑出那个速度是另一回事。上 gpu-pcie-bench(https://github.com/tpoechtrager/gpu-pcie-bench)做实际 PCIe 吞吐测试。

                      # 安装
                      git clone --depth=1 https://github.com/tpoechtrager/gpu-pcie-bench.git
                      cd gpu-pcie-bench && make
                      
                      # 跑测试
                      ./bin/x86_64/gpu-pcie-bench --device 0 --rounds 50 --direction both --unit gb
                      

                      实测结果:

                      Buffer 大小 Host→Device(CPU→GPU) Device→Host(GPU→CPU)
                      512 KB 9.30 GB/s 9.73 GB/s
                      1 MB 10.03 GB/s 10.54 GB/s
                      10 MB 11.33 GB/s 11.47 GB/s
                      100 MB 9.05 GB/s 4.36 GB/s
                      1 GB 8.99 GB/s 5.13 GB/s
                      2 GB 8.98 GB/s 5.14 GB/s

                      对比理论值:

                      标准 理论单向带宽 实测典型值
                      PCIe 3.0 x16 ~15.75 GB/s ~9-11.5 GB/s ✅ 符合预期
                      PCIe 4.0 x16 ~31.5 GB/s ❌ 差得远
                      PCIe 3.0 x8 ~7.88 GB/s 大 buffer D2H 接近这个值

                      注意大 buffer 的 Device→Host 掉到 ~5 GB/s,这个是因为 Xeon E5-2682 v4 的 DDR4 内存带宽成了瓶颈——数据从 GPU 读回来要写进系统内存,老平台的内存控制器跟不上。这进一步说明:哪怕 GPU 再快,整个平台的 PCIe 子系统的天花板就在那里。

                      结论:所谓的"魔改 PCIe 4.0"到底是什么?

                      拆穿来看,无非是三件事:

                      1. GPU 端是真支持 Gen4——RTX 3080 Ti 和 RX 7900 XTX 自身都支持 PCIe 4.0,会向上报 Capability
                      2. 寨板焊了 Gen4 的 retimer/switch 芯片——为了兼容性,物理层芯片用支持 4.0 的
                      3. BIOS 菜单直接从 GPU 的 Capability 里读选项显示出来——但实际 CPU-PCH 的链路仍然是 Gen3 握手

                      一句话总结:

                      插槽是 4.0 的皮,链路是 3.0 的芯。

                      PCIe 协商是双向的——一方说 4.0 没用,双方都支持才是真 4.0。CPU 那端的 root complex 不支持,插宇宙最快的显卡也没用。

                      对 X99 双卡跑 LLM 的启示

                      如果你像我一样,想在 X99 上插两张卡跑 TP(张量并行),除了确认是 3.0 不是 4.0 之外,还要注意:

                      • X99 的 CPU 只有 40 条 PCIe 通道
                      • 两张 GPU 如果都插 x16 槽,实际可能是 x16 + x8(CPU 的 PCIe lane 分配限制)
                      • 如果第二张卡是 x8,那 PCIe 3.0 x8 ≈ ~5-7 GB/s,TP 模式的通信会成为明显瓶颈
                      • PP(流水线并行)比 TP 友好一些,但依然有影响

                      当然,单卡推理完全没所谓——模型加载到显存后,PCIe 只做偶尔的数据传输,瓶颈在算力和显存带宽上。

                      附:Windows 上怎么测?

                      如果是在 Windows 下,推荐:

                      工具 用法
                      GPU-Z 打开 → 点问号旁边的「Render Test」按钮 → 看 Bus Interface 那行从 @ x16 1.1 升到 @ x16 3.0 就是 Gen3,升到 @ x16 4.0 才是真 Gen4
                      AIDA64 Tools → GPGPU Benchmark,看 Host→Device / Device→Host 的带宽
                      nvidia-smi Windows 版一样可以用:nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.gen.max,pcie.link.width.current --format=csv

                      快速排查命令(Linux)

                      # 1. 看 GPU 协商到的最大版本
                      nvidia-smi --query-gpu=pcie.link.gen.max --format=csv
                      
                      # 2. 看 PCIe 设备能力(Gen3=8GT/s, Gen4=16GT/s)
                      sudo lspci -s <GPU_BUS> -vvv | grep LnkCap
                      
                      # 3. 跑实际带宽(最靠谱)
                      gpu-pcie-bench --device 0 --direction both --unit gb
                      

                      数据说话,别信 BIOS 菜单里的花活。

                      c25acc51-c60a-416b-ad6e-d3600b89a880-image.jpeg

                      J 离线
                      J 离线
                      joker_chang
                      德高望重 劳动模范
                      编写于 最后由 编辑
                      #10

                      @abaalei 说:

                      当然,单卡推理完全没所谓——模型加载到显存后,PCIe 只做偶尔的数据传输,瓶颈在算力和显存带宽上。

                      看到这里我就放心,我的华南金牌X99-CD4的第1槽插了3090Ti(三风扇版本)后,第2槽位被挡住了,3060只能插在第3槽。

                      还好,我两张卡是分配跑不同的模型😄

                      1 条回复 最后回复
                      0

                      你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

                      厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

                      有了你的建议,这篇帖子会更精彩哦 💗

                      注册 登录
                      回复
                      • 在新帖中回复
                      登录后回复
                      • 从旧到新
                      • 从新到旧
                      • 最多赞同


                      • 登录

                      • 没有帐号? 注册

                      • 第一个帖子
                        最后一个帖子
                      0
                      • 版块
                      • 最新
                      • 标签
                      • 热门
                      • 用户
                      • 群组