Tools
- Perf linux内核自带了一个性能分析工具
 - Dperf CPU(Octeon)提供的各种硬件监测指标(通过读取各种寄存器)
 
监控因子:
- cache miss
 - cache hit
 - function run cycle
 - instruction num
 - Branch miss
 
原理:运行时设置,通过修改函数入口和出口处的跳转至监控代码处。
系统级的优化
- 减少tlb miss,通过btlb实现;
 - 代码段热点流程函数指定在同一个段中,减少代码跨度大导致的指令cache miss;
 - 根据cache的策略调整地址空间;很多cpu用虚拟地址索引,物理地址匹配cache 行,多核情况下,可将同构的多核代码虚拟地址错开;
 - 编译选项-o3;
 - 指令预取;
 
代码级优化
- 减少锁冲突; 能local的数据尽量local; 采用无锁优化算法;
 - 指令上的优化;比如memset可用64位指令赋值来优化;
 - 关键位置代码使用短小精悍的内嵌汇编代码实现;
 - 用移位实现乘除法运算;
 - inline函数; 宏定义;减少压栈出栈的时间开销;
 - static增加内联;
 - 固定查表优化;
 - likely/unlikely 增加分支预测准确度;
 - 数据结构cache line对齐;
 - 业务算法优化;