Google Compute Engine 提高单线程性能

net*_*ink 3 google-compute-engine google-cloud-platform

我有一个受CPU限制的单线程进程。顶部显示负载大于一。考虑到成本,提高 CPU 吞吐量的最佳方法是什么?我发现你可以同时提高CPU速度和CPU核心。例如,看起来我可以在下拉中使用 4 或 8 个 cpu,以获得边际速度提升。然而,就我而言,这意味着我要为我不需要的核心付费。

我看到还有另一个选择 cpu 平台类型的选项。这似乎是对不同桥梁架构的选择。这意味着我可以更快地访问内存,并且可能(我不知道)更快的 CPU 处理管道。

我不确定哪个是最佳选择,并且我不想调整使我的成本增加一倍以上的设置。

任何建议表示赞赏。

net*_*ink 5

这不是一次全面的科学测试。我只是从头到尾运行一些代码并以编程方式记录挂钟时间。在更换CPU平台之间,我在重新启动后等待了一会儿,让事情安定下来。我没有等待相同的指定时间或直到顶部显示某些指定的负载级别。用于测试的代码是 python 3,具有一些 BigQuery 访问权限、pandas 和 numpy。基本上它的代码我感兴趣的是为了开发目的而更快地运行。某些配置运行了多次。话虽如此,这是我的结果:

CPU 平台选择(每次运行秒数)

  • 自动 141.42、124.96、123.58
  • 英特尔 Skylake 128.32、107.88、107.93
  • 英特尔布罗德韦尔 115.06、116.02
  • 英特尔哈斯韦尔 135.31
  • 自动,带 GPU NVidia Tesla P100 92.62、91.87

我最后进行了 GPU 测试,我认为这不会改善结果。这段代码不使用tensorflow,而且据我所知pandas也不使用GPU库,因此使用GPU的性能提升是出乎意料的。

我对该项目没有完整的计费可见性,因此无法记录平​​台之间的任何成本差异。我想一个好的测试是看看您是否可以观察到不同测试运行的计费变化。