linux性能分析命令vmstat

本文介绍了Linux系统性能分析的方法和步骤,重点讲解了vmstat工具的使用,通过具体实例帮助读者掌握性能瓶颈定位技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

性能调优的第一步是性能分析,下面从性能分析着手进行一些介绍,尤其对linux性能分析工具vmstat的用法和实践进行详细介绍。
——————————————————————————————————————————
1.性能分析的目的
1)找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);
2)提供性能优化的方案(升级硬件?改进系统系统结构?);
3)达到合理的硬件和软件配置;
4)使系统资源使用达到最大的平衡。(一般情况下系统良好运行的时候恰恰各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如CPU过渡使用会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘IO增加和CPU开销增加)
2.影响性能的因素
1)CPU(cpu的速度与性能很大一部分决定了系统整体的性能,是否使用SMP)
2)内存(物理内存不够时会使用交换内存,使用swap会带来磁盘I0和cpu的开销)
3)硬盘(存储系统)
a.Raid技术使用(RAID0, RAID1, RAID5, RAID0+1)
b.小文件读写瓶颈是磁盘的寻址(tps),大文件读写的性能瓶颈是带宽
c.Linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好
4)网络带宽。
3.性能分析的步骤
1)对资源的使用状况进行长期的监控和数据采集(nagios、cacti)
2)使用常见的性能分析工具(vmstat、top、free、iostat等)
3)经验积累
a.应用程序设计的缺陷和数据库查询的滥用最有可能导致性能问题
b.性能瓶颈可能是因为程序差/内存不足/磁盘瓶颈,但最终表现出的结果就是CPU耗尽,系统负载极高,响应迟缓,甚至暂时失去响应
c.物理内存不够时会使用交换内存,使用swap会带来磁盘I0和cpu的开销
d.可能造成cpu瓶颈的问题:频繁执Perl,php,java程序生成动态web;数据库查询大量的where子句、order by/group by排序……
e.可能造成内存瓶颈问题:高并发用户访问、系统进程多,java内存泄露……
f.可能造成磁盘IO瓶颈问题:生成cache文件,数据库频繁更新,或者查询大表……
4.vmstat详细介绍
vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。对于 Linux 的性能分析,100%理解 vmstat 输出内容的含义,并能灵活应用,那对系统性能分析的能力就算是基本掌握了。
下面是vmstat命令的输出结果:
[root@monitor-www ~]# vmstat 1 5
procs         —————memory—————      ——swap—— ——io——  ——system——   ——cpu——
r   b    swpd     free       buff      cache   si    so    bi     bo      in    cs    us sy  id wa st
1   0    84780    909744   267428    1912076   0     0     20     94       0     0     2  1  95  1  0
1   2    84780    894968   267428    1912216   0     0      0   1396    2301 11337     8  3  89  0  0
1   0    84780    900680   267428    1912340   0     0     76   1428    1854  8082     7  2  90  0  0
1   0    84780    902544   267432    1912548   0     0    116    928    1655  7502     7  2  92  0  0
2   0    84780    900076   267432    1912948   0     0    180    904    1963  8703    10  3  87  0  0
对输出解释如下:
1)procs
a.r列表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数,就说明CPU资源不足,可以考虑增加CPU;
b.b列表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
2)memory
a.swpd列表示切换到内存交换区的内存数量(以KB为单位)。如果swpd的值不为0或者比较大,而且si、so的值长期为0,那么这种情况一般不用担心,不会影响系统性能;
b.free列表示当前空闲的物理内存数量(以KB为单位);
c.buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲;
d.cache列表示page cached的内存数量,一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,就说明cached文件数较多。如果此时IO中的bi比较小,就说明文件系统效率比较好。
3)swap
a.si列表示由磁盘调入内存,也就是内存进入内存交换区的数量;
b.so列表示由内存调入磁盘,也就是内存交换区进入内存的数量
c.一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足,需要考虑是否增加系统内存。
4)IO
a.bi列表示从块设备读入的数据总量(即读磁盘,单位KB/秒)
b.bo列表示写入到块设备的数据总量(即写磁盘,单位KB/秒)
这里设置的bi+bo参考值为1000,如果超过1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。
5)system
a.in列表示在某一时间间隔中观察到的每秒设备中断数;
b.cs列表示每秒产生的上下文切换次数。
上面这两个值越大,会看到内核消耗的CPU时间就越多。
6)CPU
a.us列显示了用户进程消耗CPU的时间百分比。us的值比较高时,说明用户进程消耗的CPU时间多,如果长期大于50%,需要考虑优化程序啥的。
b.sy列显示了内核进程消耗CPU的时间百分比。sy的值比较高时,就说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足。
c.id列显示了CPU处在空闲状态的时间百分比;
d.wa列表示IO等待所占的CPU时间百分比。wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严重。
e.st列一般不关注,虚拟机占用的时间百分比。 (Linux 2.6.11)
印染厂生产仓储信息系统 需求分析说明书 一. 系统背景 我国经济经历经多高速增长后,正处于崭新的发展阶段,人民生活水平普遍提高,国家不断加强环境保护和节能减排的政策力度。同时2008下半源自发达经济体的金融危机,愈演愈烈,已成为一场经济危机,并向全球蔓延。在这样的国际和国内经济背景下,我国经济发展面临着严峻考验,特别是以出口导向型劳动密集型产业面临的形势更为严峻:一方面劳动力、原材料、污水处理等成本上升,另一方面出口订单减少。在这种情况下,沿海某纺织印染集团公司的决策层经过分析和讨论,审时度势做出战略决策:与时俱进,调整和优化产品构,提高产品附加值、推行细化管理和集约化经营。 目前,根据集团的总体规划,将在印染分厂逐步建立一系列信息化系统,其中《生产仓储信息系统》,将实现原坯布和成品仓储管理信息化,达到细化、确化和高效化管理,达到最大限度降低仓储管理成本和提高仓储管理效率的目的。 本文将对《生产仓储信息系统》的实际需求进行分析,并制定出解决方案。 二. 系统目标 《生产仓储信息系统》主要实现以下目标:  实现坯布库存摆放和出入的信息化  实现灵活多样查询和统计  实现有效可靠的用户权限管理和系统的安全性 三. 业务描述 对纺织布匹进行印染加工是印染企业主要生产内容。布匹是印染厂的最主要生产物资,未经印染加工布匹被称为坯布(即纺织企业出厂产品),经过印染企业加工的布匹被称为成品布(即直接可在市场上销售的布匹)。 坯布进入印染厂后,首先存放在坯布仓库中,需要生产时,从坯布库中出库,供生产使用,本系统主要内容为坯布库的出入库管理和位置摆放管理。 (一) 坯布库管理  库存初始数据设置 在刚刚开始使用本系统时,可能仓库中已有一定的坯布,这时需要录入库存的初始量。库存初始信息包括: 规格、数量(米)、登记时间(月日),是否确定。 对初始信息可以设置、修改和确定。 一旦确定之后就不可以再进行设置和修改。  坯布出入库 坯布出入库即将坯布提出坯布库和进入坯布库。仓库管理人员对每一次出入库情况做详细记录,每天下班前结账结账以后的出入记录不可以再修改和变化,同时向上级部门报坯布库存日报表和日出入库明细清单。 出入库记录信息包含如下内容: 记录号、出入类型(出库、入库、盘盈、盘亏)、时间(月日)、客户、坯布厂家、规格、数量(米)、位置、登记人、登记时间(月日时分秒)、是否已结账结账人、结账时间(月日时分秒)、是否注销,注销人、注销时间。 坯布出入库管理主要包括: 新增入库,即新建一条坯布入库信息,记录内容 包括:记录号、时间(月日)、客户、坯布厂家、规格、数量(米)、位置、登记人、登记时间(月日时分秒) 修改出入库记录:对入库信息进行修改(记录号不可以修改),登记人和登记时间重新记录,结账以后的信息不可以修改。 注销出入库记录:对作废的、错误的出入库记录注销,表示不再使用,同时记录注销人和注销时间,结账以后的信息不可以注销。 结账:对选择日期当天的出入库记录进行结账,经结账记录加结账标志,同时记录结账人和结账日期。结账以后的信息不可以二次结账。 生成日报:依据当日结账出入库记录和上日存,生成当日库存日报,日报表样如下: 坯布库存日报表 部门:坯布库 报表人:XXX 日期:2009-6-28 规格 数量 上日存 日入库 日出库 日存 合计 生成日出入库明细:将当日结账出入库记录生成日出入库明细单,样表如下: 坯布日出入库明细单 部门:坯布库 报表人:XXX 日期:2009-6-28 记录号 规格 客户 坯布厂家 出入类型 数量 合计  坯布库存月报 坯布库存月报表 部门:坯布库 报表人:XXX 月份:2009-6 规格 数量 上月存 月入库 月出库 月存 合计  坯布库存报 坯布库存报表 部门:坯布库 报表人:XXX 份:2009 规格 数量 上入库 出库 存 合计  坯布库存盘点 库存盘点即对库存坯布进行实物清点,并进行帐实核对,并生成盘点报表。 在盘点之时,停止所有坯布出入库,未结帐的数据全部结账,生成盘点表: 坯布库存盘点表 部门:坯布库 盘点日期:2009-8-20 规格 账面库存量 实际数量 盈亏数量 盘点人 盘点表中需要填入的信息是实际数量、盈亏数量、盘点人。 根据盘点表生成盘点报表: 坯布库存盘点报表 部门:坯布库 盘点日期:2009-8-20 规格 账面库存量 实际数量 盈亏数量 最后应当盈亏入账,使帐实相符,具体在出入库记录中添加记录,出入类型为盘盈或者盘亏。  坯布库查询 可以按客户、规格、出入库日期、出/入库、位置、是否结账、是否注销、登记人等条件灵活地组合查询出入库记录。 (二) 系统的安全要求 本系统的用户及权限 管理员:能够进行系统的用户管理和维护,以及为用户分配权限。 其他用户:等够操作权限范围内的业务。 用户管理 任何用户必须经过权限分配和登录方可进入系统进行操作,任何用户操作都不能超越所拥有的权限。 密码维护 任何用户可以且仅能修改自己的密码 四. 系统功能划分 生产仓储信息系统将实现面向所有用户的统一操作平台,不同的业务功能,通过该平台实现统一登录统一管理,具有内在联系业务之间数据共享,尽可能避免重复操作。 (一) 安全子系统  用户管理 系统自带一个管理员用户,可以进行用户信息管理,负责对系统用户信息维护,及用户的权限分配。具体功能描述如下: 可以新建用户信息:用户ID、用户名称,密码由系统默认“123456”。 可以修改用户信息(不含密码)和删除用户信息,删除用户时同时删除该用户所拥有的权限。  用户登录 所用的系统用户,必须通过登录验证方可进入系统。如果用户不存在或者密码错误应当返回登录页面,并给用户相应提示。 未经登录的用户直接访问需要登录后才能访问的url时,系统应等够阻止。  用户登录后的操作菜单(首界面) 用户登录系统后所看到的操作菜单应为用户拥有的权限范围内的菜单。 (二) 基础信息子系统  客户信息维护 根据生产需要输入和维护必要的订单编号信息,内容为订单编号,客户名称等。  规格维护 根据生产需要录入和维护规格信息,内容为规格名称等。  位置代码维护 位置代码是指在物品所在仓库位置的编号,本功能即对位置代码进行定义和维护。 位置代码为5位编码,规则:仓库代号+区号+排号+列号,其含义如下: 仓库代号:R-坯布库 P-成品库 区号:00-99 排号:0-9 列号:0-9  坯布厂家维护 对坯布厂家信息进行录入和维护。  初始库存设置 可以对初始库存进行录入和修改,无误之后可以对初始库存进行确定,确定之后不再可以新增和更改。  盘点开关设置 进入本功能模块,在非盘点期间可以进行开始盘点操作,在盘点期间可以进行束盘点操作。 (三) 坯布库子系统  坯布出入库 非盘点期间 当日未结账之前,用户可以进行以下操作。 直接录入有关坯布出入库信息:出入类型(出库、入库、盘盈、盘亏)、客户、坯布厂家、规格、数量(米)、位置;系统自动生成记录号,并记录出入库日期、登记人姓名、登记人操作时间。 信息录入之后用户可以进行修改和注销和取消注销,但记录号不可以修改。 当日结账之后,仅可以查看出入库数据,不可以录入和修改、注销。 在盘点期间 不可以进行新增出入库信息,可以修改和注销现有未结帐信息,可以取消未结帐注销信息。  出入库结账 在非盘点期间 可以结账,即对选择某一日的出入记录进行扎结账之后不允许在已结账日期进行录入、修改、注销和结账操作,仅可以查看。 在该模块,用户可以生成当日库存日报。 在盘点期间 可以进行盘点结账,盘点结账之后不再可以修改、注销和取消注销。  坯布库存盘点 在盘点期间 用户可以生成盘点表,可以在盘点表中录入实际库存数量,可以提交保存,也可以修改。 如果盘点束或者盈亏已入账则不可以再录入和维护实际库存数量(即不可以修改盘点表)。 盘点束后 可以生成盘点报表。  坯布盈亏入账 用户可以将最近一次盘点盈亏数据入账,即以盘亏和盘盈的形式增加库存出入信息,这些信息来源于盘点表。 (四) 查询统计子系统  坯布库查询 可以按客户、规格、出入库日期、出/入库、位置、是否结账、是否注销、登记人等条件灵活地组合查询出入库记录。  坯布库存月报  坯布库存报 五. 系统环境 (一) 硬件环境  1)硬件平台 1、网络环境: 内部的局域网网速:局域网线路带宽为100M,工作站要求10M/100M,DB服务器为100M/1000M。 客户机(浏览器)外部接入网速不低于256kbps 2、服务器要求: DB服务器要求为高性能的PC服务器,配置最低要求(5个客户端):奔腾双核1.8GHz CPU,2G DDR2,160G HDD,100M/1000M NET,其他设备建议配备磁盘阵列备份与UPS电源。 WEB服务器要求为为高性能的PC服务器,配置最低要求:奔腾双核2.0GHz CPU,2G DDR,40G HDD,100M/1000M NET,其他设备建议配备磁盘阵列备份与UPS电源。 3、客户端要求: CPU频率在1.8GHZ/内存256M/硬盘20G以上的PC机,其中显示器建议可正常上1024×768分辨率。 (二) 软件平台  1)软件平台 服务器操作系统:WINDOWS XP/ WINDOWS 2000 Server 数据库系统:sqlserver 2005 JAVA平台:JDK1.5 J2EE1.4 WEB服务器: Tomcat 6.0 客户端操作系统: WINDOWS2000、WINDOWS XP 客户端浏览器:IE7.0或以上版本  2)系统开发工具 Eclipse 3.3+MyEclipse 6.5 + Tomcat6.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值