为什么联想 P620 在 M.2 驱动器上编译 MSVC 2013 C++ ARM 项目时速度很慢?

为什么联想 P620 在 M.2 驱动器上编译 MSVC 2013 C++ ARM 项目时速度很慢?

更新 [2021 年 1 月 20 日]:我报告了 PCIe SSD 性能下降 - 这是用户错误,我在下面发布了更正。我提出了一个关于如何验证编译器性能当我了解更多信息后,我会继续更新这篇文章。

我有一台 32GB RAM 的联想 P620,正在编译 Visual Studio 2013 项目,不明白为什么当项目位于 WDC SN730 M.2 驱动器上时编译速度很慢,而在 RAM 驱动器上编译代码的速度却快 2.3 倍。根据使用类似 AMD 5950X 系统的经验,我预计性能差异会小得多。在 RAM 驱动器上编译代码可获得预期的性能;但当项目位于 M.2 SSD 上时,编译性能太慢了。

这是使用 Visual Studio 2013 构建的 ARM 项目。Microsoft ARM 编译器实际上是 Visual Studio 2012 编译器,因为它是唯一支持为 WEC2013 操作系统编译 ARM 代码的 MS 编译器。

联想 P620 系统规格:

  • AMD Threadripper PRO 3955WX 处理器(3.9 GHz,最高加速至 4.3 GHz,32 线程)
  • 四个 3200 MHz RDIMM 中的 32 GB RAM,59 GBps 带宽
  • 512 GB WDC SN730 M.2 SSD
  • Windows 10 专业版
  • MS Visual Studio Ultimate 2013 v12,0.40629 更新 5,带有适用于 Windows Embedded Compact 2013 的应用程序生成器
  • 在办公域上运行
  • M.2 上的编译时间:150 秒(RAM 驱动器编译时间的 2.3 倍)
  • 2 GB RAM 驱动器上的编译时间:65 秒

比较 5950X 系统的规格:

  • AMD Ryzen 5950X 处理器(3.4 GHz,最高加速至 4.9 GHz,32 线程)
  • 四个 3600 MHz DIMM 中的 64 GB RAM,41 GBps 带宽
  • 960 GB 三星 960 Pro M.2 SSD
  • Windows 10 专业版
  • 不在办公室域上
  • MS Visual Studio Ultimate 2013 v12,0.40629 更新 5,带有适用于 Windows Embedded Compact 2013 的应用程序生成器
  • M.2 上的编译时间:90 秒(RAM 驱动器编译时间的 1.4 倍)
  • 在 2 GB RAM 驱动器上的编译时间:62 秒

在 RAM 磁盘上编译的性能类似,但在 M.2 SSD 而不是 RAM 驱动器上编译同一项目时,P620 所需的时间大约是 2.3 倍——比 5950X 系统在 M.2 SSD 上编译相同项目的时间长 1.6 倍!M.2 上的编译速度应该接近 RAM 驱动器速度,因为构建 C++ 项目受益于 OS 级驱动器缓存,而且这也是我在其他系统上一致看到的;花费 2.3 倍的时间似乎表明 Windows 驱动器缓存无效

为了找到性能问题的根源,我为 P620 添加了更多内存,禁用了防病毒软件,在启动后等待了 20 分钟才进行编译。我甚至用三星 980 Pro 替换了 M.2 驱动器,尽管 SiSoft Sandra 显示 980 Pro 的速度比 SN730 快 2 倍,达到 6.4 GBps,但性能几乎保持不变。

实际上,当禁用防病毒软件时,M.2 和 RAM 驱动器的性能都提高了约 7 秒。但是,在 M.2 上编译需要 144 秒,而 AMD 5950X 系统使用速度只有其一半的 SSD 只需 90 秒即可完成编译,这显然是错误的。

我在第三个系统上进行了测试,这是一台具有 12 个逻辑核心的 16 GB i7 笔记本电脑——在其 SSD 上编译耗时 189 秒。这个数字与 32 个逻辑核心 5950X 系统的 M.2 性能成正比,但仅比逻辑核心多 2.5 倍的 P620 慢 40 秒。我没有在笔记本电脑上试用 RAM 磁盘。

我可以检查什么来确定 P620 上 M.2 编译速度缓慢的原因吗?

更新:

  • 通过设备管理器验证 M.2 SSD 是否启用了写入缓存
  • 禁用项目文件夹的 Windows 文件索引 - 没有显著改善
  • 已删除随项目文件夹复制的临时文件(*.suo、*.sdf、*.user)(所以) - 没有不同
  • 在 M.2 上设置项目以在 RAM 驱动器上存储临时文件 (OBJ):编译时间为 155 秒
  • 在 RAM 驱动器上设置项目以将临时文件存储在 M.2 SSD 上:65 秒复制时间,表示 M.2 上的读取速度导致问题
  • 在 PCIe M.2 上运行了 Samsung Magician 基准测试和 SiSoft Sandra 基准测试;均表明预期带宽
  • 使用 ATTO 基准测试实用程序验证 SSD 性能与产品评论一致
    • 更新 [2021 年 1 月 20 日]:我之前报告过 PCIe Gen 4 驱动器的性能大幅下降。我使用了旧版 ATTO 基准测试实用程序。使用最新版本的 ATTO 基准测试实用程序进行基准测试显示的性能与驱动器产品评论中显示的性能相同。

相关内容