动态增加/减少 CPU 速度

动态增加/减少 CPU 速度

我需要对我们正在使用的一项新长轮询技术进行一些压力测试。要了解其功能,我想在虚拟机上运行 2 个(或更多)测试。

首先,我想以 1 GHz 的 CPU 为例。第二个测试将使用 2 GHz。当我们知道 1 Ghz 和 2 Ghz 的限制(并发客户端数量)时,我们可以看到它在硬件上的扩展情况(它是否与 CPU 成线性关系等)。

是否可以快速/轻松地增加/减少虚拟机的 CPU 频率,而无需物理更改硬件?我认为这应该是可能的,因为许多 VPS 提供商允许其客户动态扩展其 VPS。

答案1

答案取决于你采用的虚拟化解决方案。典型的资源管理概念包括预留、限制和加权,其中限制可能就是您正在寻找的。

  • ESXi/vSphere、Xen 和 OpenVZ/Virtuozzo 支持虚拟 CPU。
  • VMWare Server/Workstation/Player 和 VirtualBox 不支持
  • KVM 只能控制“共享”或更改核心/CPU 的数量,这没什么用
  • Hyper-V 允许对物理 CPU 资源进行相对“百分比”限制,只要您的物理 CPU 数量和频率不变,这就可以正常工作
  • QEmu 是一个模拟器,而不是虚拟化解决方案,它提供了速度限制,但会产生大量代码二进制翻译的开销,因此可能不适合进行性能测试

答案2

在 ESXi 和 Virtualbox 中,您可以修改 CPU 的数量。因此,在某种程度上您可以做到这一点,但这并不是您想要的。有类似的东西,您可以 /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed通过仅编辑此文件来更改 CPU 频率的值,但我认为它不再是受支持的选项(它在我的 Fedora 16 上不受支持)

在 fedora repo 中有一个类似 cpufrequtils 的东西,其中包含几个实用程序,可用于在支持 CPU 频率缩放的硬件上控制内核提供的 cpufreq 接口。你可以试试。

相关内容