定义
1)性能监控
性能监控是一种以非侵入性方式收集或查看应用运行性能数据的活动。
2)性能分析
性能分析是一种以侵入方式收集运行性能数据的活动,它会影响应用的吞吐量或响应性。
3)性能调优
性能调优是一种为改善应用响应或吞吐量而更改参数、源代码或属性配置的活动。性能调优通常在性能监控或性能分析之后进行。
性能调优是找到系统处理中的瓶颈以及去除这些的过程,通常通过对内核的一些配置可以简单的解决问题,但并不适合每个环境,性能优化其实是对OS 各子系统达到一种平衡的定义,这些子系统包括:
- CPU
- Memory
- IO
- Network
这些子系统之间关系是相互彼此依赖的,任何一个高负载都会导致其他子系统出现问题。比如:
- 大量的页调入请求导致内存队列的拥塞
- 网卡的大吞吐量可能导致更多的 CPU开销
- 大量的CPU开销又会尝试更多的内存使用请求
- 大量来自内存的磁盘写请求可能导致更多的 CPU 以及 IO问题
所以要对一个系统进行优化,查找瓶颈来自哪个方面是关键,看似是其中一个子系统出现问题,其实有可能是别的子系统导致的。
确定应用类型
应用类型主要分为以下两种:
1)IO密集型(IO Bound)
IO密集型的应用,一般都是高负荷的内存使用以及存储系统,这实际上表示IO密集型的应用,就是一个大量数据处理的过程。
IO密集型的应用不对CPU以及网络发起更多请求(除非类似NAS这样的网络存储硬件)。
IO密集型的应用通常使用CPU资源都是为了产生IO 请求以及进入到内核调度的sleep 状态。
通常数据库软件被认为是IO 范畴的应用类型,例如MySQL,Oracle等。
2)CPU密集型(CPU Bound)
CPU密集型的应用,一般都是高负荷的CPU 占用。
CPU密集型的应用,就是一个批量处理CPU 请求以及数学计算的过程。
通常应用服务器,如web server、mail server以及其他类型服务被认为是CPU密集型的应用类型。
确定基准线统计
系统利用率情况,一般随管理员经验以及系统本身用途来决定。
唯一要清楚的是,系统优化希望达成什么效果,以及哪些方面需要优化,以及参考值是什么?
因此需要建立一个基准线,这个统计数据必须是系统可用性能状态值,用来比较不可用性能状态值。
例如,使用vmstat记录下系统可用性能下的状态值,可以用来对比系统不可用情况下的性能状态。