Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257481
  • 博文数量: 7
  • 博客积分: 271
  • 博客等级: 二等列兵
  • 技术积分: 835
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-09 18:13
文章分类

全部博文(7)

文章存档

2014年(1)

2013年(1)

2012年(5)

分类: LINUX

2013-08-17 09:34:05

现在多核处理器使用的非常多了,价格也很便宜。但linux 操作系统以SMP的方式运行在多个核上时,虽然性能随着cpu核数的增加而增加,而增加的幅度却有限。
其中一个重要的原因是,虽然cpu核数虽然很多,但调度器只有一个,并且运行在一个cpu上,每个cpu核上的进程或线程要调度时,都需要该调度器进行调度。这是一个性能的瓶颈。下提到分布式调度的设想,请各位大侠拍砖。

分布式调度器的设想:除了一个集中调度器外,每个cpu核心上设计一个子调度器。
子调度器的职责:负责自己cpu核心上的进程和线程的调度。和总调度器通信,报告自己的运行状态。当然需要设置门限,如多少时间通信一次,或cpu负载到达某上限或下限。并接受总调度器分配的进程和线程。
度器的职责:负责给各个cpu(即子调度器)分配要运行的进程和线程,定期收集各个cpu的负载情况。接收cpu上报的负载达上限或下限的信息,并根据信息进行平衡各个cpu负载。总调度器不再负责每个cpu核心上的具体调度事宜,该工作有cpu核心上的子调度器负责。

上面的设想基于这种假设:通常一个进程分配到某个cpu后,被重新调度到其他cpu核心的情况很少。基本上第一次分配给哪个cpu核心,就不会更换。
阅读(5433) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~