【发布时间】:2011-09-06 18:49:50
【问题描述】:
有没有一种简单的方法可以在 Java 中生成恒定的 CPU 负载?比如在 60% 时生成 CPU 负载。
【问题讨论】:
-
当您想要恒定的 CPU 负载时,您的要求是否也适用于多核 CPU?在 Java 中获得 CPU 亲和性并不容易(而且或多或少不可能)。
-
没有单CPU,特别想在安卓手机上测试一下。
有没有一种简单的方法可以在 Java 中生成恒定的 CPU 负载?比如在 60% 时生成 CPU 负载。
【问题讨论】:
有点晚了,但只是想分享一下,我创建了一个名为 FakeLoad 的小型开源客户端库,可用于生成不同类型的系统负载,如 CPU、内存和磁盘 I/O在飞行中。
例如,使用 FakeLoad 生成 60% 的 CPU 负载 30 秒可以这样完成:
// Creation
FakeLoad fakeload = FakeLoads.create()
.lasting(30, TimeUnit.SECONDS)
.withCpu(60);
// Execution
FakeLoadExecutor executor = FakeLoadExecutors.newDefaultExecutor();
executor.execute(fakeload);
它不能提供完美的精度,但它能够产生相当恒定和准确的载荷。它在 Maven Central 上可用,所以请随意尝试一下 :)
【讨论】:
尚未对此进行测试,但它可能大致可以使您的应用程序以正确的比例工作和休眠。类似(伪代码):
load = 60;
do forever
time = current_system_time_ms() + load
while (current_system_time_ms() < time)
// just consume some time for 60 ms
end
SLEEP(100 - load); // sleep for 40 ms
end
好的,你要求一个简单的方法,但是...... :)
【讨论】:
我认为这是不可能的,因为:
【讨论】: