提升虚拟机的并行效率
多 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设置界面,下面以惠普为例。
- 开机后按 ESC,进入 Startup Menu。

- 选择 Computer Setup (F10),进入 Bios 界面。

- 选择 Security 菜单下的 System Security。

- 设置 Virtualization Technology(VTx),选择 Disabled 关闭虚拟化技术。

- 选择 Advanced 菜单下的 Device Options。

- 设置 Hyper-Threading,选择 Disabled 关闭多线程。

- 选择 File 菜单下的 Save Changes and Exit,选择 Yes 保存设置。
