每cpu变量的作用
为什么要定义每cpu变量?
这其实和linux内部的同步有关,因为如果我们把变量定义成所有cpu都可以访问的,那么就必须用同步机制来保证cpu对这个变量的互斥访问,很明显这是要花费时间的。
Linux内核为了能够减少这种时间开销,就在每个cpu都定义了一个一模一样的变量,这样每个cpu都使用自己的变量,而不会去访问其它cpu上的变量,也就没有了同步的开销。
不过在使用每cpu变量时,必须保证禁用内核抢占。因为内核抢占还是会使每cpu变量产生竞争条件,例如一个内核控制路径获得了它的每cpu变量本地副本的地址,然后它又被抢占跑到另一个cpu上去了,但仍然使用原来cpu上的每cpu变量。
本文探讨了Linux内核中每CPU变量的概念及其作用,解释了为何采用每CPU变量可以减少同步开销,并强调了在使用这类变量时需要注意内核抢占的问题。
563

被折叠的 条评论
为什么被折叠?



