《2022年UNIX系统性能监控简述及shell实现系统资源利用率统计程序 .pdf》由会员分享,可在线阅读,更多相关《2022年UNIX系统性能监控简述及shell实现系统资源利用率统计程序 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、UNIX 系统性能监控简述及shell 实现系统资源利用率统计程序论文 摘要:本文 简要阐述了unix 系统中(主要以IBM 的 AIX 为例)进行 系统 性能 管理 的几种命令行工具,并通过编写shell 实例程序,运用其中提到的工具实现系统 资源利用率的统计程序,为做好 unix 系统 管理 和调优提供参考。1.引言Unix系统中性能优化以及确定系统 中的性能瓶颈是系统管理 员的主要任务之一。在一个计算机系统 中,CPU、内存、硬盘和 网络 是影响 系统 性能的主要因素,因此系统 性能的监控以及调整也主要在于如何在这些资源中获得某种平衡,以满足人们对系统 性能的期望。IBM 小型机 RS6
2、000 在 企业 应用中被广泛采用,其上的AIX 操作 系统 如同其它UNIX 系统一样,给 系统管理 员监控 系统 提供了非常丰富的手段。这里就以AIX系统中的几个监控工具为例,利用 shell 程序及定时作业程序cron 及强大的awk 工具,实现统计系统 资源利用率,可以每天统计内存的日均使用率、CPU 的每日峰值、CPU 的日均使用率,并使每月统计量根据月中每日数据平均得出,每月 1 号凌晨产生上月统计数据,这样就可给 系统管理 员了解 系统 运行资源的率用率提供很好的参考。其中提到的系统 工具 Vmstat、svmon、awk 等都很强大,限于篇幅不作非常详细的介绍,如想更透彻地了解
3、这些命令的用法,请参考有关技术 资料或手册。2.AIX 中的性能监控工具一个 系统 要为用户提供持续高可用性的服务,不仅仅只要求它能够正常运行,而且还要使其性能处于最佳状态。系统管理 员的职责之一就是对系统 进行性能统计分析,掌握 系统 的运行状态和资源使用情况,然后通过合理配置系统 资源,使 系统 健康运行。从 系统管理 的角度看,性能的 管理 主要集中在现有资源的分配利用上,这些资源包括物理 资源和逻辑资源。物理 资源包括了CPU、内存、I/O 设备,逻辑设备包括逻辑卷管理 器、虚拟内存管理 器、系统 资源控制器和文件系统 等。这里重点介绍一些关于系统 性能的命令和工具。1.iostat
4、iostat 命令主要通过观察物理 磁盘的活跃时间以及他们的平均传输速度,监控 系统 输入/输出设备负载。根据iostat 命令产生的报告,用户可确定一个系统 配置是否平衡,并据此在物理 磁盘与适配器之间更好地平衡输入/输出负载。pmon netpmon 命令可以监控关于网络行为的系统 事件和性能以及网络行为对CPU 的消耗。netpmon 命令在指定的监控周期报告网络行为。3.ps 工具ps 命令是UNIX系统中最常见的命令,它主要显示系统 中关于进程的统计和状态信息,如进程 ID,I/O 行为以及CPU 利用率等。利用ps 命令提供的 信息,可决定一个进程运行了多长时间,进程使用了多少CP
5、U 时间,以及进程是否受系统 的惩罚。还可用ps 命令确定进程使用了多少内存,完成多少I/O,进程的优先级以及是谁创建了进程。4.vmstat vmstat 命令报告关于核心线程,虚拟内存,自陷(trap),磁盘以及CPU 行为的统计。而且每种行为报告都被更细致地用百分比分别表示用户态、核态、空闲以及等待磁盘I/O 等情况。内核维持了对核心线程,换页以及中断行为的统计数据,而vmstat 命令则通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据。磁盘的输入/输出统计是通过设备驱动器维持的。对于磁盘,平均传输速度是通过使用活跃时间核传输信息 数目决定的。而活跃时间百分比则是从
6、报告期间驱动器忙的时间量计算出来的。5.sar sar 命令报告CPU 的使用情况,I/O 以及其它 系统 行为。sar命令可以收集,报告以及保存系名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -统行为 信息。如果没有指定输入文件,则sar 调用 sarc 命令访问 系统 数据。用户可用让cron 命令运行两个shell 脚本(/usr/lib/sa/sa1 和/usr/lib/sa2)以提供日统计和报表。在 crontab 文件/var/spool/cron/crontabs/adm中包括了一些样本节,用于示范cron 要在何时运行这些 shell 脚本。以这种方式收
7、集到的数据对于确定系统 的时间周期特征和决定峰值使用时间是很有用的。但要注意的是,sar 命令自己运行时会产生相当数量的读写。因此最好在没有工作量的情况下运行 sar 统计,看看sar 对总的统计数字有多大的影响。6.topas topas 命令用于监控各种系统 资源,如 CPU 的使用情况,CPU 事件和队列,内存和换页空间的使用,磁盘性能,网络性能以及NFS 统计等。它还会报告指派给不同W LM 类的进程对 系统资源的消耗情况。它还能报告系统 中最热门的进程和工作量管理 器(WLM)的热门类。有关WLM 类信息 只有在WLM 激活时才会显示。topas 命令将热门进程定义为那些使用大量CP
8、U 时间的进程。topas 命令没有作日志的选项,所有信息 都是实时的。7.truss truss 命令跟踪一个进程的系统 调用、所接收的信号以及招致的机器错。要检查的应用程序可在 truss 命令的命令行中指定,也可将truss 命令挂在一个或多个已经在运行的进程上。8.svmon svmon 命令用于显示当前内存的状态。其可以捕捉和分析虚拟内存的快照信息,所有的统计都是以 4k 内存页面为单位进行的。3系统 利用率统计脚本程序1.统计程序的简介此 系统 利用率统计脚本程序由stat.sh、setup.sh 组成,仅在 AIX 4.3.3与 5.2环境中测试通过,尚不支持其他UNIX服务器。
9、推荐将两脚本置于/stat 目录,确保root对两文件具有执行权限(cd/stat;chmod 755*.sh)。可运行setup.sh 脚本,此脚本将直接在root 的 crontab 中添加一项。每晚 23:55 执行 stat.sh。脚本默认输出到/tmp/stat 目录,result.lst 为日均统计值,输出格式为“日期 内存日均使用率%CPU 每日峰值%CPU 日均使用率%”每月统计量根据月中每日数据平均得出,每月 1 号凌晨产生上月统计数据并输出至report.lst。脚本中关于crontab、awk 的使用说明及 shell 编程的方法请查阅相关技术 文档。2.setup.sh
10、 脚本在 系统 的命令行中执行setup.sh,将/stat/stat.sh 添加到 root 用户的 cron 定时作业项中,添加文件名为/var/spool/cron/crontabs/root。否则报出定时作业已经存在。代码如下:#!/usr/bin/ksh FNAME=/stat/stat.sh CPATH=/var/spool/cron/crontabs/root -f$FNAME|(echo FILE:$FNAME NOT FOUND!;exit 1)if grep$FNAME$CPATH=;then echo 55 23*$FNAME /dev/null 2&1$CPATH el
11、se echo The entry exists in$CPATH!fi 3.stat.sh 脚本此脚本使用AIX 提供的两个重要系统 性能工具vmstat 和 svmon 分别收集cpu 和内存的一整天的运行统计数据。为了不影响系统 的运行,设定为在定时作业cron 中每 60 秒执行一次,全天24 小时运行,并将数据保存到cpu.日期和mem.日期文件中,以便于当天23:55 分运行后使用名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -awk 工具进行一天的统计计算。众所周知,awk 进行文本处理是逐行处理的,所以只需要设置计数器cnt 变量进行累加以便于计算 cp
12、u 和内存的平均利用率。我们以内存平均利用率的算法进行说明,其他算法的产生与其相类似。内存平均利用率的算法为:设置 cnt、delta、tbase、base变量初始为零,cnt 为行计数变量,delta 保存内存使用变化量,tbase 为 cron 时间点上内存使用量,base 为总内存量。从 mem.日期文件第一行开始,如果base 为 0,则将$2、$3 域的值赋给base 和 tbase。然后进行cnt+下一行处理,即将新时间点上的内存使用量减去上一时间点的内存使用量,并将结果赋给delta 变量自加:delta+=$3-tbase 直至最后一行,进行100*(tbase+delta/c
13、nt)/base即可得到当天的内存平均使用率了。程序的代码如下:#!/usr/bin/ksh DDIR=/tmp/stat/data -d$DDIR|mkdir-p$DDIR RFILE=/tmp/stat/result.lst PFILE=/tmp/stat/report.lst#get old date OFILE=date+%y%m%d OMON=date+%y%m#produce report line for yestoday:DATE MEMAVG CPUPEAK CPUAVG if -f$DDIR/mem.$OFILE-a-f$DDIR/cpu.$OFILE;then awk B
14、EGINcnt=0;delta=0;tbase=0;base=0/memory/if(base=0)base=$2;tbase=$3;cnt+;delta+=$3-tbaseENDif(cnt0)printf(%.1f,100*(tbase+delta/cnt)/base)$DDIR/mem.$OFILE|read MEMAVG awk BEGINcnt=0;cidmin=100;cidsum=0/0-9$/if($160)printf(%.1ft%.1f,100-cidmin,100-cidsum/cnt)$DDIR/cpu.$OFILE|read CPUPEAK CPUAVG echo$O
15、FILEt$MEMAVGt$CPUPEAKt$CPUAVG$RFILE fi#wait till tomorrow NFILE=date+%y%m%d while$OFILE=$NFILE do sleep 60 NFILE=date+%y%m%d done#clear the old stat data file find/tmp/stat/data-type f-ctime+31|rm-fnew stat vmstat 60 1430$DDIR/cpu.$NFILE&名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -svmon-G-i 60 1430$DDIR/m
16、em.$NFILEproduce the month report -f$PFILE|echo#MONTHtMEMAVGtCPUMAXtCPUAVG$PFILE if expr$NFILE-$OFILE-gt 1-a-f$RFILE;then grep$OMON$RFILE|awk BEGINcnt=0;masum=0;cmsum=0;casum=0 cnt+;masum+=$2;cmsum+=$3;casum+=$4 ENDif(cnt0)printf(%.1f%t%.1f%t%.1f%,masum/cnt,cmsum/cnt,casum/cnt)|read MAVG CMAX CAVG echo$OMONt$MAVGt$CMAXt$CAVG$PFILE fi 4.总结综上所述,在unix 系统中,提供了非常强大的系统 监控工具。可利用这些工具并结合shell脚本的便利,编制非常方便实用的监控程序,并得到及时详细的系统 性能统计 信息。系统管理 员可根据这些数据,利用系统 性能的调制工具,例如fdpr、schedtune、vmtune 等,对 系统 的内核参数作出逻辑资源上的调整或者对硬件资源升级,以此保障应用系统 的安全稳定运行。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -