linux系统性能分析

简介:

性能调优的第一步是性能分析,下面从性能分析着手进行一些介绍,尤其对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)

转自:http://www.blogjava.net/qileilove/archive/2013/03/25/396949.html





本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/p/3172398.html,如需转载请自行联系原作者

目录
相关文章
|
5天前
|
缓存 算法 Linux
深入理解Linux内核调度器:公平性与性能的平衡####
真知灼见 本文将带你深入了解Linux操作系统的核心组件之一——完全公平调度器(CFS),通过剖析其设计原理、工作机制以及在实际系统中的应用效果,揭示它是如何在众多进程间实现资源分配的公平性与高效性的。不同于传统的摘要概述,本文旨在通过直观且富有洞察力的视角,让读者仿佛亲身体验到CFS在复杂系统环境中游刃有余地进行任务调度的过程。 ####
26 6
|
3月前
|
Linux 调度
Linux 内核源代码情景分析(一)(下)
Linux 内核源代码情景分析(一)
60 1
|
6天前
|
监控 网络协议 算法
Linux内核优化:提升系统性能与稳定性的策略####
本文深入探讨了Linux操作系统内核的优化策略,旨在通过一系列技术手段和最佳实践,显著提升系统的性能、响应速度及稳定性。文章首先概述了Linux内核的核心组件及其在系统中的作用,随后详细阐述了内存管理、进程调度、文件系统优化、网络栈调整及并发控制等关键领域的优化方法。通过实际案例分析,展示了这些优化措施如何有效减少延迟、提高吞吐量,并增强系统的整体健壮性。最终,文章强调了持续监控、定期更新及合理配置对于维持Linux系统长期高效运行的重要性。 ####
|
13天前
|
人工智能 安全 Linux
|
1月前
|
存储 缓存 监控
Linux中内存和性能问题
【10月更文挑战第5天】
38 4
|
1月前
|
存储 监控 固态存储
Linux中提高性能
【10月更文挑战第6天】
33 2
|
3月前
|
存储 IDE Unix
Linux 内核源代码情景分析(四)(上)
Linux 内核源代码情景分析(四)
31 1
Linux 内核源代码情景分析(四)(上)
|
3月前
|
存储 Linux 块存储
Linux 内核源代码情景分析(三)(下)
Linux 内核源代码情景分析(三)
35 4
|
3月前
|
Linux C语言
深度探索Linux操作系统 —— 编译过程分析
深度探索Linux操作系统 —— 编译过程分析
28 2
|
3月前
|
存储 Unix Linux
Linux 内核源代码情景分析(四)(下)
Linux 内核源代码情景分析(四)
23 2