<分区>
Possible Duplicate:
Simulate steady CPU load and spikes
我需要编写一个应用程序,可以在一定时间内模拟预设值(例如 30%、50%、90% 等)的高 CPU 使用率。这意味着它将需要两个输入(CPUUsage 和 duration)。假设我使用 50% 的 CPU 使用率和 2 分钟的持续时间)。这意味着当我运行应用程序时,它应该占用 50% 的 CPU 2 分钟。有什么想法可以实现吗?
<分区>
Possible Duplicate:
Simulate steady CPU load and spikes
我需要编写一个应用程序,可以在一定时间内模拟预设值(例如 30%、50%、90% 等)的高 CPU 使用率。这意味着它将需要两个输入(CPUUsage 和 duration)。假设我使用 50% 的 CPU 使用率和 2 分钟的持续时间)。这意味着当我运行应用程序时,它应该占用 50% 的 CPU 2 分钟。有什么想法可以实现吗?
最佳答案
您将需要编写一个自旋循环以使处理器在所需的时间内保持忙碌。 Sleep(n) 不会工作,因为当它让您的线程保持忙碌时,它允许 CPU 做其他事情。
使用基于线程的计时器(而不是基于消息的计时器)来安排负载模拟器功能的定期执行,例如,每 10 秒执行一次。在该函数中,运行自旋循环(递增局部变量的 for 循环)直到达到所需的加载时间(占 10 秒的百分比),然后退出该函数。计时器将在(大约)10 秒后再次调用您,以消耗另一个时间片。因此,对于 30% 的负载,您的自旋循环应该在每 10 秒的间隔中搅动 3 秒。
您还应该考虑系统中存在的可执行内核的数量。在四核超线程英特尔处理器上,您应该创建 8 个线程并在每个线程中运行您的负载模拟器。
关于c# - 模拟一段时间内的高CPU使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977935/