常见的监控CPU的工具基本的就是top mpstat sar vmstat(上下文切换/CPU数目是否够)。再有就是去看/proc/里边的文件信息了,因为里边记录系统运行时刻的东西,牛叉的就是nmon AIX的监控工具。
sar使用请参照:http://www.chinaz.com/server/2013/0401/297942.shtml
top
top - 10:30:11 up 46 min, 3 users, load average: 0.10, 1.00, 1.00 Tasks:122 total, 1 running,120 sleeping,0 stopped,1 zombie Cpus:0.7%us,0.7%sy,0.0%ni,97.6%id,0.0%wa,0.7%hi,0.3%si,0.0%st Mem:1035244k total,537528k used,497716k free,25816k buffers Swap:0k total,0k used,0k free,351392k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 489 root 20 0 0 0 0 S 0.3 0.0 0:03.88 vmmemctl 1385 root 20 0 12780 3596 2748 S 0.3 0.3 0:00.22 sshd 1423 root 20 0 2568 1088 876 R 0.3 0.1 0:00.01 top
输出信息 说明
10:30:11 当前时间 up 46 min 系统运行时间 3 users 当前登录用户数,这里是jzhou和root load average:0.10, 1.00, 1.00 系统负载,即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值,即0.02,0.14,0.21 Tasks:122 total, 1 running,120 sleeping,0 stopped,1 zombie 122个进程(任务),其中有2个处于运行状态,120个处于睡眠状态,没有停止的进程,有1个僵尸进程 Cpus:0.7%us,0.7%sy,0.0%ni,97.6%id,0.0%wa,0.7%hi,0.3%si,0.0%st Cpu运行状态,用户进程(user)占用CPU的0.7%,系统进程(system)占用CPU的0.7%,用户进程没有改变过优先级的进程,所以user nice值为0.0%,97.6%的CPU处于空闲状态(idle),没有等待的输入输出,所以iowait的值也为0.0%,硬件请求终端时间(hardware interrupt)占CPU的0.7%,软终端请求时间占CPU的0.3%,st代表steal time,具体作用不是很清楚,网上说是为其它CPU预留的,不清楚 Mem:1035244k total,537528k used,497716k free,25816k buffers 内存总量为1035244k,已使用的内存总量为537528k,497716k为空闲内存总量,25816k用作内核缓存的内存总量。(这是虚拟机的情况,物理机好像还有其它参数) Swap:0k total,0k used,0k free,351392k cached 交换分区总量为0k,使用的交换分区总量为0k,空闲交换分区总量为0k,351392k为缓冲的交换区总量(cached)、内存中的内容被患处到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
然后看看详细信息部分输出的信息的内容:
输出信息 说明
PID 进程标识符 USER 进程所有者用户名 PR/PRI 进程执行的优先级 NI NICE值,负值表示高优先级,正值表示低优先级 VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR 共享内存大小,单位kb S/STAT 进程状态 D:不可中断的睡眠状态 R:正在运行,或在队列中的进程 S:处于休眠状态 T:停止或被追踪 Z:僵尸进程 W:进入内存交换 X:死掉的进程 %CPU 上次更新到现在的CPU时间占用百分比 %MEN 进程使用的物理内存百分比 TIME+ 进程使用的CPU时间总计,单位1/100s COMMAND 进程被执行的命令名称
系统平均负载loadavg输出可以理解为每秒钟CPU等待运行的进程个数
系统平均负载被定义为在特定时间间隔内运行队列中的平均任务数。如果一个进程满足以下条件则其就会位于运行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用‘wait‘)
- 没有被停止(例如:等待终止)
例如:
# uptime
20:55:40 up 24 days, 3:06, 1 user, load average: 8.13, 5.90, 4.94
sysstat的安装包是:sysstat-5.0.5-1.i386.rpm,装完了sysstat-5.0.5-1.i386.rpm
后 就会有iostat、mpstat、sar、sa的功能,sysstat-5.0.5-1.i386.rpm
使用yum,如何安装iostat
sysstat 使用yum安装
#yum install sysstat
启动sysstat
#/etc/init.d/sysstat start
设置sysstat自启动
#checkfig sysstat on
MPSTAT
MPSTAT -P ALL 2 3
[root@localhost proc]# mpstat -P ALL
Linux 2.6.32-431.el6.i686 (localhost.localdomain) 08/12/2016 _i686_ (1 CPU)
10:39:57 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
10:39:57 AM all 0.15 0.00 0.42 0.43 0.03 0.12 0.00 0.00 98.84
10:39:57 AM 0 0.15 0.00 0.42 0.43 0.03 0.12 0.00 0.00 98.84
[root@localhost proc]#
mpstat 是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不 但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。下面只介绍 mpstat与CPU相关的参数,mpstat的语法如下:
mpstat [-P {|ALL}] [internal [count]]
参数的含义如下:
参数 解释
mpstat -V 显示mpstat版本信息 mpstat -P ALL 显示所有CPU信息 mpstat -P n 显示第n个cup信息,n为数字,计数从0开始 mpstat n m 每个n秒显示一次cpu信息,连续显示m次,最后显示一个平均值 mpstat n 每个n秒显示一次cpu信息,连续显示下去 -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
原文地址:http://aklaus.blog.51cto.com/9724632/1839695