用户操作
[即时聊天] [发私信] [加为好友]
heiyelurenID:heiyeshuwu
892427次访问,排名39好友93人,关注者144
既然决定远行,便只顾风雨兼程。
heiyeshuwu的文章
原创 282 篇
翻译 3 篇
转载 209 篇
评论 517 篇
heiyeluren的公告

联系方式:


访问统计: free hit counter code
FeedSky订阅:
FeedSky订阅
最近评论
heiyeluren:注册发帖后才能下载。。。。不知道论坛咋设置。。。 :-)
kong:注册了也不能下载.....提示您的操作将会导致您的 金钱 低于系统规定的下限值 0
赵舜尧:感谢博主的分享,期待你的“下章接着讲述数据分割和散列方面的内容”
adobe cs4:呃,LAMP经典应用……
俺的
Adobe cs4也是
bluehouse1985:Linux 环境下的多核调试
— Intel + Totalview 强强联合!
目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Total……
文章分类
收藏
    相册
    技术图片
    搜索引擎
    ::eYou::
    kevin world
    lewis - 老吕
    qyb - BT的花
    Realzay的blog
    叶金荣
    天堂地狱鬼-dulao5's Blog
    沙漠之周
    狐狸糊涂
    老韩
    與子觀化
    ::Yahoo::
    glemir’s blog
    happy_fish - 分布式文件系统FastDFS
    LinZi's Blog
    Rainx
    stauren
    互联网,请记住我 - 162同学的技术博客
    冰的河
    小蚂蚁同学滴测试博客
    张彪同学
    随网之舞 - kaven的DHTML博客
    风雪之隅
    ::朋友::
    【推荐】中文分类网
    DDR的博客
    kevin world
    miky
    PHPCup.cn论坛
    俺兄弟的blog
    冰河的技术博客:心随风动
    好旅网
    小少的技术博客
    无尘居
    晋陵路人的Blog
    李天华同学滴技术博客
    沙狐部落
    轻量级的editor
    ::网友::
    blankyao同学
    Code & Stock.
    LionD8的Blog
    MooPHP - 轻量级PHP框架
    Phzzy
    张贺同学的博客
    技术大牛老余的博客
    抚琴居
    旋木木同学滴博客
    矛盾网
    程序人生
    邢红瑞的blog
    阿健的博客
    :PHP博客:
    .: Easy style :.
    [琴剑楼]
    CoolCode.cn
    Haohappy的Blog
    Hightman
    iwind的blog
    Javascript开发站
    JD Space
    Nio's Weblog
    Open Source PHP
    PHP面对对象
    SourceForge.net
    trip的专栏
    UGIA.cn
    windix's blog
    Windix's Weblog
    一个藏袍
    俊麟 Michael`s blog
    偶然的blog
    刘敏的blog
    大龄青年的Blog
    廖宇雷的blog
    懒猫开始新生活blog
    某人的栖息地
    王春生的博客
    神仙
    :牛人blog:
    DBA notes
    http://blog.csdn.net/tingya/
    侯捷网站
    孟岩
    搜索引擎研究
    方舟
    王咏刚的BLOG
    竹笋炒肉
    荣耀
    车东[Blog^2]
    透明思考
    陈硕的Blog
    DHTML
    DHTMLGoodies
    FCKEditor
    Google Code
    Google Web Toolkit
    HTML Goodies
    HTML.it
    HTMLAre
    HTMLdog
    JavaScript Kit
    jQuery
    KindEditor
    Prototype
    TinyMCE
    W3 Schools
    Yahoo JavaScript Developer Center
    Yahoo! Developer Network
    Yahoo! UI Library (YUI)
    网页设计师Web标准
    Java国内站
    ChinaJavaWorld.com技术论坛
    IBM developerWorks 中国: Java
    Java中文站
    Java开源大全
    Java爱好者
    JR - Java翻译站
    J道-JDON
    Matrix: 与Java共舞
    中国Java开发网
    中文java技术网
    PHP国内站点
    CSDN PHP论坛
    Discuz!
    FleaPHP
    Google--PHP用户组
    IBM DeveloperWorks
    JavsScript技术讨论
    Nirvana Studio
    OpenPHP.cn
    PHPChina
    TiM Club
    中文 PFC 1.0 手册--PHP5的开发包
    中文 PFC 1.0 手册--PHP5的开发包
    中文PHP网
    太平洋--PHP开发区
    爱MySQL
    超越PHP
    PHP国外站点
    ADOdb
    Agavi Framework
    Cake PHP
    MySQL Performance Blog
    MySQL Performance Blog
    Nonaweb
    PEAR
    PECL
    PECL Windows
    PHP Builder
    PHP Classes
    PHP Classes
    PHP New Download
    PHP Security Consortium
    php.MVC
    php.MVC
    PHPkitchen(OO & MVC)
    phpPatterns
    PHP国外图书下载
    smart template
    Smarty
    SourceForge.net
    Symfony Framework
    Zend
    Zend Framework
    Unix C/C++
    Free Gentux
    周立发的blog(Linux C)
    Unix/Linux
    BSD智库
    ChinaUnix
    FreeBSDChina
    FreeLAMP
    IBM开发者Linux专区
    Linux Byte
    LinuxKit
    LinuxTS
    Linux伊甸园
    Linux技术中坚站
    Linux非常空间
    Love Unix
    NetBSD&OpenBSD中文用户组
    NetBSD中国社区
    Oracle中国用户讨论组
    OurLinux
    Unix中文
    Unix中文
    Unix中文宝库
    中国Linux公社
    中国Unix用户技术论坛
    中文FreeBSD用户组
    永远的Unix
    炎黄角马
    程序设计
    CSDN
    IBM开发者中心
    Microsoft TechNet: 主页
    MSDN 中文网站
    PHP中文站
    Sun技术社区
    中国IT认证实验室--企业应用技术
    中国协议分析网
    喜悦国际村
    太平洋电脑网---开发特区
    实用网站
    veBook(国外大量免费图书下载网站)
    Whois.net
    中国Web信息博物馆
    中国互联网络信息中心whois查询
    服务器系统信息查看
    网络安全
    AnySide.com
    CGI Secutiry
    K-OTik Security Monitoring
    Linux Security
    Packet Storm Security
    PHP Secure
    RFC中文文档索引
    Safemode.org
    SecuriTeam.com
    Security Corporation
    SecurityFocus
    SecurityTracker
    Zone-h (区域黑客,每天公布各国被黑的网站)
    中华安全网
    中国信息安全组织
    国家计算机网络应急处理中心
    安全天使
    安全焦点
    幻影旅团
    绿盟科技
    网络安全评估中心(cnns )
    在线手册
    Apache2.0中文文档
    Beyond Linux From Scratch
    Debian参考手册
    FreeBSD Porter 手册
    FreeBSD使用手册
    Linux C函数中文参考手册
    MySQL 4.1.0 中文参考手册
    NetBSD在线手册
    OpenBSD在线FAQ
    PHP ADODB 1.99版手册中文翻译(Tripc)
    PHP中文手册(国内)
    PHP中文手册(国外)
    PostgreSQL中文文档
    Red Hat Linux 9入门指南
    Red Hat Linux 9安装指南
    Red Hat Linux 9定制手册
    中国OSS技术手册中心
    技术文档手册中心-ChinaUnix
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 [转] Linux下性能监控工具介绍收藏

    新一篇: [转] 初尝利用HAProxy实现负载均衡 | 旧一篇: [转] 使用GDB和Valgrind调试C程序

    本章解释如何使用适用于Linux的大量性能工具及每个工具中信息的意义。即使已经使用top或者sar,也可能从本章学到相关知识。

    应该养成使用这些工具的习惯。当然要知道如何诊断性能问题,但也应该定期寻找可能指示问题的关键指标的变化。可以使用这些工具衡量新应用程序对性能的影响。就如同查看车内的温度表一样,要注意Linux系统的性能指标。本章介绍的工具有:

    ·   top

    ·   sar

    ·   vmstat

    ·   iostat

    ·   free

    可以作为普通用户运行这些工具。它们都利用/proc文件系统得到它们的数据。这些性能工具和几个rpm一起提供。procps rpm提供top、free和vmstat。sysstat rpm提供sar和iostat。

    top命令是一个优秀的交互式实用工具,用于监视性能。它提供关于整体Linux性能的几个概要行,但是报告进程信息才是top真正的长处。可以广泛自定义进程显示,也可以添加字段,按照不同指标排序进程列表,甚至从top注销进程。

    sar实用工具提供监视每一事件的能力。它至少有15个单独的报告类别,包括CPU、磁盘、网络、进程、交换区等等。

    vmstat命令报告关于内存和交换区使用的广泛信息。它也报告CPU和一些I/O信息。iostat报告存储输入/输出(I/O)统计资料。

    这些命令覆盖许多相同的地方。本节讨论如何使用这些命令并解释每个命令产生的报告,并不讨论所有15种sar语法,但是介绍了其中最常见的。

    3.1  top

    top命令是最流行的性能工具之一。大多数系统管理员运行top查看Linux和UNIX系统的运行情况。top实用工具提供一种监视进程和Linux整体性能的理想方法。将Linux进程称作任务更准确,但是在本章中我们还是将它们称作进程,因为这个工具也这样称呼它们。1普通用户和root用户都可以运行top。图3-1显示一个空闲系统的典型top输出。

    0131855158 1-15
2.2.6

    图3-1  top输出

    top显示有两个部分。大约前三分之一显示关于Linux的整体信息,其余行为各个进程信息。如果扩展窗口则显示更多进程而填充整个屏幕。

    更全面的Linux信息可以通过使用top之外的几个命令来得到。不过,通过一个命令在一个屏幕上显示所有信息比较理想。第一行显示最近1分钟、5分钟和15分钟的负载平均值。负载平均值表示在CPU上运行或者等待运行多少进程。uptime命令也可以用来显示负载平均值。接下来是进程信息,之后是CPU、内存和交换区。内存和交换区信息与free命令输出类似。在我们确定内存和CPU使用之后的下一个问题是哪些进程正在使用它。

    大部分进程信息也可以通过ps命令得到,但是top提供一种更易于阅读的格式。最有用的是用于提供帮助的h,它列出top的其他交互式命令。

    3.1.1  添加和移除字段

    字段可以从显示中添加或移除。进程输出可以按照CPU、内存或者其他指标排序。这是一个查看什么进程抢夺内存的理想方法。各个Linux发布版本的top语法和交互式选项不同,帮助命令可以快速列出什么命令可用。有许多交互式选项可用,用户应该花费一些时间来试验它们。

    图3-2显示Red Hat Enterprise Linux ES release 3的帮助屏幕。

    0131855158 1-15
2.2.6

    图3-2  top的帮助屏幕

    f命令用来从top输出中添加或者移除字段。图3-3是一个Red Hat Enterprise Linux ES release 3的帮助屏幕,显示什么字段可以添加。

    0131855158 1-15
2.2.6

    图3-3  top添加/移除字段的屏幕

    图3-4显示一个SUSE Linux 9.0 top的帮助屏幕,可见它们提供的命令差别非常大。

    0131855158 1-15
2.2.6

    图3-4  SUSE top的帮助屏幕

    3.1.2  解释输出

    让我们研究top信息的意义,以top的如下输出为例:

    top输出的第一行显示负载平均值信息:

    这个输出与uptime的输出类似。从中可看到Linux已经运行时间、当前时间和用户数量,以及1分钟、5分钟和15分钟负载平均值。接下来显示进程概要:

    我们看到总共有73个进程,其中72个进程正在休眠,一个进程正在运行,没有僵化进程或者被停止的进程。当一个进程退出并且它的父进程没有通过wait(2)或者waitpid(2)函数等待它时,它就会成为僵化进程。这通常是由于父进程在它的子进程之前退出造成的。不同于进程表中的项,僵化进程不使用资源。停止的进程是已经向它发送STOP信号的进程。更多信息,请参见signal(7)手册页。

    接下来是CPU信息:

    CPU行描述CPU如何使用它们的CPU周期。top命令报告CPU在用户或者内核模式、运行良好进程以及处在空闲状态时所花费时间的百分比。iowait列显示没有进程在CPU上运行时,处理器等待I/O完成的时间的百分比。irq和softirq列表示处理硬件和软件中断所花费的时间。早于2.6版本的Linux内核不报告irq、softirq和iowait。

    接下来是内存信息:

    前三个指标提供内存使用的概要,列出了总的可用内存、已使用内存和自由内存,它们都是确定对于Linux内存是否足够所需信息。

    接下来五个指标标识已使用的内存如何分配。shrd字段显示共享的内存使用,buff是缓冲使用的内存。分配给内核或者用户进程的内存可以处在三种不同状态:活动(active)、不活动脏(inactive dirty)和不活动干净(inactive clean)。活动在top中用aotv表示,表示该内存最近被使用。不活动脏在top中用in_d表示,表示该内存最近没有使用,可以回收。要回收内存,必须将它的内容写到磁盘,这个进程命名为“清洗”,也可称作内存的第四种临时状态。一旦被清洗,不活动脏内存成为不活动干净内存,在top中用in_c表示。由Norm Murray和Neil Horman合著的Understanding Virtual Memory in Red Hat Enterprise Linux 3是一本优秀的参考书,网址为http:people.redhat.com/nhorman/papers/ rhel3_vm.pdf。

    接下来是交换区信息:

    av字段是可用的交换区总量,之后是已用数量和自由数量,最后是内核用于缓存的内存数量。

    top显示的其余部分是进程信息:

    top显示尽可能多的能适合屏幕的进程。top(1)手册页中提供了字段说明的描述。表3-1提供了这些字段的概要。

    表3-1                                                      top进程字段

    字    段

    说    明

    PID

    进程id编号

    USER

    进程所有者的用户名

    PRI

    进程的优先级

    SIZE

    进程大小,包括它的代码、栈和数据区域,以千字节为单位

    RSS

    进程使用的内存总量,以千字节为单位

    SHARE

    进程使用的共享内存数量

    STAT

    进程的状态,通常R表示运行,S表示休眠

    %CPU

    自从最近的屏幕更新以来,这个进程使用的CPU百分比

    %MEM

    这个进程使用的内存百分比

    TIME

    自从进程启动以来,这个进程使用的CPU时间量

    CPU

    最近执行进程的CPU

    COMMAND

    正在执行的命令

    3.1.3  保存自定义

    一个非常好的top功能是保存当前配置。可以使用交互式命令s任意更改显示,然后按w保存该视图。

    top在用户的主目录中写入一个.toprc文件,用来保存配置,以便下一次这个用户启动top时使用相同的显示选项。

    top也寻找默认配置文件/etc/toprc。这是一个全局配置文件,当任何用户运行实用工具时,top将读取该文件。这个文件可以使top以安全模式运行,也可以设置刷新延迟。安全模式阻止非root用户注销或者更改进程的正常值,也阻止非root用户更改top的刷新值。Red Hat Enterprise Linux ES release 3的一个/etc/toprc示例文件如下所示:

    s表示安全模式,3定义三秒钟刷新间隔。其他发布版本可能有不同的/etc/toprc格式。注销进程是一个非常实用的功能。如果用户有一个失控的进程,通过top命令可以轻易找到并注销它,具体步骤为:运行top,通过u命令显示用户的所有进程,然后使用k注销它。top不只是一个优秀的性能监视工具,它也可以用来通过注销那些产生问题的进程从而改进性能。

    3.1.4  批处理模式

    top也可以以批处理模式运行。尝试运行以下命令:

    -n 1告诉top只显示一次迭代,-b选项表示以适合写入文件的文本形式输出或者定向到另一个程序(例如less)。类似以下两行脚本的命令可以顺利完成cron工作:

    可以将它添加到crontab,并每隔15分钟收集一次输出。

    通过批处理可以轻松完成所有任务,无需用户的干涉。所有进程都被列出,输出并不是每5秒钟刷新一次。如果用户的主目录中存在一个.toprc配置文件,那么它用来格式化显示。以下是在一个多CPU Linux服务器上运行top批处理模式的输出。注意,其中没有显示top输出的所有258个进程。

    现在读者可能明白了为什么top会如此流行。top的交互式本质和容易自定义输出的能力使它成为诊断问题的优秀工具。

     

    3.2  sar

    sar是一个优秀的一般性能监视工具,它可以输出Linux所完成的几乎所有工作的数据。sar命令在sysetat rpm中提供。示例中使用sysstat版本5.0.5,这是稳定的最新版本之一。关于版本和下载信息,请访问sysstat主页http://perso.wanadoo.fr/sebastien.godard/。

    sar可以显示CPU、运行队列、磁盘I/O、分页(交换区)、内存、CPU中断、网络等性能数据。最重要的sar功能是创建数据文件。每一个Linux系统都应该通过cron工作收集sar数据。该sar数据文件为系统管理员提供历史性能信息。这个功能非常重要,它将sar和其他性能工具区分开。如果一个夜晚批处理工作正常运行两次,直到下一个早上才会发现这种情况(除非被叫醒)。我们需要具备研究12小时以前的性能数据的能力。sar数据收集器提供了这种能力。有许多报告语法,我们首先讨论数据收集。

    3.2.1  sar数据收集器

    sar数据收集通过/usr/lib/sa中的一个二进制可执行文件和两个脚本来完成。sar数据收集器是一个位于/usr/lib/sa/sadc的二进制可执行文件。sadc的工作是写入数据收集文件/var/1og/sa/。可以为sadc提供几个选项。常见语法是:

    间隔是取样间的秒数,iterations是要取得的样本数量,file name定义输出文件。简单的sadc语法是/usr/lib/sa/sadc 360 5/tmp/sadc.out。这个命令在5分钟间隔取得5个样本并将它们保存在/tmp/sadc.out。我们应该定期收集样本,因此需要一个由cron运行的脚本。应该把样本放在一个有意义的地方,如在前一节中使用top脚本时那样。sysstat rpm提供/usr/lib/sa/sa1脚本来完成所有这些事情。

    sa1(8)手册页比sa1脚本本身要长得多。/usr/lib/sa/sa1是一个非常简单的脚本,使用语法sadc -F -L 1 1 /var/log/sa/sa##来运行sadc,其中##是某月的日期。较老版本的sa1使用date+.%Y_%m_%d的输出作为文件后缀。如果需要,可以使用-F选项使sadc强制创建输出文件。-L在写入输出文件之前锁定它,以防止两个sadc进程同时运行时损坏该文件。较老版本的sadc没有-L选项,因此sa1脚本执行手工锁定。sa1脚本的选项只是样本之间的间隔和取样迭代的次量。cron文件(/etc/cron.d/sysstat)和sysstat一起提供,在各sysstat版本之间它有所不同。以下是5.0.5版本的sysstat的条目:

    可见,在sysstat rpm安装之后,sadc开始取得样本。sysstat主页是http://perso.wanadoo.fr/ sebastien.godard/2。文档链接提供以下类似2006年1月14日的crontab方案:

    Sebastien Godard的网站的crontab示例建议周一至周五从早晨8点到下午6点每10分钟取一次样本,其他时间每小时取得一个样本(注意,crontab注释为下午7点,但实际上是18:00,即下午6点)。如果/var中的磁盘空间足够,可以每天都每小时的每10分钟取样一次。如果周末备份较慢,每小时一次sadc取样可能帮助不大。

    现在让我们研究更流行的报告语法。

    3.2.2  CPU统计数据

    sar -u输出显示CPU信息。-u选项是sar的默认选项。该输出以百分比显示CPU的使用情况。表3-2解释该输出。

    表3-2                                                      sar -u字段

    字    段

    说    明

    CPU

    CPU编号

    %user

    在用户模式中运行进程所花的时间

    %nice

    运行正常进程所花的时间

    %system

    在内核模式(系统)中运行进程所花的时间

    %iowait

    没有进程在该CPU上执行时,处理器等待I/O完成的时间

    %idle

    没有进程在该CPU上执行的时间

    这些看起来应该比较熟悉,它和top报告中的CPU信息内容相同。以下显示输出格式:

    其中的5 10导致sar以5秒钟间隔取得10个样本。任何sar报告的第一列都是时间戳。

    我们本来可以研究使用-f选项通过sadc创建的文件。这个sar语法显示sar -f/var/log/ sa/sa21的输出:

    在多CPU Linux系统中,sar命令也可以为每个CPU分解该信息,如以下sar -u -P ALL 5 5输出所示:

    3.2.3  磁盘I/O统计数据

    sar是一个研究磁盘I/O的优秀工具。以下是sar磁盘I/O输出的一个示例。

    第一行-d显示磁盘I/O信息,5 2选项是间隔和迭代,就像sar数据收集器那样。表3-3列出了字段和说明。

    表3-3                                                       sar -d字段

    字    段

    说    明

    DEV

    磁盘设备

    tps

    每秒传输数(或者每秒IO数)

    rd_sec/s

    每秒512字节读取数

    wr_sec/s

    每秒512字节写入数

    512只是一个测量单位,不表示所有磁盘I/O均使用512字节块。DEV列是dev#-#格式的磁盘设备,其中第一个#是设备主编号,第二个#是次编号或者连续编号。对于大于2.5的内核,sar使用次编号。例如,在sar -d输出中看到的dev3-0和dev3-1。它们对应于/dev/hda和/dev/hdal。请看/dev中的以下各项:

    /dev/hda有主编号3和次编号0。hda1有主编号3和次编号1。

    3.2.4  网络统计数据

    sar提供四种不同的语法选项来显示网络信息。-n选项使用四个不同的开关:DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,SOCK显示套接字信息,FULL显示所有三个开关。它们可以单独或者一起使用。表3-4显示通过-n DEV选项报告的字段。

    表3-4                                                  sar -n DEV字段

    字    段

    说   明

    IFACE

    LAN接口

    rxpck/s

    每秒钟接收的数据包

    txpck/s

    每秒钟发送的数据包

    rxbyt/s

    每秒钟接收的字节数

    txbyt/s

    每秒钟发送的字节数

    rxcmp/s

    每秒钟接收的压缩数据包

    txcmp/s

    每秒钟发送的压缩数据包

    rxmcst/s

    每秒钟接收的多播数据包

    以下是使用-n DEV选项的sar输出:

    关于网络错误的信息可以用sar -n EDEV显示。表3-5列出了显示的字段。

    表3-5                                                sar -n EDEV字段

    字    段

    说    明

    IFACE

    LAN接口

    rxerr/s

    每秒钟接收的坏数据包

    txerr/s

    每秒钟发送的坏数据包

    coll/s

    每秒冲突数

    rxdrop/s

    因为缓冲充满,每秒钟丢弃的已接收数据包数

    txdrop/s

    因为缓冲充满,每秒钟丢弃的已发送数据包数

    txcarr/s

    发送数据包时,每秒载波错误数

    rxfram/s

    每秒接收数据包的帧对齐错误数

    rxfifo/s

    接收的数据包每秒FIFO过速的错误数

    txfifo/s

    发送的数据包每秒FIFO过速的错误数

    SOCK参数显示IPCS套接字信息。表3-6列出显示的字段及其意义。

    表3-6                                                sar -n SOCK字段

    字    段

    说    明

    totsck

    使用的套接字总数量

    tcpsck

    使用的TCP套接字数量

    udpsck

    使用的UDP套接字数量

    rawsck

    使用的raw套接字数量

    ip-frag

    使用的IP段数量

    sar可以产生许多其他报告。我们有必要仔细阅读sar(1)手册页,查看是否有自己需要的其他报告。

     

    3.3  vmstat

    vmstat命令也是显示Linux性能指标的方法,它报告了许多信息,理解这些信息有一定难度。

    输出分为6个类别:进程、内存、交换区、I/O、系统和CPU。与iostat类似,第一个样本是从最近重新启动以来的平均值。以下是一个典型的vmstat输出:

    -m选项使内存字段以兆字节为单位显示。vmstat和许多其他性能命令一样使用取样间隔和计数参数。

    进程(procs)信息有两列。r列是可运行进程的数量,b列是阻塞进程的数量。

    内存部分有4个报告虚拟内存如何使用的字段。表3-7列出这些字段及其意义。

    表3-7                                                  vmstat内存字段

    字    段

    说    明

    Swpd

    已用的交换空间数量

    free

    自由RAM数量

    buff

    缓冲使用的RAM数量

    cache

    文件系统缓存使用的RAM数量

    接下来是交换(swap)指标。交换只是一个古老术语,但是显然不会消失。交换涉及分页读取或写入磁盘的进程所消耗的所有内存。它将显示系统达到的性能指标水平。而Linux所做的是,以小块方式按照需要对磁盘空间进行分页操作。因此,我们可能应该停止说交换到磁盘的内存,并开始说分页到磁盘的内存。对于任何一种方法,表3-8解释了相关字段。

    表3-8                                                   vmstat交换字段

    字    段

    说   明

    si

    从磁盘分页到内存的数量

    so

    从内存分页到磁盘的数量

    在交换之后是两个I/O字段。这部分提供了一个简略介绍以帮助确定Linux是否正忙于完成许多磁盘I/O。vmstat只提供两个字段,显示出入磁盘的数据量(参见表3-9)。

    表3-9                                                   vmstat io字段

    字    段

    说    明

    bi

    从磁盘读入的块

    bo

    写入磁盘的块

    系统字段提供Linux内核进行进程管理的繁忙程度的摘要。中断和上下文开关参见表3-10。上下文开关指进程移出CPU或者移入CPU。

    表3-10                                               vmstat系统字段

    字    段

    说    明

    in

    系统中断

    cs

    进程上下文开关

    最后,CPU状态信息用总CPU时间的百分比来表示,如表3-11所示。

    表3-11                                               vmstat cpu字段

    字    段

    说     明

    us

    用户模式

    sy

    内核模式

    wa

    等待I/O

    id

    空闲

     

    3.4  iostat

    iostat命令是另一个研究磁盘吞吐量的工具。和sar类似,iostat可以使用间隔和计数参数。第一个间隔的输出包含Linux总运行时间的指标。与其他性能命令比较,这可能是iostat最独特的功能。例如,以下是一个大部分时间处于空闲的系统的输出。可见,从启动以来hda设备已经读取大约9 158MB(18 755 572*512/1 024/1 024)。Blk列是512字节块。

    不使用选项,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      在输出中包括扩展的磁盘指标

    这些选项可以组合。iostat -tk 5 2的输出是:

     

     

    3.5  free

    free命令输出内存和交换信息,与top命令的作用非常相似。不使用选项,free以千字节为单位显示信息:

    free命令有少量选项,推荐使用-mt。-m开关使输出以兆字节为单位,-t开关提供一个合计行:

     

     

    3.6  小结

    如本章所示,Linux中的可用性能工具所提供的信息有大量重复,例如内存信息可以通过top、vmstat、free和sar显示。系统管理员不需要精通所有这些工具,重要的是知道如何找到并解释需要的所有性能信息而不是使用哪些工具。因此,我们推荐读者多花一些时间来熟悉这些工具及其输出。

     

     

    文章来源:http://book.csdn.net/bookfiles/331/10033113257.shtml

     

     

    发表于 @ 2008年07月07日 17:45:00|评论(loading...)|收藏

    新一篇: [转] 初尝利用HAProxy实现负载均衡 | 旧一篇: [转] 使用GDB和Valgrind调试C程序

    评论

    #美思内衣 发表于2008-07-08 21:48:23  IP: 125.34.37.*
    很不错,很全面
    #xiaobao 发表于2008-09-21 13:22:27  IP: 58.33.3.*
    非常非常实用。这些都是系统管理员必备的知识。
    #bluehouse1985 发表于2008-09-24 14:34:13  IP: 116.231.56.*
    Linux 环境下的多核调试
    — Intel + Totalview 强强联合!
    目前,在软件开发行业,各种性能优异的调试工具层出不穷。但是,它们中的绝大部分都只支持windows环境。即使能支持linux平台,操作起来也很不方便。因此,对于长期在linux上编写程序的开发人员来说,如何调试就成了一个令人头痛的问题!Intel软件 和 Totalview Debugger 正是在这种情况下应运而生!
    Intel软件可以在英特尔架构上产生出色的应用程序性能,并可以利用最新英特尔多核处理器的各项先进功能。TotalView Debugger与Intel软件的结合将会掀起一场linux下调试工具的革命!
    TotalView Debugger是一个linux平台并行环境下的调试工具,它的IDE环境、多线程(进程)调试能力、内存调试能力、集群调试能力在业界都是无与伦比的!
    XLsoft携手Intel、TotalView公司于2008年10月30日在上海举行“Linux 环境下的多核调试”免费培训讲座。我们非常荣幸地邀请您参加,并提供免费软件试用光盘!

    一、报名方式:
    电话:021-62128912/010-84492749
    Email:Marketing@xlsoft.com.cn

    二、讲座内容:
    1. Linux 平台下程序调试工具概述
    2. Intel 软件功能介绍
    3. Totalview Debugger功能介绍

    三、讲座时间:
    2008年10月30日(星期四)14:00 ~ 17:00

    四、讲座地点:
    上海青松城大酒店3楼长悦厅
    (徐家汇肇家浜路777号东安路口,距衡山路站约15分钟路程)

    四、活动详情:
    联系人:王娟
    Tel:021-62128916 Mobile: 15000262606
    E-mail:kiko.wang@xlsoft.com.cn