欢迎光临
我们一直在努力

Cpustat – 通过在Linux中运行进程监视CPU利用率

Cpustat是使用Go编程语言编写的强大的Linux系统性能测量程序。它使用“利用饱和度和错误(USE)方法”(用于分析任何系统的性能的方法),以有效的方式尝试显示CPU利用率和饱和度。它提取在系统上执行的每个进程的更高频率样本,然后以较低的频率总结这些样本。例如,它可以每隔200ms衡量每个进程,并且每5秒对这些样本进行总结,包括某些度量的最小值/平均值/最大值。

建议阅读: 20个命令行工具来监视Linux性能

Cpustat以两种可能的方式输出数据:纯文本列表的摘要间隔和每个样本的彩色滚动仪表板。

如何在Linux中安装Cpustat

您必须在您的Linux系统上安装Go(GoLang)才能使用cpustat ,点击下面的链接可以遵循GoLang安装步骤,如果您没有安装它:

  1. 在Linux中安装GoLang(Go编程语言)

安装Go后 ,输入下面的go get命令进行安装,此命令将在您的GOBIN变量中安装cpustat二进制文件:

# go get github.com/uber-common/cpustat

如何在Linux中使用Cpustat

安装过程完成后,使用sudo命令,使用root权限运行cpustat ,如果您将系统控制为非root用户,否则将显示错误信息:

$ $GOBIN/cpustatThis program uses the netlink taskstats interface, so it must be run as root.

注意 :要运行cpustat以及您像系统中任何其他命令一样在系统上安装的所有其他Go程序,请在PATH环境变量中包含GOBIN变量。打开下面的链接,了解如何在Linux中设置PATH变量。

  1. 了解如何在Linux中永久设置$ PATH变量

这是cpustat的工作原理 查询/proc目录以获取每个间隔的当前进程ID列表 ,并且:

  • 对于每个PID,读取/ proc / pid / stat ,然后计算与之前样本的差异。
  • 如果它是一个新的PID,请阅读/ proc / pid / cmdline
  • 对于每个PID,发送一个netlink消息来获取taskstats,计算与之前样本的差异。
  • fetch / proc / stat来获取整体系统的统计信息。

再次,每个睡眠间隔被调整为考虑所有这些统计数据所消耗的时间量。此外,每个样品还记录了每次测量所需的时间与样品之间的实际经过时间。这试图解释cpustat本身的延迟。当没有任何参数运行时, cpustat将默认显示以下内容:sampling interval:200ms,summary interval:2s(10个样本), 显示前10个进程,用户过滤器:all,pid filter:all如下面的截图所示:

$ sudo $GOBIN/cpustat 
Cpustat - 监控Linux CPU使用情况

Cpustat – 监控Linux CPU使用情况

从上面的输出中,以下是在字段之前显示的系统级摘要指标的含义:

  • usr – min / avg / max用户模式运行时间占CPU的百分比。
  • sys -min / avg / max系统模式运行时间占CPU的百分比。
  • nice -min / avg / max用户模式低优先级运行时间占CPU的百分比。
  • 空闲 – 最小/平均/最大用户模式运行时间占CPU的百分比。
  • iowait – 等待磁盘IO的最小/平均/最大延迟时间。
  • prun -min / avg / max可运行状态的进程数(与负载平均值相同)。
  • pblock – min / avg / max磁盘IO上阻塞的进程数。
  • pstart – 此汇总间隔中启动的进程/线程数。

从上面的输出来看,对于给定的进程,不同的列表示:

  • 名称 – / proc / pid / stat或/ proc / pid / cmdline中的公用进程名称。
  • pid -process id,也称为“tgid”。
  • min – pid的用户最低采样次数+系统时间,由/ proc / pid / stat测量。缩放比例是CPU的百分比。
  • 最大 – 此pid的用户+系统时间的最高采样次数,也由/ proc / pid / stat测量。
  • usr – 摘要期间pid的平均用户时间,由/ proc / pid / stat衡量。
  • 系统 – pid在总结期间的平均系统时间,由/ proc / pid / stat测量。
  • nice – 表示进程的当前“nice”值,从/ proc / pid / stat测量。更高意味着“更好”。
  • runq – 时间过程和所有的线程花费可运行,但等待运行,从taskstats通过netlink测量。缩放比例是CPU的百分比。
  • 当然 ,这个进程和所有的线程都被磁盘IO阻塞,通过netlink从taskstats测量。缩放比例是CPU的百分比,在总结间隔内平均。
  • 交换 – 通过netlink从taskstats测量的进程和所有线程花费在等待被交换的时间。缩放比例是CPU的百分比,在总结间隔内平均。
  • vcx和icx – 通过进程及其所有线程在总结间隔中的自愿上下文切换的总数,通过netlink从taskstats测量。
  • rss – 从/ proc / pid / stat提取的当前RSS值。这个进程正在使用的内存量。
  • ctime – 由/ proc / pid / stat衡量的等待在此汇总间隔期间退出的孩子所消耗的用户+ sys CPU时间。

请注意,长时间运行的子进程通常可能会混淆此测量,因为仅在子进程退出时报告时间。然而,这对于测量频繁cron作业和健康状况检查的影响很有用,因为CPU时间通常被许多子进程消耗。

  • thrd – 汇总间隔结束时的线程数,由/ proc / pid / stat测量。
  • sam – 此过程的样本数,包含在摘要间隔中。最近启动或退出的进程可能比摘要间隔更少的样本可见。

以下命令显示系统上运行的前10个root用户进程:

$ sudo $GOBIN/cpustat -u root
查找根用户运行进程

查找根用户运行进程

要在花式终端模式下显示输出,请使用-t标志,如下所示:

$ sudo $GOBIN/cpustat -u roo -t
根用户的运行过程使用

根用户的运行过程使用

要查看前x个进程数 (默认为10),可以使用-n标志,以下命令显示系统上运行前20个Linux进程

$ sudo $GOBIN/cpustat -n 20 

您还可以使用-cpuprofile选项将CPU配置文件写入文件,如下所示,然后使用cat命令查看文件:

$ sudo $GOBIN/cpustat -cpuprofile cpuprof.txt$ cat cpuprof.txt

要显示帮助信息,请使用-h标志,如下所示:

$ sudo $GOBIN/cpustat -h

从cpustat Github Repository中查找更多信息: https//github.com/proc/products/cpustat就这样!在本文中,我们向您展示了如何安装和使用cpustat,这是Linux的一个有用的系统性能测量工具。通过下面的评论部分与我们分享您的想法。

赞(0) 打赏
未经允许不得转载:老赵部落 » Cpustat – 通过在Linux中运行进程监视CPU利用率

评论 抢沙发