性能優化方法論:
- 找到系統瓶頸後, 怎麼判斷優化是否有效,並且能提升多少性能??
- 如果有多個性能問題,應該先優化哪一個??
- 提升性能的方法並不是唯一的,當有多種方法可以選擇時,你會選擇哪一種?是不是總選那個最大程度提升性能的方法就行了呢??
性能評估指標三步走:
- 確定性能的量化指標
- 測試優化前的性能指標
- 測試優化後的性能指標
要避免性能測試工具干擾應用程序的性能
避免外部環境的變化影響性能指標的評估
性能問題不是單獨存在的,有可能同時存在多個性能問題,一般是遵循二八原則,多數性能問題只存在20%的代碼中,並不是所有的性能問題都值得優化
先優化系統資源的瓶頸
先優化有瓶頸導致的系統性能指標變化幅度最大的問題
應用程序優化:減少循環的層次 減少遞歸 減少動態分配
應用程序優化也有很多種方法:
編譯器優化
算法優化
異步處理
多線程代替多進程
善用緩存
系統優化:充分利用cpu的緩存,加速緩存訪問
控制進程的CPU使用情況,減少進程間的相互影響
方法:
CPU綁定: 將進程綁定CPU,提高CPU緩存的命中率
CPU獨佔:
優先級調整
爲進程設置資源限制:
NUMA優化:
中斷負載均衡:開啓smp_affinity,使中斷自動負載均衡到其它CPU上
不要過早 在需求之前優化