2021-06-11 Linux 性能优化

107 阅读3分钟

不需要了解每个组件的所有实现细节,只要能理解它们最基本的工作原理和协作方式

image.png

大部分性能分析和优化都会包含的知识:

分类原理性能指标性能剖析调优方法
文件系统虚拟文件系统、文件系统I/O栈、文件系统缓存、文件系统种类容量、IOPS、缓存命中率df、strace、vmstat、sar、perf、proc 文件系统文件系统选型、利用文件系统缓存、I/O 隔离
Linux 内核内核态BPF、perf、proc 文件系统内核选项
应用程序吞吐量、响应时间、资源使用率USE 方法(使用率、饱和度、错误)、进程剖析(进程状态、资源使用率、I/O 剖析、系统调用、热点函数、动态追踪)、APM(逻辑简化、编程语言、算法调优、非阻塞 I/O、利用缓存与缓冲区、异步处理并发、垃圾回收)
架构设计空间换时间(缓存、缓冲区、冗余数据)、时间换空间(压缩编码、页面交换)、并行处理(多线程、多进程、分布式)、异步处理(异步 I/O、消息队列、事件通知)
性能监控时间序列分析(历史趋势分析、性能模型构建、未来趋势预测)、服务调用追踪(服务调用流程跟踪、服务调用性能分析、服务调用链拓扑展示)、数据可视化(趋势图、散点图、热图、饼图)、告警通知(阈值选择、报警策略、通知阈值)
性能测试明确需求(系统资源需求、应用程序需求)、环境假设(合理的假设、生产环境模拟、生产负载模拟)、性能测试(基准测试、负载测试、压力测试)、结果分析(应用程序瓶颈、数据库瓶颈、系统资源瓶颈)
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使用量tree、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、吞吐量、IOWAITdstat、sar、iostat、pidstat、iotop、iolatency、blktrace、fio、perf系统调用、I/O资源控制、充分利用缓存、RAID、I/O隔离