CPU 应用性能优化的方法论

康凯森大约 2 分钟

优化的层次

如图所示:

cpu-genenal
cpu-genenal

如上图所示,数据库也是一个大型的 CPU 应用,所以我们可以先按照所有 CPU 应用的通用优化思路去优化数据库的查询性能,比如自底向上我们依次可以从这些点进行优化:

  1. 更好地利用硬件:首先是直接替换硬件,比如从机械硬盘替换为 NVME,SSB,另一方面,为了充分发挥新硬件的性能优势,我们往往需要在系统架构,数据结构和算法层面针对新硬件进行优化
  2. 更好地利用操作系统: 操作系统的内核升级往往会给我们带来大量新功能和性能优化,比如 io_uring 异步 IO 接口
  3. 更好地利用编译器:编译器持续在优化性能,往往低版本不能自动向量化的代码,在高版本就可以自动向量化了
  4. 更好的编程语言和第三方库:首先是编程语言本身的性能差距,其次是在同样的编程语言下,也有大量的性能优化技巧,这个我之后会专门再写篇文章
  5. 更好的应用架构:应用的架构会直接影响可扩展性,对性能的影响会很大,比如 MPP VS Scatter-Gather
  6. 更好的数据结构和算法:不同的数据结构和算法往往会有量级的性能差距,这个大家都深有体会,比如 hashtable, 这个数据结构,工业界几十年一直在持续优化。
  7. Low Level的优化:比如 SIMD 和 CPU Cache
  8. 更简单的业务逻辑:比如从精确去重变为近似去重,比如数据建模的优化