Linux中常用的监控CPU整体性能的工具

标签: linux 监控 cpu | 发表时间:2013-06-05 23:41 | 作者:zhongyhc
出处:http://blog.csdn.net

Linux中常用的监控CPU整体性能的工具有:

top:命令是一个优秀的交互式实用工具,用于监视性能。它提供关于整体Linux性能的几个概要行,但是报告进程信息才是top真正的长处。可以广泛自定义进程显示,也可以添加字段,按照不同指标排序进程列表,甚至从top注销进程。显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示。

sar:实用工具提供监视每一事件的能力。它至少有15个单独的报告类别,包括CPU、磁盘、网络、进程、交换区等等。与mpstat 一样,不但能查看CPU的平均信息,还能查看指定CPU的信息。

mpstat:mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。

vmstat:命令报告关于内存和交换区使用的广泛信息。它也报告CPU和一些I/O信息。

iostat::是一个研究磁盘吞吐量的工具。和sar类似,iostat可以使用间隔和计数参数。第一个间隔的输出包含Linux总运行时间的指标,与其他性能命令比较,这可能是iostat最独特的功能。能查看所有CPU的平均信息,还能报告存储输入/输出(I/O)统计资料。

oprofile:OProfile 是一个低开销的系统全局的性能监视工具。它使用处理器上的性能监视硬件来检索关于内核以及系统上的可执行文件的信息,例如内存是何时被引用的;L2 缓存请求数量;收到的硬件中断数量等。

dmesg:可以直接查看cpu的主频。

此外还有:free,ps,uptime,

一:top

top [-option]

参数说明

 d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。

 p 通过指定监控进程ID来仅仅监控某个进程的状态。

 q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

 S 指定累计模式

 s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

 i  使top不显示任何闲置或者僵死进程。

 

注:按f或者F可从当前显示中添加或者删除项目。

 

PID:进程id编号

USER:进程所有者的用户名

PR:进程的优先级

NI:进程值

VIRT:所有作业使用的内存总量,以千字节为单位

RES:常驻内存作业使用内存量

SHR:进程使用的共享内存数量

S:进程的状态,通常R表示运行,S表示休眠

%CPU:自从最近的屏幕更新以来,这个进程使用的CPU百分比

%MEM:这个进程使用的内存百分比

TIME+:自从进程启动以来,这个进程使用的CPU时间量

COMMAND:正在执行的命令

 

二:sar:

sar 命令行的常用格式:

sar [options] [-A] [-o file] t [n]

在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有

的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式

存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令

的选项很多,下面只列出常用选项:

      -A:所有报告的总和。

        -u:CPU利用率

                -v:进程、I节点、文件和锁表状态。

        -d:硬盘使用报告。

        -r:没有使用的内存页面和硬盘块。

        -g:串口I/O的情况。

-b:缓冲区使用情况。

-a:文件读写情况。

-c:系统调用情况。

-R:进程的活动情况。

-y:终端设备活动情况。

-w:系统交换活动。

下面将举例说明:

使用命令行 sar -u tn

例1,每2秒采样一次,连续采样4次,观察CPU 的使用情况,并将采样结果以二进制

形式存入当前目录下的文件zhong中,需键入如下命令:

#sar -u -o zhong 2 4

如果要查看二进制文件zhong中的内容,则需键入如下sar命令:

#sar -u -f zhong

屏幕显示:

在显示内容包括:

%user:CPU处在用户模式下的时间百分比。

%nice: CPU处理nice值为负进程的时间百分比。

  %system:CPU处在系统模式下的时间百分比。

  %iowait:CPU等待输入输出完成时间的百分比。

%idle:CPU空闲时间百分比。

★注意 :%iowait和%idle,%iowait的值过高,表示硬盘存在I/O瓶颈,

%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

例2,查看系统交换活动情况

sar -w 2 2

pswpin/s:每秒从硬盘交换区传送进入内存的次数。

pswpout/s:每秒从内存传送到硬盘交换区的次数。

pswpin/s、 pswpout/s描述的是与硬盘交换区相关的交换活动。交换关系到系统的效率。交换区在硬盘上对硬盘的读,写操作比内存读,写慢得多,因此,为了提高系统效率就应该设法减少交换。通常的作法就是加大内存,使交换区中进行的交换活动为零,或接近为零。如果swpot/s的值大于 1,预示可能需要增加内存或减少缓冲区(减少缓冲区能够释放一部分自由内存空间)。

★注:sar命令的用法很多,有时判断一个问题,需要几个sar命令结合起来使用,比如,怀疑CPU存在瓶颈,可用sar -u 和sar -q来看,怀疑I/O存在瓶颈,可用sar -b、sar -u和sar-d来看。

 

三:mpstat

 

mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。下面只介绍 mpstat与CPU相关的参数,mpstat的语法如下:

mpstat [-P {|ALL}] [internal [count]]

参数的含义如下:

例一:当mpstat不带参数时,输出为从系统启动以来的平均值。

 

参数解释

-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值

internal 相邻的两次采样的间隔时间

count 采样的次数,count只能和delay一起使用

当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。与CPU有关的输出的含义如下:

参数解释从/proc/stat获得数据

CPU 处理器ID

user:在internal时间段里,用户态的CPU时间(%),不包含 nice值为负进程 usr/total*100

nice:在internal时间段里,nice值为负进程的CPU时间(%)nice/total*100

system:在internal时间段里,核心时间(%)system/total*100

iowait:在internal时间段里,硬盘IO等待时间(%)iowait/total*100

irq:在internal时间段里,软中断时间(%)irq/total*100

soft:在internal时间段里,软中断时间(%)softirq/total*100

idle:在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)idle/total*100

intr/s:在internal时间段里,每秒CPU接收的中断的次数intr/total*100

CPU总的工作时间=total_cur=user+system+nice+idle+iowait+irq+softirq

total_pre=pre_user+ pre_system+ pre_nice+pre_idle+ pre_iowait+ pre_irq+ pre_softirq

user=user_cur – user_pre

total=total_cur-total_pre

其中_cur 表示当前值,_pre表示interval时间前的值。            

例二:每2秒产生了2个处理器的统计数据报告

下面的命令可以每2秒产生了2个处理器的统计数据报告,一共产生2个interval 的信息,然后再给出这2个interval的平均信息。默认时,输出是按照CPU 号排序。第一个行给出了从系统引导以来的所有活跃数据。接下来每行对应一个处理器的活跃状态。

四:vmstat

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写, 是实时系统监控工具。该命令通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据,输出信息直接打印在屏幕。vmstat反馈的与CPU相关的信息包括:

(1)多少任务在运行

(2)CPU使用的情况

(3)CPU收到多少中断

(4)发生多少上下文切换

下面只介绍 Vmstat与CPU相关的参数

vmstat的语法如下:

vmstat [delay[count]]

例一:当vmstat不带参数时,对应的输出值是从系统启动以来的平均值,而r和b则对应的是完成这一命令时,系统的值。从下面例子,可以看出系统基本出去闲置状态(idle)。自启动以来,CPU在用户态消耗时间为5%,在核心态消耗为本1%,剩下的为闲置时间。需要指出的是:这里的用户态时间包括nice值为负的进程的时间。

 

参数解释

delay 相邻的两次采样的间隔时间

count 采样的次数,count只能和delay一起使用

当没有参数时,vmstat则显示系统启动以后所有信息的平均值。有delay时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个delay时间段的平均信息。当系统有多个CPU时,输出为所有CPU的平均值。

与CPU有关的输出的含义 (采用进一法)

参数解释从/proc/stat获得数据

任务的信息

r:在internal时间段里,运行队列里等待CPU的任务(任务)的个数,即不包含vmstat进程 procs_running-1

b:在internal时间段里,被资源阻塞的任务数(I/0,页面调度,等等.),通常情况下是接近0的 procs_blocked

CPU信息取整(四舍五入)

us:在internal时间段里,用户态的CPU时间,包含 nice值为负进程

system:在internal时间段里,核心态的CPU时间

id:在internal时间段里,cpu空闲的时间,不包括等待i/o的时间

wa:在internal时间段里,等待i/o的时间

系统信息

in:在internal时间段里,每秒发生中断的次数

cs:在internal时间段里,每秒上下文切换的次数,即每秒内核任务交换的次数

内存信息

swpd:在internal时间段里,已用的交换空间数量

free:在internal时间段里,自由RAM数量

buff:在internal时间段里,缓冲使用的RAM数量

cache:在internal时间段里,文件系统缓存使用的RAM数量

交换信息

si:在internal时间段里,从磁盘分页到内存的数量

so:在internal时间段里,从内存分页到磁盘的数量

I/O信息

bi:在internal时间段里,从磁盘读入的块

bo:在internal时间段里,写入磁盘的块

 

五:iostat

命令格式:iostat [-option] [t n]

不使用选项,iostat只显示覆盖启动以来全部时间的一组指标。

 

CPU信息包含基本上和top一样的字段。iostat CPU输出显示在用户模式中执行、执行正常进程、在内核(系统)模式中执行,进程等待I/O完成时处于空闲和没有等待进程时处于空闲的CPU时间的百分比。CPU行是所有CPU的摘要。

 

磁盘信息与sar -d提供的信息类似。输出包括每秒传输数(tps)、每秒512字节块读取数(Blk_read/s)、每秒512字节块写入数(Blk_wrtn/s)和512字节块读取(Blk_read)和写入(Blk_wrtn)的总数量。

 

iostat提供几个用于定制输出的开关。最有用的有:

 -c     只显示CPU行

 -d     显示磁盘行

 -k     以千字节为单位显示磁盘输出

-t      在输出中包括时间戳

-x     在输出中包括扩展的磁盘指标

 

作者:zhongyhc 发表于2013-6-5 23:41:28 原文链接
阅读:69 评论:0 查看评论

相关 [linux 监控 cpu] 推荐:

Linux中常用的监控CPU整体性能的工具

- - CSDN博客编程语言推荐文章
Linux中常用的监控CPU整体性能的工具有:. top:命令是一个优秀的交互式实用工具,用于监视性能. 它提供关于整体Linux性能的几个概要行,但是报告进程信息才是top真正的长处. 可以广泛自定义进程显示,也可以添加字段,按照不同指标排序进程列表,甚至从top注销进程. 显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示.

Linux - 系统指标 CPU load - 简书

- -
cpu load通常做为一个机器负载的衡量指标. cpu load是对使用或者等待cpu进程的统计(数量的累加). 每一个使用(using)或者等待(waiting)CPU的进程(process),都会使load值+1. 每一个结束的(teminates)进程,都会使load值-1. 所谓使用CPU的进程,是指状态为.

Linux系统监控

- - CSDN博客系统运维推荐文章
查看所有的进程和端口使用情况:. 查看nginx并发(连接数)进程数:. 查看当网络连接状态中,已建立连接的数量:. 查看系统tcp连接中各个状态的连接数. 输出每个ip的连接数,以及总的各个状态的连接数. df -hl 查看磁盘使用情况 . df -hl 查看磁盘剩余空间. df -h 查看每个根路径的分区大小.

Linux下操纵CPU曲线绘制心形

- TheLover_Z - 博客园-首页原创精华区
不久之前看了「编程之美」,里面有在windows下操纵CPU绘制正弦曲线的示例程序. 思路很简单,但是需要知道几个windows的API函数. 刚开始我想尝试在windows下绘制心形,不过没能做到,原因是CPU曲线是CPU利用率和时间构成的函数的关系,心形是一个封闭图形,不可能是一个函数,所以至少需要两条CPU曲线才能绘制(这需要你的机器为双核或多核或者多个CPU),然而windows的任务管理器,我没能找到将两条CPU曲线绘制在同一图表下的方法,所以没能成功.

动态切换 Linux 使用的 CPU 数量

- 李帅 - Wow! Ubuntu
由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量. 网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了. 想想 Linux 应该是很强大的,所以可以动态修改 CPU 数量才对. 无意中看到 Linux 代码的 Documentation 文件夹下有个文件叫做 cpu-hotplug.txt,于是就看了一下,发现可以在 /sys/devices/system/cpu 看到代表各 CPU 的文件夹按照 cpuX 的命名方式,如 cpu0、cpu1、cpu2 等.

Linux中模拟诊断Oracle高CPU占用

- - CSDN博客推荐文章
1,在一个session中模拟CPU高使用率,如下:. 2,在shell窗口用top命令查看CPU使用情况:                                                                                                            .

Linux HotSopt虚拟机GC线程的CPU占用率

- - ImportNew
下面的问题将会检验你有关Linux系统上的Java程序的垃圾回收和High CPU排错的知识. 在过度调用GC或及CPU占用率过高的时候,这种排错技术是至关重要的. 假设你没有使用像是 Compuware dynaTrace或者JVisualVMware这样先进的监视工具. 有关于这些工具的使用教程将会在以后发布,但是请先确保自己掌握了基础的排错原则.

Linux下java进程CPU占用率高-分析方法

- - Linux - 操作系统 - ITeye博客
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6%. 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用.

Linux下如何查看高CPU占用率线程

- - C++博客-首页原创精华区
在 Linux 下 top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.),可以显示每个 cpu 的利用率. 但是无法显示每个线程的 cpu 利用率情况,. 这时就可能出现这种情况,总的 cpu 利用率中 user 或 system 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 system 与之对应.

java问题导致linux负载、cpu过高如何定位

- - CSDN博客推荐文章
1.用top找到最耗资源的进程id. 2.查询最消耗资源的java进程. 3.打印java 栈 信息. 4.将耗资源的javaPID转换为16进制(5920转1720<16进制>  去百度找 :十进制转十六进制). PID 对应 堆栈中的nid(16进制). 去stack.txt 中查找nid=1720的问题.