绘制 Linux 机器上每个用户的 CPU 使用率

绘制 Linux 机器上每个用户的 CPU 使用率

我想绘制以下情况的图表(图形输出会很棒,即 .png 文件):我有用户 A、B 和 C。我限制他们的资源,这样当所有用户同时运行 CPU 密集型任务时,这些进程将使用 25%、25% 和 50% 的 CPU。我知道我可以使用获取实时统计数据,top但不知道如何处理它们。我搜索了庞大的top手册页,但没有找到太多关于输出可以绘制图表的数据的信息。理想情况下,图表将显示大约 30 秒的跨度。有什么想法如何实现吗?

答案1

我知道我可以使用 top 获取实时统计数据,但不知道如何处理它们

批处理模式可能有用:

   -b : Batch mode operation
        Starts  top  in ’Batch mode’, which could be useful for sending output from top to other programs or
        to a file.  In this mode, top will not accept input and runs until the iterations limit  you’ve  set
        with the ’-n’ command-line option or until killed.

例如:

$ top -b -n 1 -u <user> | awk 'NR > 7 { sum += $9 } END { print sum }'

Ganglia Gmetric可以用来绘制此图表。

cpu_per_user_gmetric.sh

#!/bin/bash
USERS="a b c"

for user in $USERS; do
    /usr/bin/gmetric --name CPU_per_"$user"_user --value `top -b -n 1 -u $user | awk 'NR>7 { sum += $9; } END { print sum; }'` --type uint8 --unit Percent
done

crontab -l

* * * * * /path/to/cpu_per_user_gmetric.sh

结果如下:

在此处输入图片描述

答案2

tload命令通过 ASCII 图表来表示平均系统负载的图形表示。此命令可用于在终端上提供图表。该命令的语法为:

tload [options] [terminal]

如果未提供终端作为此命令的参数,则默认情况下它会在当前终端上输出图表。因此,此命令的最简单形式是:

$ tload

答案3

也许你可以使用collectd并调整其中一个可用插件? 是的,列出的这些都不能完全满足您的要求,但另一方面,它们修改起来相当简单,我认为您可以从例如processes插件开始,然后从那里开始工作。

答案4

尝试收集sarsadf准备数据以便于绘制图表。http://sebastien.godard.pagesperso-orange.fr/documentation.html

相关内容