Linux中常用的监控CPU整体性能的工具
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 在输出中包括扩展的磁盘指标