“linux内核SMP负载均衡浅析”一篇

 

linux内核SMP负载均衡浅析

 

实时进程的负载均衡

 

这里有句话,“‘每个CPU去竞争每一个run_queue’比‘每个CPU去竞争一个总的run_queue’略微好一些”。这两种策略之间的区别,显然是多服务台和单服务台的区别,在银行拍过队人的根据经验就能判断。

 

乍看之下,这种top-N的筛选对调度程序该是费时费力的,不过考虑常见的片上SMP系统的N都是个位数,貌似可以接受。

 

普通进程的负载均衡

 

update_cpu_load确实有趣,this_rq->cpu_load[i]的每一项都保存了历史上run_queue load值的加权滑动平均值(weighted moving average),不同的均值之间的差异在于其权重。这里面的数学原理也简单,一个load值序列与函数f(k)=(1-2^i)^(-k)的卷积。巧妙地是这短短几行代码就做了这件事。

 

调度域

 

这里引出了一个概念,SMT(Simultaneous multithreading)同时多线程。目前来看,这是种依赖硬件实现的技术,不过在调度软件看来,跟SMP一样的效果。

 

再有就是“迁移线程”的概念,分布式执行的回调函数要比集中调度好一些?

 

后记:Linux2.6内核加入的诸多对多处理器以及多线程的新的支持特性给人印象深刻。各种层次并行技术涉及的面非常广,从mpp(Massively Parallel Processing)到tlp(Thread-Level Parallel)内容庞杂。这篇文章提供了窥探并行系统内部逻辑的机会,值得一读。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值