定期获取单个进程的CPU使用率

定期获取单个进程的CPU使用率

我遇到了一个问题 kswapd0,进程 (pid 52) 有时会开始使用 25% 的 CPU(一个完整核心)。我通常使用以下命令停止它sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"(请参阅 IBM 关于此问题的页面,这里)。

我想设置一个看门狗,每当 kswapd0 持续使用 22%+ CPU 超过三秒时,它就会执行该命令。因此,我想以有效的方式定期获取 kswapd0 cpu 使用情况。


以下是我当前用于获取即时 CPU 使用率的命令:

我从上面得到的信息:

top -bn1 -p $(pgrep kswapd0)

我将输出通过管道传输到 sed 以从最后一行提取 %CPU 值:

... | tail -n1 | sed -r 's/^ *([^ ]+ +){8}([^ ]+)( +[^ ]+){3}/\2/'

我知道在交互模式下,显示的cpu使用率top是两次刷新之间的平均cpu使用率,但我不知道单次调用top时它是什么。

请注意,这ps -p $PID -o %CPU不适合我的问题,因为它打印的平均 cpu 使用率是在整个进程生命周期(而不是最后几秒)完成的。

如何使用更简单的技术获取 cpu 使用率? (比较合适的一个)

相关内容