【问题标题】:How to simulate high CPU spike by an existing process如何通过现有进程模拟高 CPU 峰值
【发布时间】:2015-07-23 12:11:56
【问题描述】:

我正在尝试找到一种方法来使现有(专有)Linux 进程消耗大量 CPU 或使其变得如此繁忙以至于它会停止响应其他进程但不会重新生成。

我现在只有它在用户空间中的 pid。也许某种对进程的超快速 ping 可能会起作用。 原谅我有限的知识。

【问题讨论】:

  • 如果您在资源非常有限的虚拟机中测试进程,是否有帮助?
  • 在 windows 下你可以创建一个 :1 goto 1 使用 100% 的批处理。在 linux 中可能是同样的方式?
  • 我认为了解为什么您希望现有进程使用大量 CPU 会有所帮助。这个问题有很多技术解决方案,但我真的认为不应该有技术上的理由来问这个问题。

标签: linux shell unix cpu pid


【解决方案1】:

与其尝试使 CPU 使用率达到峰值,不如尝试让其占用 CPU 时间,从而阻止它响应其他进程。

既然知道进程id,就可以通过cpulimit来减少它对cpu的访问时间。

示例:以下命令应该只允许进程 1234 使用 1% 的 cpu。

cpulimit --pid=1234 --limit=1

如果这还不够慢,您还可以尝试通过运行其他 cpu 密集型应用程序并结合使用 cpulimit 来停止 cpu。

[编辑]

由于您的系统上没有 cpulimit,您可以改用 SIGSTOP 和 SIGCONT(我相信这就是 cpulimit 所使用的):

kill -SIGSTOP [pid]
kill -SIGCONT [pid]

如果您的系统无法识别 -SIGSTOP 和 -SIGCONT,您可以直接使用它们的 ID:

kill -19 [pid]
kill -18 [pid]

【讨论】:

  • 我看起来完全像这样,但我的服务器中没有 cpulimit 实用程序,否则这将是一个完美的答案。谢谢
  • @user2809888:我使用 kill 的替代方法编辑了我的答案,因为您无权访问 cpulimit。这种方式应该更好地满足您的需求,因为您实际上可以停止该过程,而不仅仅是将其限制到 1%
猜你喜欢
  • 2017-07-22
  • 2021-04-10
  • 2011-01-31
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多