2011-07-09 42 views
0

我试图设计,然后写一个Java程序,可以增加/减少CPU使用率。这是我的基本想法:编写一个多线程程序。并且每个线程都进行浮点计算。通过添加/减少线程增加/减少CPU使用率。设计测试方案:增加/减少CPU使用率

我不知道什么样的浮点运算是最好的这个测试用例。特别是,我将测试VMWare虚拟机。

+0

你为什么会增加CPU使用率? –

+0

你将如何减少它? –

+0

我们希望增加CPU使用量,从而观察虚拟机的行为,如内存管理。并通过命令行减少它。 – SecureFish

回答

0

你可以只总结了自然数的倒数。由于这个总和不会收敛,所以编译器不会把它优化掉。只要确保最终使用结果。

1/1 + 1/2 + 1/3 + 1/4 + 1/5 ... 

这当然会占据浮点单元,但不一定是中央处理单元。所以如果这种方法是好的或者不是你应该提出的主要问题。

+0

如果我添加一些图像检查,程序可能会占用中央处理单元? – SecureFish

+0

是的,如果添加一些网络检查,程序将占用网络。 –

0

只是简单的忙循环会增加CPU的使用情况 - 我不知道,如果这样做FP计算将显著改变这种或以其他方式能够实现更加一致的客座率,即使它确实锻炼了FPU,而不仅仅是ALU。

creating a similar proof-of-concept in C#虽然我使用的线程的固定数量和改变每个线程的休眠/字持续时间。请记住,这个过程并不准确,并受CPU和进程限制以及现代先占式操作系统的其他因素的影响。将VMware添加到组合中也可能会增加观察到的行为。在退化情况下,可以在用于调整负载的代码与系统报告的负载之间形成谐波。

如果使用较低级别的构建体(通常需要“内核模式”访问),那么更一致的节流阀可以实现 - 的部分原因是因为,以避免某些[线程]抢占:-)

另一个的能力可以用适当的硬件查看的替代方案是,设置CPU时钟,然后以100%运行。芯片的电流的Intel Core-I线是非常灵活这种方式(CPU倍频可以谨慎地通过整个范围内设定),虽然从Java访问可能是有问题的。这将在主机中完成,当然不是VMware。

快乐编码。