
| 出版日期:2000-10-01 总期号:164 本年期号:10 |
|
检测影响UNIX系统性能的方法
高宏权 在金融、邮电、电力等较大行业的计算机应用中,开放式的UNIX操作系统占主导地位。随着应用的扩展和业务量的增加,影响系统性能的瓶颈会不断出现,系统性能有时会急剧下降。这就需要系统管理员及时检测出影响系统性能的瓶颈所在,调整配置。现在介绍一些性能检测中的常用方法供大家参考。 通常系统瓶颈出现在内存、CPU、磁盘或网络等系统资源上。系统性能下降一般由以下几种情况引起: (1)硬件配置不足。 (2)系统内核设置不当。 (3)应用程序代码效率低下。 (4)网络带宽不足或拓扑结构不当或网络资源位置安置不当。 有些工具可用于获得基本的系统性能统计信息。其中,一些用于显示操作系统和资源的使用情况,另一些用于分析程序对系统资源的使用情况,还有一些用于检查网络资源和网络拓扑结构。下面介绍一些常用的基本工具: 1.用vmstat检查虚拟内存,用swap看交换空间的状况 vmstat命令执行结果中memory下的一组数据(avm:活动页面数;fre:空闲页面数)给出了当前活动状态的页面数以及空闲页表中的可用页面数。根据page组下的数据(re:收回页数;pi:调出页数;po:调入页数;fr:空闲页数;sr:要换出的页数),可以检查调页和交换情况。如果空闲页表中的页面数一直很低而且有大量的调页活动,那么物理内存不足,应增加内存。如果被换入换出的页面很多,可以用iostat命令确定是否某个磁盘一直在进行换入或换出活动。如果这样则应重新安排交换空间。可能的话,应把调页文件分布到由不同控制器控制的磁盘上。 swap命令中的-l选项可以显示所有交换空间的状态(不包含物理存储器形式的交换空间)其输出有五列(swapfile:交换空间路径;dev:主/次设备号;surplo:交换区下限;blocks:交换数;free:未分配块数),其块单位为512字节。用-S选项可显示全部交换空间使用和可用性的总结性信息(包括物理存储器形式的交换空间)。其输出有四列(allocated:分配给恢复支持使用的交换空间,reserved:已声明可能使用的交换空间;used:已经或可能被使用的交换空间;available:可分配和保留的交换空间),其块单位为1024字节。 2.用df看磁盘空间,用iostat看磁盘I/O 用df命令可以看磁盘中各文件系统的使用情况(Filesystem:文件系统设备位置;x-blocks:每块x字节的总块数;Used:已使用块数;Available:剩余块数;Capacity:空闲空间百分比;Mounted On:文件系统的目录)。当磁盘中某个文件系统的空闲空间少于25%时,系统对该文件系统的操作性能将受影响。这时就需要系统管理员清理文件或重新分配文件系统空间。因此,许多系统管理员设置了cron任务,定时分析df的输出,如果有超限现象则向系统管理员发出警告。 对于有较多用户的系统,可以用quotaon命令激活quota系统并用edquota命令为用户设定限额。这样将有助于减少文件系统空闲空间超限现象的发生。Iostat命令可以查看磁盘I/O的情况(disk:磁盘名;r/s:每秒读次数;w/s:每秒写次数;Kr/s:每秒读的千字节数;Kw/s:每秒写的千字节数;wait:等待队列的长度;actv:被服务的平均事务数;svc-t:平均服务的毫秒数;%w:事务等待的时间百分比;%b:磁盘忙的时间百分比)。 访问频度高的磁盘通常事务等待时间较长等待队列也较长。如果可能,应将访问频度高的磁盘中的一部分文件转移到另一个磁盘中。如果访问频度高的磁盘与其他磁盘共享一个控制器,则应使其独享一个控制器。如果尚未使用RAID磁盘系统则改用RAID磁盘系统可使磁盘I/O性能得到较大提高。由于RAID磁盘系统普遍采用磁盘分带技术将数据流分若干块散布到几个磁盘中,可同时应用多个磁盘和控制器。因此,可使I/O吞吐量有较大提高。 3.用mpstat看CUP使用情况 mpstat命令可以看到在指定的时间间隔里每个CPU的使用情况(CPU:处理器编号;minf:小错误;mif:严重错误;xcal:处理器间的调用;intr:中断;ithr:线程中断;csw:线索切换;icsw:被动线索切换;migr:线程迁移;smtx:互斥旋转锁;srw:读/写旋转锁;syscl:系统调用;usr:用户时间百分比;sys:系统时间百分比;wt:等待时间百分比;idl:空闲时间百分比)。其中,usr、sys、wt、idl等几项数据在vmstat、iostat、sar等命令的输出中也可以看到。当所有CPU的idl值都较大时,则瓶颈不在CPU。 4.用sar统计一段时间中系统资源的使用情况 用sar命令必须先启动系统的记帐功能。sar根据系统记帐记录对指定时间范围内的系统活动情况做统计报告。报告可以针对某一种系统资源,既可以是磁盘管理也可以是cpu利用或内存管理等等。由于sar命令的选项和输出结果繁多,这里不再祥述。 一般,在/usr/lib/acct目录下有许多命令,用这些命令可以通过系统的记帐记录对系统利用率进行详细分析,还可以对磁盘和进程的使用,以及连接时间的使用率进行分析。 5.用ps、top、uptime得到某一时刻的系统性能情况 用ps命令可以得到某一时刻系统中各进程的运行情况(USER用户、PID进程号、%CPU占用CPU情况、%MEM使用内存情况、VSZ使用虚拟内存情况、RSS实际使用的物理内存、TTY终端号、STAT进程状态、TIME占用CPU时间、COMMAND对应的命令)。其中,RSS值常会引起误导,因为它包含了由多个进程共享的那部分内存。如果某个不重要的进程占用CPU时间的百分比很高,可以用nice或renice命令暂时降低该进程的优先级。有些系统的一些内核进程用ps命令输出时,TIME列显示的CPU时间很大。这个数字有时不是很正确,因为在某些系统中常常把空闲的CPU时间也赋给一些内核进程。用top命令可以得到某一时刻的系统性能情况及消耗CPU资源最多的15个进程的信息。用uptime命令可以知道系统已运行了多长时间,以及在过去5、10、15分钟内的平均工作负载情况。 6.用timex或time看程序的执行情况 timex命令在不带参数时和time命令输出结果一致(REAL:程序的实际运行时间;USER:用户占用CPU时间;SYS:系统占用CPU时间)。但使用timex命令必须先启动系统记帐功能。如果用-P,-O或-S选项,还可以显示进程记帐数(-P)、磁盘块使用率(-O)以及与这条命令有关的总系统活动数(-S)。 7.用netstat监视网络接口 netstat命令的-i选项可以诊断网络上的性能问题,分离出错误率很高的网络设备,还可以显示主机的路由表以判断性能问题是否由某条路径中的主机所引起。用-m选项可以获得用于网络传输的内存结构的信息,包括被拒绝或推迟的存储器请求。 8.用tcpdump监视网络 tcpdump命令可以提供关于TCP/IP及相关协议的扩展信息。可以根据布尔表达式用该命令显示或捕获报文头信息。此命令的命令行开关和语法比较复杂,输出格式变化也较大。这里就不再祥述了。 9.用nfstat监视NFS 对于使用网络文件系统(NFS)的机器,用nfstat命令可以显示客户机和服务器的NFS统计信息。具体的输出结果由UNIX版本所确定,但一般都包括超时、重传、等待错误以及有关cache命中和失效的信息。 通过以上命令或方法找出系统瓶颈后一般应该先检查相关的内核设置是否合理。如果内核调整后未有改善,则必须增加相应的硬件资源,同时调整相关的内核设置。 由于UNIX系统种类繁多系统复杂,导致系统性能下降的原因也错综复杂,许多UNIX系统都有自己专用的性能管理工具,如:Digital UNIX的性能管理器4.0D、SUN公司的 SE Tookit 和 Virtual Adrian等等。这里,我简单地介绍了一些通用的检查UNIX系统性能的工具和方法以期能抛砖引玉。 |
|||||||||||||||