第二周——CPU性能篇总结
Contents
看了一遍第一阶段的cpu性能篇,对cpu性能分析有一个大概的了解;由于遗忘的缘故,花了点时间重新阅读一遍,顺便写下第一阶段的总结。以前对linux性能优化的场景没接触过,对运用linux上的软件(perf)可以直接分析出源码上的问题感到惊讶,这让我觉得学习这个专栏非常有必要的。
那么什么是性能优化?随着应用负载的增加,系统资源的使用也会升到,有可能导致系统资源达到了瓶颈。我们要找出应用或者系统的瓶颈,并设法去避免缓解他们。
总结了一下,第一阶段CPU性能篇的性能指标:
1.平均负载(Load Average)
- 平均负载:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数
- 导致平均负载高的三个场景:cpu密集型、i/o密集型、大量进程
- 分析工具:uptime、mpstat、pidstat
2.进程上下文切换
- 上下文切换:先把前一个任务的CPU上下文保存起来,然后加载新任务的上下文到这些寄存器和程序计数器中,最后再跳转到程序计数器所指的新位置,运行新任务。
- 上线文切换:进程上下文切换、线程上下文切换、中断上下文切换
- 指标:
- 自愿上下文切换:无法获取资源导致
- 非自愿上下文切换:被系统强制调度导致
- 分析工具:vmstat、pidstat(-w线程-t进程)、/proc/interrupts(中断)
3.CPU使用率
- cpu使用率:就是除了空闲时间外的其他时间占总CPU时间的百分比
- 指标:
- 用户CPU使用率:包括用户态 CPU 使用率(%user)和低优先级用户态 CPU 使用率 (%nice)
- 系统 CPU 使用率:(%system)表示 CPU 在内核态运行的时间百分比(不包括中断)。
- 等待 I/O 的CPU使用率:通常也称为 iowait
- 分析工具:top、ps、pidstat、perf、pstree、execsnoop
- 软中断和硬中断的 CPU 使用率:中断是一种起步的事件处理机制,可以提高系统并发处理
- 中断(%irq)、软中断(%softirq)
- 软中断分析工具:ps、/proc/softirqs、/proc/interrupts、sar、tcpdump
- 不可中断进程-分析工具:top、dstat、pidstat、perf
- 僵尸进程-分析工具:top、pstree 4.cpu缓存命中
优化的方法:
- 应用层面:编译器优化、算法优化、异步处理、多线程代替多进程、善用缓存
- 系统优化:CPU 绑定、优先级调整、为进程设置资源限制、NUMA优化、中断负载均衡
Author zhuyhan
LastMod 2020-06-04