linux的性能解析

提高linux性能(效果从大到小)

1;提高内存

2;复查系统和各个应用的配置(许多应用都能以多种方式进行调优,获得很大的性能提升)

3;改正使用上的问题,包括由用户引起的问题(同时运行过多的作业,选择不恰当的时间运行大型作业,等),也包括由系统引起的问题(非必要的守护进程,磁盘限额,等)

4;linux用作web服务器或者其他类型的网络应用服务器的情况,对其负载平衡

5;组织磁盘和文件系统以平衡负载,从而得到最大的I/O吞吐量

6;根据磁盘间数据分布的要求,选择最合适的raid

7;监视网络,确保流量不会饱和并且出错率低(用netstat命令)

其中,添加内存条和在多台服务器间平衡流量可以在性能上得到巨大的提升。

影响性能的因素:

1;CPU时间

2;内存

3;硬盘I/O

4;网络I/O

linux系统中最常见的性能瓶颈是磁盘的实际带宽

I/O 性能取决于带宽

检查系统性能:

1;CPU使用情况分析

采集3种CPU数据:

总体利用率:有助于确定系统中CPU的运行速度是否是系统的性能瓶颈

平均负载:平均负载可让您对系统的总体性能有一个印象

每个进程的CPU消耗量:每个进程的CPU消耗量数据能够让您搞清占用系统资源过多的进程

总体利用率:vmstat命令获得汇总信息。vmstat有两个参数:每行输出需监视系统的秒数,以及提供的报告数。如果您没有指定报告的行数,那么vmstat就会一直运行,直到您按下<Control-C>为止。vmstat返回的第一行数据提供了自系统引导起来以后的平均值。随后的各行是在上一个采样期内的平均值,默认的采样时间为5秒。例如:

平均负载:uptime

一般来说,Linux系统在平均负载达到3的时候就处于繁忙状态,而且不能很好地处理平均负载超过8的情况

每个进程的CPU消耗量用:ps -aux,这个提供系统过去时间的一次性快照。

top所提供的信息和ps的大致相同,但是是以“动态”的格式输出的.这让您可以监视系统随时间变化的状态,频繁刷新top的输出本身就要消耗大量的CPU资螈,因此谨慎慎使用该程序。

2;内存使用情况分析

内存活动基本上可以用3个数字来量化:活动虚拟内存的总量、交换(swapping)率和调页(paging)率

和UNIX系统一样,Linux也是按照称为“页”(page)的单元来管理内存的。

Linux内核在进程需要内存的时候,分配给它们虚拟页,每个虚拟页都被映射到实际的存储器上,即RAM或者磁盘上的“备份存储”空间(备份存储通常是在交换区内的空间,但对于包含可执行程序代码的页来说,备份存储是原来的可执行文件)。Linux使用一个“页表(page table)”来跟踪这些虚拟页同实际存储页之间的映射关系。

Linux用交换空间(swap space)来增加实际RAM的大小,有效她向进程提供它们所需要的内存。

进程都以为它们的虚拟页映射到了实际的内存上,所以Linux总是忙于在RAM和交换区之间来回换页。这种活动称为调页(paging)。

活动虚拟内存的总量:表明内存的总需求量

交换(swapping)率和调页(paging)率:表明那些内存中有多少比例正处于使用之中。

目标是要减少内存活动或增加内存量,直到调页率保持在一个可接受的水平上为止。偶尔的调页是不可避免的,因此不要为了要完全消除调页而操心。

查看使用的内存和交换空间的数量:free -t,带-t标志执行这条命令会自动计算出虚拟内存的总量

空闲值低于系统总内存量的3%一般表明有问题。您可以使用swapon命令来准确地判断出哪些文件和分区正在作为交换空间。

查看内存消耗前几位进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -5

如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看.

$ free -m
             total       used       free     shared    buffers     cached
Mem:         1002        769        232          0         62        421
-/+ buffers/cache:        286        715
Swap:         1153          0       1153
---------------------------
真实内存占用 = used-buffers-cached = 286
-----------------
 

第一部分Mem行:
total 内存总数: 1002M
used 已经使用的内存数: 769M
free 空闲的内存数: 232M
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 62M
cached Page 缓存内存数:421M

关系:total(1002M) = used(769M) + free(232M)

第二部分(-/+ buffers/cache):
(-buffers/cache) used内存数:286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free内存数: 715M (指的第一部分Mem行中的free + buffers + cached)

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换分区, 我想不讲大家都明白.

我想大家看了上面,还是很晕.第一部分(Mem)与第二部分(-/+ buffers/cache)的结果中有关used和free为什么这么奇怪.
其实我们可以从二个方面来解释.
对操作系统来讲是Mem的参数.buffers/cached 都是属于被使用,所以它认为free只有232.
对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

所以,以应用来看看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了.另外告诉大家一些常识.Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路 径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦. 

3;磁盘I/O分析

监视磁盘的性能:iostat

linux的性能解析

性能监视工具:sar

sar看起来似乎与proiofo、vmstat和iostat显示的信息雷同。不过,它们之间有一个重要的区别:sar既能报告当前数据,也能报告历史数据。

报告自午夜起当天的CPU利用率(10分钟为间隔):sar

linux的性能解析

当天磁盘活动的情况汇总sar-d

linux的性能解析

网络接口的统计信息:sar –n DEV

linux的性能解析

报告所有的信息:sar –A

sar也有一些局限性,但是它对于快速粗略了解历史信息来说很适用。如果您在慎重选择长期监测性能的工具,那么我们建议您配置诸如Cacti这样的数据采集和图示化平台。Cacti用于网络管理,但它实际上能绘制任何的系统数据图,如CPU和内存信息。

oprofile:全面的剖析器

oprofile是一种功能异常强大的集成系统剖析器,它适用于运行2.6版以上内核的Linux系统。它能剖析Linux系统的所有组成部分:软硬件中断处理程序、内核模块、内核本身、共享库和应用软件。如果您有很多富余的时间,而且想准确掌握系统资源正在使用的情况(小到最细枝末节的地方),那么就可以考虑运行oprofile。如果您正在开发自己的内部应用软件或者内核代码,这个工具尤其有用。在oprofile软件发布中有一个内核模块和一组用户级的工具,从oprofile.sourceforge.net可以下载到这个软件。在Red Hat系统上,您还需要安装kernel-debuginfo这个软件包获得运行oprofile所需的文件。