Lin*_*eak 49 performance cpu virtual-machine virtualbox hyperthreading
由于我有一个支持超线程的CPU,我想知道分配比物理 CPU 内核数量更多的虚拟 CPU 内核是不是一个坏主意,如下警告所示:
成绩单:
分配给虚拟机的虚拟 CPU 数量多于主机系统上的物理 CPU 数量。这可能会降低虚拟机的性能。请考虑减少虚拟 CPU 的数量。
有人可以对这个话题进行推理吗?
编辑1:
有问题的 CPU 是 Intel Core i7-4700HQ, Ark Intel , CPU Benchmark
编辑2:
假设没有过时的硬件,例如 HDD(而不是 SSD)和/或低 RAM(此处vm.swappiness
为16GB,此 VM最低为 4GB)等。
Lin*_*eak 39
主机:Linux Mint 18 Cinnamon 64 位(完全更新);内核版本 4.4.0-47-generic
来宾:Windows 8.1 Pro 64 位(完全更新)
处理器:Intel Core i7-4700HQ,(6MB 缓存,4 个物理内核,或 8 个使用超线程),CPU Benchmark
VirtualBox:版本 5.1.10 r112026 (Qt5.5.1)
来宾添加:已安装且是最新的
基准工具 #1:WinRAR 5.40 最终版 64 位
基准工具 #2:VeraCrypt 1.19 最终版 64 位
在这两种情况下,我都在启动后等待,直到 CPU、RAM、磁盘驱动器稳定在零点附近。
4核 => 7.5分钟(时间越短越好)
启用4 个内核的WinRAR,在7.5分钟内处理了 1.5GiB 。
8核 => 4.5分钟(时间越短越好)
启用了8 个内核的WinRAR,在4.5分钟内处理了 1.5GiB 。
4核 => 速度2.6 GiB/s(速度越高越好)
VeraCrypt启用4 个内核,硬件加速 AES (AES-NI)速度为2.6 GiB/s。
8核 => 速度3.9 GiB/s(速度越高越好)
VeraCrypt启用8核,硬件加速 AES (AES-NI)速度为3.9 GiB/s。
我可以根据需要运行尽可能多的测试。但我想,如果这两个,其中一个是相当复杂的压缩测试,第二个是一组相当复杂的加密测试,那有什么意义。
两个基准都显示出显着差异。我没有理由相信他们的结果是不准确的,因为我遵循了相当严格的准备和方法,而且这些测试是在 RAM 中进行的,以排除 I/O 瓶颈。从我的角度来看,问题中提到的警告可能适用于某些情况,但肯定不是所有情况。与您分享了这些非常显着的结果后,我相信您会同意我的观点,对于具有最新 VirtualBox 版本的超线程的现代 CPU,可能不应该如此认真地对待这个警告。可以肯定的一件事是:在您决定永久应用此设置之前,请不要相信我并在您自己的条件下对其进行测试。
主机 + 访客:Linux Mint 19.2 "Tina" - Cinnamon(64 位);都带有内核:5.3.0-24-generic
.
处理器:英特尔® 酷睿™ i7-7700HQ;6 MB 缓存,最高 3.80 GHz,4 个物理内核,或 8 个使用超线程,CPU 基准比较
VirtualBox:版本 6.1.0 r135406 (Qt5.9.5)
来宾添加:已安装且是最新的
基准工具:VeraCrypt 1.24 版 Hotfix1 64 位最终版(网页,直接 deb 下载链接)
与之前的基准测试相同。
? 速度 4.8 GiB/s (速度越高越好)
? 速度 7.2 GiB/s (速度越高越好)
启用超线程后,性能提高了 50% ,但遗憾的是,只有使用 AES,我将不得不进行一些更全面的测试。将在几天内返回结果。
Ber*_*hof 26
作为操作系统设计师,我完全同意测量结果。其他地方关于这个主题的废话数量令人难以置信。
将逻辑核心数视为可由硬件执行的并行线程/进程数。这是通过复制例如 CPU 内核的寄存器和指令指针来实现的。CPU 内核本身现在决定使用哪个线程(指令指针)。它将决定使用另一个线程,因为当前线程的指令在缓存中不可用,需要从例如内存或 L3 缓存中获取。这种机制将在指令/秒或 CPU 性能方面创造 10%-30% 的潜在改进。
如果您使用一个线程运行单个应用程序,您将无法获得这种好处,但是如果您在例如旧的 HT Pentium 上运行两个高负载应用程序,您将能够获得好处。当然,对于具有多个线程的应用程序也是如此。我的 Linux 系统有 200 个线程,所以总是存在一些依赖于实际负载的好处。所有这些评论都适用于没有虚拟化。
Virtualbox 仅限制每个虚拟机 (VM) 可以并行运行的线程数,但主机进程调度程序将更改逻辑处理器,从而更改物理处理器,VM 进程在其上动态运行。如果您在 VM 上运行高负载应用程序,额外的逻辑内核将为您带来 10%-30% 的相同收益。负载可以是单个多线程应用程序或一组不同的应用程序。
在使用 VT-x 或 AMD-V 的现代系统上,最大化逻辑内核数量不会造成性能损失,因为同时运行更多虚拟机也不会造成明显的性能损失。你的限制是你的 CPU 芯片的性能,所以你不能同时在 3 个虚拟机上渲染视频而不减慢每个虚拟机的速度,因为它们必须共享相同的物理 CPU。
如果您在具有所有逻辑核心的 VM 上渲染视频,您的主机系统可能会变得无响应,但如果您确实在主机上运行该渲染应用程序,则会遇到几乎相同的问题。至少在 VM 中,您有一个选择,您可以通过将最大 CPU 负载限制为 80%-90% 或因此减少内核数量来解决它。
归档时间: |
|
查看次数: |
62839 次 |
最近记录: |