multithreading - 在 Google Cloud 上订阅不足时减少执行时间
问题描述
我有一个支持多线程的可执行文件,我正在尝试在 Google Cloud 上执行它。我保留了 8 个 VCPU,并且正在使用 8 个线程执行该作业。假设我的执行时间为 y。现在我保留了 16 个 VCPU,但我只使用 8 个线程执行作业,并且执行时间为 x。我注意到的是 x 几乎比 y 少 15-20%。当我保留更多 VCPU 但使用更少的线程时,为什么会获得这种性能优势?
任何帮助将不胜感激。谢谢。
解决方案
在 Google Cloud Platform 上,一个虚拟 CPU 的性能并不等于一个物理内核。更珍贵的是,一个虚拟 CPU == 1 个超线程 == 1/2 个物理内核。
使用超线程,一个物理内核在操作系统中表现为两个处理器,允许每个内核同时调度两个进程。
因此,当您使用 16 个 vCPU 时,意味着您有 16 个超线程和 8 个物理内核,而 8 个 vCPU 由 4 个物理内核支持并具有 8 个超线程。因此,这意味着您在使用 16 个 vCPU 时拥有比 8 个 vCPU 更多的处理能力,这也反映了您获得的性能优势。
StackOverflow、Blog和Google Group 讨论中的此文档是类似主题的好读物。
推荐阅读
- python - 负前瞻搜索文本中的整数
- javascript - 如何使用节点 js 将两个集合数据转换为 mongodb 中的一个输出
- c++ - 如何获得一个非空的可选项,其中的值是默认构造的?
- laravel - LARAVEL 附加或同步在服务器端无法正常工作
- c# - 如何比较每一列并单独显示差异
- flutter - JSON 中的字段可以有不同的名称,我可以用 Flutter 中的单个结构来表示它吗?
- r - 如何在R中修复样本函数的随机种子
- c++ - 多线程缓存未命中利用
- python - InvalidArgumentError:无法挤压 dim[1],预期维度为 1,得到 10 [[{{node metrics_14/acc/Squeeze}}]]
- python - Scipy 置信区间返回与手动计算不同的界限