Linux系统性能调优之性能分析

1.Linux性能分析的目的
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 输出内容的含义,并能灵活应用,那对系统性能分析的能力就算是基本掌握了。

Linux vmstat 命令详解 http://www.linuxidc.com/Linux/2013-03/80983.htm

Linux下vmstat 显示结果详解 http://www.linuxidc.com/Linux/2013-01/77497.htm

Linux监控工具之vmstat 详解 http://www.linuxidc.com/Linux/2012-09/71295.htm

Linux vmstat命令实战详解 http://www.linuxidc.com/Linux/2012-06/61771.htm

Linux vmstat监控系统负载 http://www.linuxidc.com/Linux/2012-01/51340.htm

vmstat命令详解——Linux性能分析 http://www.linuxidc.com/Linux/2014-06/102884.htm

下面是vmstat命令的输出结果:
# vmstat 1 5

对输出解释如下:
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)

本文转载自:https://www.linuxidc.com/Linux/2015-05/117056.htm

原文地址:https://www.cnblogs.com/momoyan/p/9141327.html

时间: 2024-10-05 23:54:59

Linux系统性能调优之性能分析的相关文章

linux 系统性能调优 相关命令汇总

linux 系统性能调优 相关命令汇总: 1. ps:查看系统中当前有哪些进程在运行 常用命令有ps aux  | grep  -i  mysql http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html 2. top:动态显示各个程序对cpu,内存的占用,以及负载的情况 http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 3. io的总体负载,进程的io

Android/Linux 系统性能调优

关于性能优化这是一个比较大的话题,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法.本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充. 在开始这篇文章之前,大家可以移步去看一下酷壳以前发表的<代码优化概要>,这篇文章基本上告诉你--要进行优化,先得找到性能瓶颈! 但是在讲如何定位系统性能瓶劲之前,请让我讲一下系统性能的定义和测试,因为没有这两件事,后面的定位和优化无从谈起. 一.系统性能定义 让我们先来说说如何什么是系统性能.这个定义非常关键,如果我们不清楚

linux系统性能调优之vmstat

一 vmstat 更多请到http://www.07net02.com查阅 vmstat 命令报告关于内核线程.虚拟内存.磁盘.陷阱和 CPU 活动的统计信息.由 vmstat 命令生成的报告可以用于平衡系统负载活动.系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和. vmstat可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况. 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的

Linux操作系统性能调优的方法

Linux操作系统性能调优的方法 2013-03-18 15:35 HonestQiao ChinaUnix 字号:T | T Linux是一套免费使用和自由传播的类Unix操作系统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.本文分享了几种技巧对Linux操作系统进行性能的优化. AD:2014WOT全球软件技术峰会北京站 课程视频发布 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性能.

Perf Event :Linux下的系统性能调优工具

Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展.Perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析.得益于其优秀的体系结构设计,越来越多的新功能被加入 Perf,使其已经成为一个多功能的性能统计工具集 .本文将介绍 Perf 在应用程序开发上的应用. AD:2014WOT全球软件技术

性能调优:消耗分析

本篇为系统性总结性能调优中的消耗分析. 性能调优系列的其他篇幅,请查阅. 性能调优:CPU消耗分析 性能调优:IO消耗分析 性能调优:消耗分析思维导图 转载注明出处:http://blog.csdn.net/supera_li/article/details/45251055 性能调优之消耗分析,思维导图 卧槽,终于画完了..图中不明确的地方直接回复文章,我会单独细节补充在下面.如有错误,请多多指教.

书讯 —《产品级性能调优与故障诊断分析》

<产品级性能调优与故障诊断分析> 封面巨照 作者简介 郑健,2006~2009连任三届<微软最有价值专家>,荣获<DevWOW微软博客达人>优胜奖,荣获微软<最有影响力开发者>奖项,通过微软[MCSA/MCSE]认证,公司性能优化专家,CSDN 博客专家,著有[庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术]一书,目前在北京用友软件做产品优化方面的工作. Email: [email protected] 本书主要内容 一个运行中的系统会受到到很多

图书 —《产品级性能调优与故障诊断分析》

<产品级性能调优与故障诊断分析> 封面巨照 作者简介 郑健,2006~2009连任三届<微软最有价值专家>,荣获<DevWOW微软博客达人>优胜奖,荣获微软<最有影响力开发者>奖项,通过微软[MCSA/MCSE]认证,公司性能优化专家,CSDN 博客专家,著有[庖丁解牛:纵向切入Asp.net 3.5控件和组件开发技术]一书,目前在北京用友软件做产品优化方面的工作. Email: [email protected] 本书主要内容 一个运行中的系统会受到到很多

LAMP 系统性能调优之内核调优措施

LAMP 系统性能调优之内核调优措施 2011-03-18 11:21 Sean A. Walberg 网络转载 字号:T | T 在对系统的 Apache.PHP 和 MySQL 组件进行调优之前,应该花一些时间确保底层 Linux 组件的运行正常.这点是非常重要的! AD:2014WOT全球软件技术峰会北京站 课程视频发布 LAMP LAMP的一些快速的内核调优措施 大多数 Linux 发布版都定义了适当的缓冲区和其他 Transmission Control Protocol(TCP)参数