Linux 性能优化
1、性能优化概述 Performance optimization
1)性能分析六个步骤
- 选择指标评估应用程序和系统的性能 evaluation indicator
- 为应用程序和系统设置性能目标 target
- 进行性能基准测试 baseline
- 性能分析定位瓶颈 bottleneck
- 优化系统和应用程序
- 性能监控和告警 metrics monitor
3、性能优化方法论
1)评估优化效果
- 应用程序维度,吞吐量 throughput,请求延时 latency
- 系统资源维度,CPU使用率. cpu usage
2)注意点
- 避免性能测试工具干扰应用程序的性能
- 避免外部环境的变换影响性能指标
3)多个性能问题同时存在,选择优化哪些
- 二八原则 Pareto Principle,并不是所有的性能问题都值得优化,找出最重要的,可以大幅度提升性能的问题,优先优化系统资源使用问题,性能指标变化幅度
- 选能最大提升性能的方法
4、CPU优化
1)性能统计信息
平均负载指单位时间内,系统处可运行状态和不可中断状态的平均进程数,就是平均活跃进程数 uptime 命令查看
平均负载和CPU个数有关系
2)CPU使用率
单位时间内,CPU繁忙情况。
- 1)节拍率 Jiffies, 每发生一次中断,Jiffies+1
- 2)用户节拍率
CPU 使用率 1 - (空闲 2-空闲1)/ (总CPU时间2-总CPU时间1), 从/proc/stat 拿数据
- top 显示系统整体
- ps 显示每个进程
- pidstat 显示每个进程的CPU使用情况
可以使用perf来分析应用程序性能 perf top 来看函数的cpu使用率
3) 可以用的压测工具
- stress
- sysstat
4) 上下文切换
任务数目多余CPU,来回切换。
5 内存映射
虚拟内存和物理内存地址的映射。应用的使用内存比实际的大,所以要用内存映射来管理
6 SWAP
把一块磁盘空间或者文件当成内存来使用
7 系统内存使用
free 命令,单位为KB
8 缓存命中率
直接通过缓存来获得数据的比例。
cachestat
cachetop
9 内存性能指标
内存调优
- 禁止swap
- 减少内存的动态分配
- 尽量使用缓存和缓冲区来访问数据
- 限制进程使用内存情况
- 调整oom_score
10 磁盘IO
1)磁盘
硬盘 (hard disk drive) 和 SSD(solid state disk),SSD 不需要磁道寻址,所以比FDD
SSD 要先擦出再写入,
2)磁盘IO指标
- 每秒IO数,IOPS,每秒磁盘读、写数
- 吞吐量,每秒读写数
- 磁盘利用率
- 服务时间,读、写执行的时间
- 等待时间,IO等待时间
3)观测
iostat
pistat
谢谢!