我们从如下三方面分析:
1、性能指标有哪些?
2、性能如何剖析?
3、性能调优方法有哪些?
一:CPU
1.平均负载 --uptime
2.cpu使用率(用户cpu,系统cpu,iowait,软中断,硬中断,窃取cpu,客户cpu)--mpstat,pidstat
3.上下文切换(自愿上下文切换、非自愿上下文切换)--vmstat
4.cpu 缓存命中率 --top,perf top
5.增对不同的场景CPU上下文切换分为:进程上下文切换、线程上下文切换、中断上下文切换
top/ps ; vmstat; mpstat; sar ; pidstat ; strace; perf ; execsnoop(短进程分析); proc 文件系统
cpu绑定; 进程cpu 资源限制; 进程优先级调整; 中断负载均衡; cpu缓存; numa 优化
二:内存
1.内存使用量
2.进程内存使用量
3.缓存与缓存命中率
4.swap 使用量
free; top; sar; vmstat; cachestat; cachetop; memleak; proc 文件系统
1.利用缓存与缓存区
2.减少swap 使用
3.减少动态内存分配
4.优化numa
5.限制进程内存资源
6.使用HugePage
三:网络
1.吞吐量(BPS, QPS, PPS)
2.延迟
3.丢包
4.tcp重传;
ethtool; sar; ping; netstat/ss ; ifstat; ifconfig; tcpdump; wireshark; iptables; traceroute; ipcontrack; perf
1.网卡调优(MTU,队列长度;链路聚合)
2.协议调优(Http,tcp,Overlay)
3.资源控制(Qos)
4.内核调优(Nat 调优;功能卸载;负载均衡; DPDK)
四:磁盘
1.磁盘使用率
2.IOPS
3.吞吐量
4.IOWAIT
dstat; sar; iostat; pidstat; iotop; iolatency; blktrace; fio; perf
- 1.系统调用
- 2.i/o 资源控制
- 3.充分利用缓存
- 4.raid
- 5.i/o 隔离
五:文件系统
1.容量
2.IOPS
3.缓存命中率
df; strace; vmstat; sar; perf;proc 文件系统;
1.文件系统选型
2.利用文件系统缓存
3.i/o 隔离
六:Linux 内核
1.BPF
2.perf
3.proc 文件系统
调优内核系统参数选项
七:应用程序
1.吞吐量
2.响应时间
3.资源利用率
Use方法(使用率、饱和度、错误)
进程剖析(进程状态、资源利用率、i/o剖析、系统调用、热点函数、动态追踪)
apm
逻辑简化
编程语言
算法调优
非阻塞i/o
利用缓存和缓存区
异步处理与并发
垃圾回收
在系统开发整体架构优化设计:
1、空间换时间(缓存、缓冲区、冗余数据)
2、时间换空间(压缩编码、页面交换)
3、并行处理(多线程、多进程、分布式)
4、异步处理(异步i/o 、 消息队列、事件通知)
怎么评估性能优化的效果?
1.确定性能量化指标
2.测试优化前的性能指标
3.测试优化后的性能指标
应用程序如何优化?
1.降低cpu 的使用率,减少循环次数、减少递归、减少动态内存分配
2.编译器优化
3.算法优化
4.异步处理
5.多线程代替多进程
6.善用缓存