【问题标题】:simulate high cpu usage for certain period of time [duplicate]在一段时间内模拟高 CPU 使用率[重复]
【发布时间】:2012-02-17 04:11:16
【问题描述】:

可能重复:
Simulate steady CPU load and spikes

我需要编写一个应用程序,它可以在一定时间内以预设值(例如,30%、50%、90% 等)模拟高 CPU 使用率。这意味着它将需要两个输入(CPUUsage 和持续时间)。假设我使用 50% 的 CPU 使用率和 2 分钟的持续时间)。这意味着当我运行应用程序时,它应该占用 50% 的 CPU 时间 2 分钟。有什么想法可以实现吗?

【问题讨论】:

  • 有很多方法可以在 2 分钟内占用 50% 的 CPU。忙循环 1 分钟,睡眠 1 分钟。或者忙循环1s,休眠1s。那么内存使用情况呢?大概您正在尝试复制一个真实的程序。那想必也会锻炼记忆力。有没有机会告诉我们问题出在哪里?

标签: c# simulation cpu-usage


【解决方案1】:

您需要编写一个自旋循环以使处理器在所需的时间内保持忙碌。 Sleep(n) 不起作用,因为它使您的线程保持忙碌,但它允许 CPU 执行其他操作。

使用基于线程的计时器(而不是基于消息的计时器)来安排负载模拟器功能的定期执行,例如每 10 秒一次。在该函数中,运行自旋循环(增加局部变量的 for 循环)直到达到所需的加载时间(10 秒的百分比),然后退出该函数。计时器将在(大约)10 秒后再次呼叫您,以咀嚼另一个时间片。因此,对于 30% 的负载,您的自旋循环应在每 10 秒间隔中搅动 3 秒。

您还应该考虑系统中存在的可执行内核的数量。在四核超线程 Intel 处理器上,您应该创建 8 个线程并在每个线程中运行负载模拟器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    相关资源
    最近更新 更多