Linux性能优化

CPU

进程和 CPU 原理

  • 进程与线程
  • CPU 调度
  • 中断系统
  • CPU 缓存
  • NUMA

性能指标

  • 平均负载
  • CPU 使用率
    • 用户 CPU
    • 系统 CPU
    • IOWAIT
    • 软中断
    • 硬中断
    • 窃取 CPU
    • 客户 CPU
  • 上下文切换
    • 自愿上下文切换
    • 非自愿上下文切换
  • CPU 缓存命中率

性能剖析

  • top/ps
  • vmstat
  • mpstat
  • sar
  • pidstat
  • strace
  • perf
  • execsnoop
  • proc 文件系统

调优方法

  • CPU 绑定
  • 进程 CPU 资源限制
  • 进程优先级调整
  • 中断负载均衡
  • CPU 缓存
  • NUMA 优化

内存

内存原理

  • 地址空间
  • 虚拟内存
  • 内存分配与回收
  • 缓存与缓冲区
  • SWAP

性能指标

  • 系统内存使用量
  • 进程内存使用量
  • 缓存与缓冲区命中率
  • SWAP 使用量

性能剖析

  • free
  • top
  • sar
  • vmstat
  • cachestat
  • cachetop
  • memleak
  • proc 文件系统

调优方法

  • 利用缓存与缓冲区
  • 减少 SWAP 使用
  • 减少动态内存分配
  • 优化 NUMA
  • 限制进程内存资源
  • 使用 HugePage

网络

网络原理

  • 网络配置
  • TCP/IP 协议
  • 网络收发流程
  • 高级路由
  • 网络 QoS
  • 网络防火墙
  • C10K 与 C100K

性能指标

  • 吞吐量
    • BPS
    • QPS
    • PPS
  • 延迟
  • 丢包
  • TCP 重传

性能剖析

  • ethtool
  • sar
  • ping
  • netstat/ss
  • ifstat
  • ifconfig
  • tcpdump
  • wireshark
  • iptables
  • traceroute
  • ipcontrack
  • perf

调优方法

  • 网卡调优
    • MTU
    • 队列长度
    • 链路聚合
  • 协议调优
    • HTTP
    • TCP
    • Overlay
  • 资源控制
    • QoS
  • 内核调优
    • NAT 调优
    • 功能卸载
    • 负载均衡
    • DPDK

磁盘 IO

磁盘原理

  • 磁盘管理
  • 磁盘类型
  • 磁盘接口
  • 磁盘 I/O 栈

性能指标

  • 使用率
  • IOPS
  • 吞吐量
  • IOWAIT

性能剖析

  • dstat
  • sar
  • iostat
  • pidstat
  • iotop
  • iolatency
  • blktrace
  • fio
  • perf

调优方法

  • 系统调用
  • I/O 资源控制
  • 充分利用缓存
  • RAID
  • I/O 隔离

文件系统

文件系统原理

  • 虚拟文件系统
  • 文件系统 I/O 栈
  • 文件系统缓存
  • 文件系统种类

性能指标

  • 容量
  • IOPS
  • 缓存命中率

性能剖析

  • df
  • strace
  • vmstat
  • sar
  • perf
  • proc 文件系统

调优方法

  • 文件系统选型
  • 利用文件系统缓存
  • I/O 隔离

Linux 内核

内核原理

  • 内核态

性能剖析

  • BPF
  • perf
  • proc 文件系统

内核调优

  • 内核选项

应用程序

性能指标

  • 吞吐量
  • 响应时间
  • 资源使用率

性能剖析

  • USE 方法
    • 使用率
    • 饱和度
    • 错误
  • 进程剖析
    • 进程状态
    • 资源使用率
    • I/O 剖析
    • 系统调用
    • 热点函数
    • 动态追踪
  • APM

调优方法

  • 逻辑简化
  • 编程语言
  • 算法调优
  • 非阻塞 I/O
  • 利用缓存与缓冲区
  • 异步处理与并发
  • 垃圾回收

架构设计

空间换时间

  • 缓存
  • 缓冲区
  • 冗余数据

时间换空间

  • 压缩编码
  • 页面交换

并行处理

  • 多线程
  • 多进程
  • 分布式

异步处理

  • 异步 I/O
  • 消息队列
  • 事件通知

性能监控

时间序列分析

  • 历史趋势分析
  • 性能模型构建
  • 未来趋势预测

服务调用追踪

  • 服务调用流程追踪
  • 服务调用性能分析
  • 服务调用链拓扑展示

数据可视化

  • 趋势图
  • 散点图
  • 热图
  • 饼图

告警通知

  • 阈值选择
  • 报警策略
  • 通知渠道

性能测试

明确需求

  • 系统资源需求
  • 应用程序需求

环境假设

  • 合理的假设
  • 生产环境模拟
  • 生产负载模拟

性能测试

  • 基准测试
  • 负载测试
  • 压力测试

结果分析

  • 应用程序瓶颈
  • 数据库瓶颈
  • 系统资源瓶颈