【问题标题】:How to simulate CPU bound job如何模拟 CPU 绑定作业
【发布时间】:2014-07-26 23:09:35
【问题描述】:

我想在我的模拟器中模拟 CPU 密集型作业,我需要在 cpu 中运行 1 秒的计算或代码......我将如何做到...... 我正在使用以下代码

long Time1 = System.currentTimeMillis();
///calculation or loop that spends 1 second in cpu
long Time2 = System.currentTimeMillis();
System.out.println(Time2-Time1);

现在我需要 1 秒的计算...我还需要模拟 2 ,3 到 4 秒 我应该在第 2 行输入什么代码?

【问题讨论】:

  • 使用“睡眠”让 CPU 关注 2、3、4 秒是不可接受的吗?
  • 只需将Time2 = System.currentTimeMillis(); 放入一个执行任何操作 的循环中,然后等待它超过Time1 至少1000。

标签: java simulation simulator


【解决方案1】:

如果您真的是指将作业绑定到 CPU 1 秒钟,我认为仅使用纯 Java 是不可能的。原因是操作系统仍然会从 CPU 中移除进程,在 1 秒内重新调度它等等多次。所以你需要向操作系统提出一种特殊的请求才能做到这一点。该请求应该去影响操作系统的进程调度算法。但这不是我们希望我们的应用程序消耗 CPU 的方式。我们希望 CPU 能够处理中断等。因此,问题中可能没有明确提及您的意图,或者您可能正在尝试测试一些特殊和不常见的东西。

如果您只是在模拟某些东西,您可能只是按照 cmets 中的建议使用 sleep() 调用,这实际上不会消耗 CPU 1 秒钟,但允许您出于模拟目的假设如此。

【讨论】:

    猜你喜欢
    • 2011-09-04
    • 2011-04-01
    • 2014-08-19
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多