一、影响Linux性能的因素
1、系统硬件资源
1.1 CPU
1.2 内存
1.3 磁盘I/O性能
磁盘的I/O性能直接影响应用程序的性能,在一个有频繁读写操作的应用中,如果磁盘I/O性能得不到满足,就会导致应用停滞。(RAID、SSD)
RAID0:通过把多块硬盘粘合成一个容量更大的硬盘组,提高了硬盘的性能和吞吐量。这种方式成本低,要求至少两块硬盘,但是没有容错和数据修复功能,因而只能用在对数据安全性要求不高的环境中。
RAID1:也就是磁盘镜像,通过把一个磁盘的数据镜像到另一个磁盘上,最大限度地保证磁盘数据的可靠性和可修复性,具有很高的数据冗余能力,但磁盘的利用率只有50%,因此,成本较高,多用在保证重要数据的场合。
RAID5:采用了磁盘磁盘分段加奇偶校验技术,从而提高了系统的可靠性。RAID5读出效率很高,写入效率一般,至少需要3块盘。允许一块磁盘故障,而不影响数据的可用性。
RAID0+1:把RAID0和RAID1技术结合起来就成了RAID0+1,至少需要4块硬盘。此种方式的数据除分布在多个盘上外,每个盘都有其镜像盘,提供全冗余能力,同时允许一个磁盘故障,而不影响数据的可用性,并拥有快速读写能力。
1.4 网络带宽
2、 操作系统相关资源
基于操作系统的性能优化也是多方面的,可以从系统安装、系统内核参数、网络参数、文件系统等几个方面进行衡量。
2.1 系统安装优化
系统优化可以从安装操作系统开始,当安装Linux系统时,磁盘的划分、SWAP内存的分配都直接影响以后系统的运行性能。例如,磁盘分配可以遵循应用的需求:对于读写操作频繁而对数据安全性要求不高的应用,可以把磁盘做成RAID0;对于对数据安全性较高,对读写没有特别要求的应用,可以把磁盘做成RAID1;对于对读操作要求较高,而对写操作无特殊要求,并要保证数据安全性的应用,可以选择RAID5;对于对读写要求都很高,并且对数据安全性要求也很高的应用,可以选择RAID0+1。这样通过不同的应用需求设置不同的RAID级别,在磁盘底层对系统进行优化操作。
2.2 内核参数优化
系统安装完后,优化工作并没有结束,接下来还可以对系统内核参数进行优化,不过内核参数的优化要和系统中部署的应用结合起来整体考虑。例如,如果系统部署的是Oracle数据库应用,那么就需要对系统共享内存段(kernel.shmmax、kernel.shmmni、kernel.shmall)、系统信号量(kernel.sem)、文件句柄(fs.file-max)等参数进行优化设置;如果部署的是Web应用,那么就需要根据Web应用特性进行网络参数的优化,例如修改net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse、net.core.somaxconn等网络内核参数。
2.3 文件系统优化
文件系统的优化也是系统资源优化的一个重点,在Linux下可选的文件系统有ext2、ext3、xfs、FeiserFS等。可根据不同的应用,选择不同的文件系统。
3、 应用程序软件资源
二、系统性能分析标准和优化原则
影响性能因素 | 好 | 坏 | 糟糕 |
CPU | user%+sys% < 70% | user%+sys% =85% | user%+sys% >= 90% |
内存 | Swap In(si) = 0 Swap Out(so) = 0 | Per CPU with 10 page/s | More Swap In & Swap Out |
磁盘 | iowait % < 20% | iowait % = 35% | iowait % >= 50% |
其中:
user%表示CPU处在用户模式下的时间百分比
sys%表示CPU处在系统模式下的时间百分比
iowait%表示CPU等待输入输出完成时间的百分比
Swap In即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM
Swap Out即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK
参考文献:
1、高性能Linux服务器构建实战----运维监控、性能调优与集群应用(高俊峰 著)