目前行内系统,无论是前端应用还是后端应用,无论是单体服务还是微服务,包括数据持久化使用到的数据库和文件 系统,均运行在 Linux 操作系统上。因此我们在开展性能优化的工作时,linux 相关性能优化工作就是重中之重了。
另外,Linux 性能优化同时是最能体现工程师综合能力的技能之一,因为它涵盖了包括程序设计、编程语言、操作系 统、再到存储、网络等方方面面的各种知识储备。了解甚至掌握 Linux 性能优化对提升个人能力大有裨益,如果能够 将性能优化的各个关键点吃透,无疑就能被称为一个非常优秀的软件“攻城狮”了。
2. Linux CPU 性能优化基础
本篇文章主要针对 CPU 的性能优化相关知识进行展开学习:
2.1 CPU 常用性能指标说明
CPU 使用率
CPU 使用率表明了 CPU 运行的非空闲时间时间片占 CPU 总时间的百分比,根据 CPU 上运行任务的不同,还被划分为用户 CPU 使用率(CPU 在用户态运行的时间百分比)、系统 CPU 使用率(CPU 在内核态运行的时间百分比, 但不包含中断响应)、等待 IO 的 CPU 使用率(也称为 iowait,表示等待 I/O 的时间百分比)、软中断和硬中断的 CPU 使用率(内核调用软中断处理程序、硬中断处理程序的时间百分比)。
平均负载
平均负载代表了系统的整体负载情况,其本质是系统的平均活跃进程数。因此理想情况下,平均负载应该等于系统的逻辑 CPU 个数,表明这时恰好所有的 CPU 都被充分利用到了。
进程上下文切换
CPU 在进行不同的任务调度的时候需要进行上下文切换,过多的上下文切换会导致 CPU 运行时间过度消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,从而导致进程运行时间缩短。进程的上下文切换包含 2 种场景:
无法获取资源而导致的自愿上下文切换;
被系统强制调度导致的非自愿上下文切换;
CPU 缓存命中率
CPU 缓存是在 CPU 上存储的部分热点内存数据,为的是解决 CPU 和内存之间速度匹配问题,CPU 缓存的命中率表明了 CPU 缓存数据的复用情况,命中率越高,表示性能越好。
2.2 CPU 常用性能工具汇总
根据指标快查工具
根据工具查看指标
3. 常用 CPU 优化套路
3.1 CPU 资源分析思维导图
3.2 CPU 优化思路
第一,从 CPU 使用的角度来说,简化代码、优化算法、异步处理以及编译器优化等,都是常用的降低 CPU 使用率的方法,这样可以利用有限的 CPU 处理更多的请求。