提升虚拟机的并行效率

多 CPU,多核,多线程,并行计算……都是为了提高工作效率。怎样合理利用 CPU 资源?如何提升并行计算速度?下面我们就来简单谈一谈。

1. 要不要开启多线程?

所谓多线程就是让 CPU 的一个物理核当多个虚拟核来用。现在的 CPU 基本都具有多线程功能,对于并行计算,到底要不要开启多线程模式?我们直接用数据说话。

测试硬件为英特尔 Xeon(至强)E5-2680 v2 @ 2.80GHz,单个 CPU 有 10 核 20 线程,双 CPU 总共有 20 核 40 线程,内存为 32GB(DDR3 1333MHz)。

操作系统为 Windows 7 旗舰版 64 位 SP1,虚拟机为 VMware Workstation 12 Pro,虚拟系统为Ubuntu 16.04 LTS,虚拟机的核数共有 16 个,虚拟机的内存为 16GB。

首先,关闭多线程模式。虚拟机的处理器数量为2,每个处理器的核心数量为8,我们进行了400步的迭代运算,总时间为199秒,平均每次迭代需要0.50秒。

然后,开启多线程模式。虚拟机的处理器数量为2,每个处理器的核心数量为8,我们进行了400步的迭代运算,总时间为229秒,平均每次迭代需要0.57秒。

可见,在同样的并行数下,开启多线程模式,速度会下降15%左右。

既然多线程会导致计算速度下降,为什么英特尔还要在自家的CPU上采用多线程技术呢?因为在核数有限的情况下,多线程技术可以处理的更多并发任务,方便普通用户一边听歌一边打游戏一边浏览网页。但是,对于通过MPI技术调用多核进行并行计算的软件,多线程技术就不是那么实用了。

简单来说,日常应用可以开启多线程,并行计算最好关闭多线程。

2. 如何修改多线程模式?

一般来说,Bios都是默认开启多线程模型,如果需要关闭,可以在开机启动时,选择进入Bios设置界面,下面以惠普为例。

  1. 开机后按 ESC,进入 Startup Menu。
  2. 选择 Computer Setup (F10),进入 Bios 界面。
  3. 选择 Security 菜单下的 System Security。
  4. 设置 Virtualization Technology(VTx),选择 Disabled 关闭虚拟化技术。
  5. 选择 Advanced 菜单下的 Device Options。
  6. 设置 Hyper-Threading,选择 Disabled 关闭多线程。
  7. 选择 File 菜单下的 Save Changes and Exit,选择 Yes 保存设置。