google-cloud-platform - 谷歌计算引擎提高单线程性能
问题描述
我有一个受 cpu 限制的单线程进程。顶部显示负载大于一。在考虑成本的情况下增加 CPU 吞吐量的最佳方法是什么?我看到您可以同时提高 cpu 速度和 cpu 核心。例如,看起来我可以在下拉中使用 4 或 8 个 CPU 来获得边际速度提升。但是,这意味着在我的情况下,我要为不需要的核心付费。
我看到还有另一个选择 cpu 平台类型的选项。这似乎是对不同网桥架构的选择。这意味着我可以更快地访问内存,并且可能(我不知道)更快的 cpu 处理管道。
我不确定哪个是最好的选择,我不想调整比我的成本增加一倍以上的设置。
任何建议表示赞赏。
解决方案
这不是一个成熟的科学测试。我只是从头到尾运行了一些代码,并以编程方式记录了挂墙时间。在更换 cpu 平台之间,我在重启后稍等片刻,让事情安定下来。我没有等待相同的指定时间或直到顶部显示某些指定的负载水平。用于测试的代码是带有一些 BigQuery 访问权限的 python 3、pandas 和 numpy。基本上它的代码我有兴趣为开发目的更快地运行。一些配置运行不止一次。话虽如此,这是我的结果:
CPU 平台选择(每次运行的秒数)
- 自动 141.42、124.96、123.58
- 英特尔 Skylake 128.32、107.88、107.93
- 英特尔 Broadwell 115.06、116.02
- 英特尔 Haswell 135.31
- 自动与 GPU NVidia Tesla P100 92.62, 91.87
我最后做了 GPU 测试,我认为它不会改善结果。这段代码不使用 tensorflow,据我所知,pandas 也不使用 GPU 库,因此使用 GPU 的性能提升是出乎意料的。
我对这个项目没有完整的计费可见性,因此我无法记录平台之间的任何成本差异。我想一个好的测试是看看你是否可以观察到不同测试运行的计费变化。
推荐阅读
- python - 将 csvfile 传输到字典
- javascript - React Admin 的 useUpdateMany 钩子制作空放
- python - 如何在 Python/Django 中过滤图表(Chart.js)中的日期?
- keras - 文件扩展名 .h5 .hdf5 和 .ckpt 有什么区别,我应该使用哪一个?
- pandas - 对堆叠框架的值进行排序
- laravel - laravel 可以包含路由而不是刀片吗?
- flutter - 如何在颤动中制作自定义按钮形状
- android - Android 改造 API ID
- html - 如何使用 jquery 通过数组从下拉列表中仅获取两个选项?
- webview - 如何在 Webview 中实现我的 Twilio-VideoCall 编程?