高级进程管理之处理器亲和性

Linux支持具有多个处理器的单一系统。引导过程除外,支持多个处理器的大量工作由进程调度程序负责。在对称多重处理(SMP)及其上,进程调度程序必须决定每个CPU上要运行哪些进程。有两项挑战源自此责任:调度程序必须想办法充分利用系统上的所有处理器,因为当有一个进程已就绪等待运行,却有一个CPU闲置一旁,这显然没有效率。

 

然而一个进程一旦被安排在某个CPU上运行,往后进程调度程序也会将它安排在相同的CPU上运行。这是有益的,因为将一个进程从一个处理器迁移到另一个处理器是要付出代价的。

 

这些代价中最大者与“迁移的缓存区效应”(cache effect)有关。由于现在SMP系统的设计,与每个处理器相关的缓存区是不同且独立的。也就是说,如果数据位于一个处理器的缓存区中,就不会位于另一个处理器的缓存区中。因此,如果一个进程被迁移往一个新的CPU,而且将新的数据写入内存,那么位于旧CPU缓存区中的数据就过时了。现在若使用该缓存区,则会导致数据被破坏。为了避免此现象,当一个缓存区中缓存了一个新的内存块时,这会让其他每个缓存区中的数据失效。因此任何时刻特定的一段数据只能出现在一个处理器的缓存区中(假设数据全部被缓存起来)。当有一个进程从一个处理器移往另一个处理器时会付出两种代价:被移动的进程无法访问被缓存起来的数据,而且位于原处理器缓存区的数据必须作废。因为必须付出这些代价,所以进程调度程序会尽可能为一个进程安排特定的CPU来运行它。

 

当然,进程调度程序的两项目标可能无法实现。如果一个处理器的进程负荷比另一个处理器大很多(或者,更糟糕的是,如果一个处理器处于忙碌状态,而另一个处理器却闲置一旁),明智的做法是对一些进程重新调度,让它们在比较不忙的CPU上运行。决定何时移动进程以响应此类不平衡的状态称为负载均衡(loa

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值