linux缓存-利用缓存提高性能的编程技巧

目录

利用缓存提高性能的编程技巧

实现方式


利用缓存提高性能的编程技巧

利用GCC编译器对齐属性  __attribute__((__aligned__(n))),利用处理器的缓存提高程序的执行速度;

  • 使变量的起始地址对齐到一级缓存行长度的整数倍;
  • 使结构体对齐到一级缓存行长度的整数倍
  • 使结构体中一个字段对齐到一级缓存行长度整数倍;
     

实现方式


1、以 4 个下划线开头的宏 cacheline_aligned : 对齐到 一级缓存行的长度 。

#ifndef —cacheline_aligned
#define —cacheline aligned _attribute (( _aligned_ (SMP CACHE_BYTES)))
#endif 

 2、以四个下划线开头的宏____cacheline_aligned_in_smp:在对称处理器系统中等价于宏____cacheline_aligned,在单处理器中是空的宏。

#ifndef cacheline aligned_in smp
#ifdef CONFIG_SMP
#define _ cacheline_aligned in smp _cacheline aligned
#else
#define cacheline_aligned in smp
#endif /* CONFIG SMP */
#endif

3、
以两个下划线开头的宏_cacheline_aligned: 对齐到一级缓存行的长度,并且把变
量放在 ".data..cacheline_aligned" 节中。 

#ifndef _ cacheline_aligned
#define _ cachel ine_al igned \
__attribute ((_ aligned (SMP CACHE BYTES) , \
__section_ (".data .. cacheline_aligned" )))
#endif /* _ cacheline_aligned */

4、以两个下划线开头的宏__cacheline_aligned_in_smp: 在对称多处理器系统中等价于宏__cacheline_aligned, 在单处理器系统中是空的宏。 



#ifndef _ cacheline_aligned_in smp
#ifdef CONFIG_SMP
#define _ cacheline_aligned in srnp
#else
#define _ cacheline_aligned in srnp
#endif /* CONFIG_SMP */
#endif

你可能感兴趣的:(linux内核分析,linux,缓存,运维)