Linux性能优化实践——如何学习Linux性能优化

性能指标

学习性能优化的第一步便是了解“性能指标”这个概念。
“高并发”和“响应快”对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的角度来考察性能的,直接影响了产品终端的用户体验。跟他们对应的,是从系统资源的视角出发的指标,比如资源使用率、饱和度等。
Linux性能优化实践——如何学习Linux性能优化_第1张图片
性能分析,其实就是找出应用或系统的瓶颈,并设法去避免或者缓解它们,从而更高效地利用系统资源处理更多请求。这包含下面一系列步骤:

  1. 选择指标评估应用程序和系统的性能;
  2. 为应用程序和系统设置性能目标;
  3. 进行性能基准测试;
  4. 性能分析定位瓶颈;
  5. 优化系统和应用程序;
  6. 性能监控和告警;

学习重点

建立整体系统性能的全局观。
布伦丹·格雷格(Brendan Gregg)的Linux性能工具图谱如下,

需要注意工具的选用,先理解原理,再结合具体场景,融会贯通系统的不同组件,灵活运用,

学习Linux性能优化分为下面几个部分:

  1. CPU
    1.1 进程和CPU原理
    1.2 性能指标(平均负载、CPU使用率、上下文切换、CPU缓存命中率)
    1.3 性能剖析(top/ps、vmstat、mpstat、sar、pidstat、strace、perf、execsnoop、proc文件系统)
    1.4 调优方法(CPU绑定、进程CPU资源限制、进程优先级调整、中断负载均衡、CPU缓存、NUMA优化)

  2. 内存
    2.1 内存原理
    2.2 性能指标(系统内存使用量、进程内存使用量、缓存与缓冲区命中率、SWAP使用量)
    2.3 性能剖析(free、top、sar、vmstat、cachestat、cachetop、memleak、proc文件系统)
    2.4 调优方法(利用缓存与缓冲区、减少SWAP使用、减少动态内存分配、优化NUMA、限制进程内存资源、使用HugePage)

  3. 网络
    3.1 网络原理
    3.2 性能指标(吞吐量、延迟、丢包、TCP重传)
    3.3 性能剖析(ethtool、sar、ping、netstat/ss、ifstat、ifconfig、tcpdump、wireshark、iptables、traceroute、ipcontrack、perf)
    3.4 调优方法(网卡调优、协议调优、资源控制、内核调优)

  4. 磁盘IO
    4.1 磁盘原理
    4.2 性能指标(使用率、IOPS、吞吐量、IOWAIT)
    4.3 性能剖析(dstat、sar、iostat、pidstat、iotop、iolatency、blktrace、fio、perf)
    4.4 调优方法(系统条用、I/O资源控制、充分利用缓存、RAID、I/O隔离)

  5. 文件系统
    5.1 文件系统原理
    5.2 性能指标(容量、IOPS、缓存命中率)
    5.3 性能剖析(df、strace、vmstat、sar、perf、proc文件系统)
    5.4 调优方法(文件系统选型、利用文件系统缓存、I/O隔离)

  6. Linux内核
    6.1 内核原理
    6.2 性能剖析(BPF、perf、proc文件系统)
    6.3 调优方法(内核选项)

  7. 应用程序
    7.1 文件系统原理
    7.2 性能指标(吞吐量、响应时间、资源使用率)
    7.3 性能剖析(USE方法、进程剖析、APM)
    7.4 调优方法(逻辑简化、编程语言、算法调优、非阻塞I/O、利用缓存与缓冲区、异步处理与并发、垃圾回收)

  8. 架构设计
    8.1 空间换时间(缓存、缓冲区、冗余数据)
    8.2 时间换空间(压缩编码、页面交换)
    8.3 并行处理(多线程、多进程、分布式)
    8.4 异步处理(异步I/O、消息队列、事件通知)

  9. 性能监控
    9.1 时间序列分析(历史趋势分析、性能模型构建、未来趋势预测)
    9.2 服务调用追踪(服务调用流程跟踪、服务调用性能分析、服务调用链拓扑展示)
    9.3 数据可视化(趋势图、散点图、热图、饼图)
    9.4 告警通知(阈值选择、报警策略、通知渠道)
    10.性能测试
    10.1 明确需求(系统资源需求、应用程序需求)
    10.2 环境假设(合理的假设、生产环境模拟、生产负载模拟)
    10.3 性能测试(基准测试、负载测试、压力测试)
    10.4 结果分析(应用程序瓶颈、数据库瓶颈、系统资源瓶颈)

关键点

边学边实践

你可能感兴趣的:(linux,性能优化)