我有一个支持多线程的可执行文件,我正试图在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个超线程。因此,对于8 vCPU使用16个vCPU,这意味着您有更多的处理能力,这也反映了您获得的性能优势。
StackOverflow,Blog和Google Group discussions中的这个文档很好地阅读了类似的主题。