Linux中CPU与内存性能监测

  • 格式:docx
  • 大小:166.96 KB
  • 文档页数:20

Linux中CPU与内存性能监测(出处:)在系统维护的过程中,随时可能有需要查看CPU 使用率内存使用情况的需要,尤其是涉及到JVM,程序调优的情况,并根据相应信息分析系统状况的需要。

top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

运行top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式-- 用基于top 的命令,可以控制显示方式等等。

退出top 的命令为q (在top 运行中敲q 键一次)。

可以直接使用top命令后,查看%MEM的内容。

可以选择按进程查看或者按用户查看,如想查看Oracle用户的进程内存使用情况的话可以使用top -u oracle,以下为在CentOS中top命令的截图:内容解释:第一行(top):15:59:14 系统当前时刻167 days 系统启动后到现在的运作时间1 user 当前登录到系统的用户,更确切的说是登录到用户的终端数-- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目load average 当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程第二行(Tasks):75 total 当前系统进程总数1 running 当前运行中的进程数74 sleeping 当前处于等待状态中的进程数0 stoped 被停止的系统进程数0 zombie 僵尸进程数第三行(Cpus):0.0% us 用户空间占用CPU百分比0.3% sy 内核空间占用CPU百分比0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比99.7% id 空闲CPU百分比0.0% wa 等待输入输出的CPU时间百分比0.0% hi0.0% si0.0% st第四行(Mem):1018600k total 物理内存总量798356k used 使用的物理内存总量220244k free 空闲内存总量180628k buffers 用作内核缓存的内存量Swap: 192772k total 交换区总量0k used 使用的交换区总量192772k free 空闲交换区总量123988k cached 缓冲的交换区总量第五行(Swap):表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。

通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。

0k total 交换区总量0k used 使用的交换区总量0k free 空闲交换区总量420732k cached 缓冲的交换区总量最下部分的进程列表栏:以PID 区分的进程列表将根据所设定的画面更新时间定期的更新。

通过top 内部命令可以控制此处的显示方式:PID:进程的IDUSER:进程所有者PR:进程的优先级别,越小越优先被执行NInice:值VIRT:进程占用的虚拟内存RES:进程占用的物理内存SHR:进程使用的共享内存S:进程的状态。

S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数%CPU:进程占用CPU的使用率%MEM:进程使用的物理内存和总内存的百分比TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

COMMAND:进程启动命令名称top 运行中可以通过top 的内部命令对进程的显示方式进行控制。

内部命令如下表:s- 改变画面更新频率l - 关闭或开启第一部分第一行top 信息的表示t - 关闭或开启第一部分第二行Tasks 和第三行Cpus 信息的表示m - 关闭或开启第一部分第四行Mem 和第五行Swap 信息的表示N - 以PID 的大小的顺序排列表示进程列表(第三部分后述)P - 以CPU 占用率大小的顺序排列进程列表(第三部分后述)M - 以内存占用率大小的顺序排列进程列表(第三部分后述)h - 显示帮助n - 设置在进程列表所显示进程的数量q - 退出tops -改变画面更新周期sar命令sar命令也是Linux系统中重要的性能监测工具之一,它可以周期性地对内存和CPU使用情况进行采样。

基本语法如下: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:系统交换活动例一:获取I/O信息,每秒钟采样一次,共计采样3次:例二:使用命行sar -v t n例如,每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:# sar -v 30 5屏幕显示:[java]view plain copy1. SCO_SV scosysv 3.2v5.0.5 i80386 10/01/20012.10:33:23 proc-sz ov inod-sz ov ov lock-sz (-v)3.10:33:53305/32101337/276401561/1706040/1284.10:34:23308/32101340/276401587/1706037/1285.10:34:53305/32101332/276401565/1706036/1286.10:35:23308/32101338/276401592/1706037/1287.10:35:53308/32101335/276401591/1706037/128显示内容包括:proc-sz:目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC 控制。

inod-sz:目前核心中正在使用或分配的i节点表的表项数,由核心参数MAX- INODE控制。

:目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控制。

ov:溢出出现的次数。

Lock-sz:目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE控制。

显示格式为实际使用表项/可以使用的表项数显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如果出现溢出时,要调整相应的核心参数,将对应的表项数加大。

例三:使用命行sar -d t n例如,每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:1.SCO_SV scosysv 3.2v5.0.5 i80386 10/01/20012.11:06:43 device%busy avque r+w/s blks/s avwait avserv (-d)3.11:07:13 wd-0 1.47 2.754.6714.735.503.144.11:07:43 wd-00.4318.77 3.078.6625.111.415.11:08:13 wd-00.77 2.78 2.777.26 4.942.776.11:08:43 wd-0 1.1011.18 4.1011.2627.322.687.11:09:13 wd-0 1.9721.78 5.8634.0669.663.358.Average wd-0 1.1512.11 4.0915.1931.122.809.显示内容包括:device:sar命令正在监视的块设备的名字。

%busy:设备忙时,传送请求所占时间的百分比。

avque:队列站满时,未完成请求数量的平均值。

r+w/s:每秒传送到设备或从设备传出的数据量。

blks/s:每秒传送的块数,每块512字节。

avwait:队列占满时传送请求等待队列空闲的平均时间。

avserv:完成传送请求所需平均时间(毫秒)。

在显示的内容中,wd-0是硬盘的名字,%busy的值比较小,说明用于处理传送请求的有效时间太少,文件系统效率不高,一般来讲,%busy值高些,avque值低些,文件系统的效率比较高,如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。

例四:使用命行sar -b t n例如,每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:# sar -b 30 5屏幕显示:[java]view plain copy1.SCO_SV scosysv 3.2v5.0.5 i80386 10/01/20012.14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)3.14:55:29014710052178004.14:55:59018610052579005.14:56:2942329885886006.14:56:59012510052376007.14:57:2908910041266008.Average1156995288000显示内容包括:bread/s:每秒从硬盘读入系统缓冲区buffer的物理块数。

lread/s:平均每秒从系统buffer读出的逻辑块数。

%rcache:在buffer cache中进行逻辑读的百分比。

bwrit/s:平均每秒从系统buffer向磁盘所写的物理块数。

lwrit/s:平均每秒写到系统buffer逻辑块数。

%wcache:在buffer cache中进行逻辑读的百分比。

pread/s:平均每秒请求物理读的次数。

pwrit/s:平均每秒请求物理写的次数。

在显示的内容中,最重要的是%cache 和%wcache两列,它们的值体现着buffer的使用效率,%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,buffer 数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。

但buffer参数值的多少影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到提高。

例五:使用命行sar -g t n例如,每30秒采样一次,连续采样5次,报告串口I/O的操作情况,需键入如下命令:# sar -g 30 5[java]view plain copy1.屏幕显示:2.SCO_SV scosysv3.2v5.0.5 i8038611/22/20013.17:07:03ovsiohw/s ovsiodma/s ovclist/s (-g)4.17:07:330.000.000.005.17:08:030.000.000.006.17:08:330.000.000.007.17:09:030.000.000.008.17:09:330.000.000.009.Average 0.000.000.00显示内容包括:ovsiohw/s:每秒在串口I/O硬件出现的溢出。