在我们的系统中,我尝试用
修改所有主要数据结构__attribute__((__aligned__(CACHE_LINE_SIZE)))
实际上并没有改善任何表现。我们如何使用缓存对齐并衡量它的帮助?
答案 0 :(得分:2)
如果跨线程共享数据,则缓存对齐仅提高性能。那是什么意思?如果你有两个字段,其中一个频繁地共享和更新,一个没有,并且它们在同一个缓存行中,然后访问“冷”字段(不经常更新的字段)与访问“热”字段相同的惩罚一,因为'hot'字段的更新使整个缓存行的其他线程(CPU线程)无效,从而也使'cold'字段无效。类似的情况是两个“热”字段共享缓存行并使彼此无效。
对于其他情况,缓存对齐不会提高性能,实际上可能会通过增加数据大小来损害性能。
要考虑您需要的缓存对齐:
我推荐Scott Meyer的演讲CPU Caches and Why You Care。