如何模拟低CPU处理器的计算机进行浏览器测试

17

我们有一些用户使用低CPU功率的计算机,在使用我们的Web应用程序时遇到响应时间缓慢的问题。有没有办法让我进行测试,以便我可以模拟较低的CPU速率?

例如,我有2.3 GHz的计算能力,我能将它降至1.6 GHz或更低,以便我能够测试吗?

顺便说一下,我们的客户正在使用Windows。 我必须在Internet Explorer上模拟低计算能力。

10个回答

7
大多数新的CPU倍频可以轻松降低(Intel:Speedstep,AMD:PowerNow!)以节省电力。使用RMclock,您可以手动调整倍频,从而降低频率并使您的计算机变慢。我自己使用此工具,所以我可以告诉您它有效。详情请参考:http://cpu.rightmark.org/products/rmclock.shtml

6
虚拟机Bochs(发音为boxes)允许您设置每秒指令数的指令。但它可能是目前最慢的仿真器...

3

5
这些虚拟计算机可以进行CPU限制吗?VMware似乎无法实现。 - Toad
根据这篇文章(http://www.mail-archive.com/vbox-users@virtualbox.org/msg06567.html),连VirtualBox也不行。但使用VMWare ESX是可行的。 - Daniel Vassallo
2
丹尼尔:哈哈,这使得这个回答成为了一个高赞的回答,但事实上是不正确的。 - Toad
同样的问题,我也不知道如何将虚拟机设置为只使用这么多CPU。据我所知,您可以设置虚拟机使用的CPU数量。 - grassbl8d
3
我相信QEMU可以做到,因为它可以模拟任意构架。我认为你只需要指定与你的客户使用的芯片相同的芯片即可。在此模式下运行时,你不能使用KVM,这可能会导致速度较慢。 - rmeador
显示剩余3条评论

2
我建议您在后台运行一个占用所有处理器周期的程序。可以选择一个查找质数或类似任务的程序。请注意,保留HTML标记。

5
或者做一些真正需要大量处理器资源的事情,比如启动Outlook ;^) - Toad
4
“我不是在玩游戏,我正在测试!” pew pew pew。 - Jon Seigel
如果我们考虑环境影响,那是一个可怕的建议。 - JustGoscha

2

除了以上提到的选项之外,另一个轻微的选择是在较低的资源配置下启动Windows。转到开始菜单,选择运行并输入MSCONFIG。您可以转到引导选项卡,单击高级选项并限制内存和进程数。它不像上面那样强大,但它确实为您提供了另一种选择。


2
降低CPU时钟并不总是会产生预期的结果。
新一代的CPU具有架构改进,使它们在相同时钟频率下比旧芯片更加高效。顺便提一下,由于这个原因,虚拟机也不是测试“旧”技术性能的好方法。
你最好的选择是购买几台旧机器。使用类似的RAM(类型和数量)、处理器、主板芯片组、硬盘和显卡。所有这些都影响机器的总体性能。
我提到其他组件是因为仅更改其中一个组件甚至可能对浏览器性能产生影响。一个典型的例子是内存。如果你的客户被限制在512MB的RAM上,即使只运行浏览器,机器也可能需要大量的硬盘访问进行VM交换。在这种情况下,即使其他条件相同,降低处理器的时钟速度而仍然保留2GB的RAM(假设)也无法达到相同的性能水平。

2
Isak Savo的答案是可行的,但有点棘手,因为现代tpl会尽可能地限制cpu负载。当我测试时,很难(虽然通过一些测试可以)始终获得我想要的cpu使用率类型。然后我想起了http://www.cpukiller.com/,它已经实现了这个功能。强烈推荐。顺便说一下,我从在现代计算机上玩旧的90年代游戏中发现了这个工具,当时帧速率被固定到cpu时钟时间,使得在现代计算机上玩它们太快了。很棒的实用工具。

1

高性能和低性能CPU之间的另一个重大区别是可用核心数。这个差异实际上可以达到4倍以上,远远超过您可能遇到的时钟频率差异。

您可以通过设置线程亲和力来解决这个问题。即使是IE6也会使用13个线程来显示google.com。这意味着它将从多核CPU中受益。但是,如果您将线程亲和力设置为仅一个核心,则所有13个IE线程都必须共享该一个核心。


1

我知道这个问题很老了,但以下是我个人使用的一些收据(不仅针对Web开发):

  1. BES。在使用它时,我会得到一些奇怪的结果。

  2. 转到控制面板\所有控制面板项\电源选项\编辑计划设置\更改高级电源设置,然后进入“处理器”部分,并将其最大状态设置为5%(或其他数字)。它只在处理器支持动态倍频变化并且ACPI驱动程序正确安装时才有效。

  3. 运行任务管理器,并将处理器亲和力设置为单个核心(或任何您想要的核心数量),用于浏览器(或任何其他)进程。这不是浏览器的最佳实践,因为JavaScript实现通常是单线程的,但就我所看到的,现代浏览器确实使用多个核心。


0

有几种不同的方法可以实现这个目标。

如果你正在使用VirtualBox,进入要降低CPU速度的虚拟机的设置。转到"系统" > "处理器",然后设置执行上限。百分比控制着速度的降低程度:较低的值相对于常规速度来说更慢。在实践中,我注意到结果可能会不稳定,尽管从技术上讲它是有效的。

Setting the Execution Cap in VirtualBox.

也可以设置整个系统的CPU速度。在Windows 10设置应用程序中,转到“系统”>“电源和睡眠”。然后在右侧点击“其他电源选项”。前往更改当前选定计划的计划设置,然后单击“更改高级电源计划设置”。向下滚动到“处理器功率管理”并设置“最大处理器状态”。同样,这是一个百分比。虽然这确实起作用,但我发现在实践中,即使将百分比设置得非常低,它也没有太大的影响。

Setting the Maximum Processor State.

如果你在处理一个使用DirectX或OpenGL且没有帧率限制的视频游戏,另一种常见方法是在你的图形驱动程序设置中强制开启垂直同步。这通常会将渲染速度降至约60 FPS,这可能足以以合理的速度进行游戏。但是,它仅适用于使用3D硬件渲染的应用程序。

最后:如果您不想使用虚拟机,并且不想更改系统全局设置,而是只想为一个特定进程模拟旧CPU,则我有自己的程序叫做Old CPU Simulator。

操作的主要部分是用C++编写的命令行工具,但也有用C#编写的GUI包装器。GUI需要.NET Framework 4.0。在大多数情况下,默认设置应该是可以的 - 只需在目标速率下选择您想要模拟的CPU,然后点击“New”并浏览要运行的程序。

https://github.com/tomysshadow/OldCPUSimulator(单击右侧的“Releases”选项卡获取二进制文件。)

The Old CPU Simulator GUI.

这个概念是以精确的速率暂停和恢复进程,由于它发生得如此之快,进程将看起来只是在缓慢运行。例如,通过暂停一个进程3毫秒,然后恢复1毫秒,它将看起来以25%的速度运行。通过控制暂停时间与恢复时间的比率,可以模拟不同的速度。这完全与API无关(它不钩住DirectX、OpenGL等,如果需要,它可以与命令行程序一起使用)。

旧CPU模拟器不要求百分比,而是要求模拟的时钟速度(它称之为目标速率)。然后根据您的CPU实际时钟速度自动确定要使用的百分比。虽然时钟速度不是唯一改善计算机性能的因素(还有SSD、更快的GPU、更多的RAM、多线程性能等),但它足以近似地在给定相同目标速率的情况下在不同机器上获得相当一致的结果。它还支持其他可能有助于保持一致性的选项,例如将进程亲和力设置为一个。

它实现了三种不同的挂起和恢复进程的方法,并将使用最佳可用方法:NtSuspendProcess、NtQuerySystemInformation或Toolhelp Snapshots。它还使用timeBeginPeriod和timeEndPeriod来实现高精度定时而无需繁忙循环。请注意,这不是模拟器;二进制文件仍然以本地方式运行。如果您愿意,可以查看源代码以了解其实现方式-这不是一个大型项目。在我的机器上,旧CPU模拟器使用少于1%的CPU和少于1 MB的内存,因此程序本身非常高效(与运行密集程序以有意减慢CPU的情况不同)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接