SMP in Linux


这是我在LUGTongji做的关于SMP的讲座PPT。


我的部分主要关于高性能计算及未来计算机体系结构部分。


为了实现高性能计算,使用过很多种方法。


但是遗憾的是,种种原因使得,并不是增加CPU就能够提高性能。


这是多年以来典型的单处理机架构。在这种架构上,提升主频能够显著改善程序执行速度。


这是典型的SMP架构。SMP架构有很多致命的缺陷使得其扩展性不高。主要原因是多CPU对FSB的竞争。


这是Intel Duo Core架构,也是一种紧耦合SMP。


这是为了解决SMP各种缺点的一种架构,NUMA。介于SMP和Cluster之间。


这是高性能计算架构Computing Cluster。


下面介绍一些高性能计算的发展趋势。


NUMA克服了SMP的主要缺点。


高性能计算中CPU和内存瓶颈。


Intel研究院的技术展望。


网络传输瓶颈的解决。


下面是关于2.6 Linux对于SMP的实现介绍。


早期版本Linux对于SMP的支持不足。


2.6 Linux每个CPU使用一对任务队列进行CFS调度。


当Active队列中某进程用完时间片,将重算时间片,加入到同级别Expired队列尾部。


当某个优先级任务队列为空时,简单交换同级别的两个队列指针。


调度器的工作就相对简单,只需要安装优先级降低方向,寻找非空的任务队列,然后取得第一个任务指向即可。


Linux使用5个32位字构成位图,组织140个优先级(末20个浪费)。


某CPU进行调度时,只需要锁两个运行队列即可,而不是整个内核。


2.6 Linux调度器还有很多其他特性。


SMP调度器可以进行负载均衡。拉方案是把其他处理机上的任务平衡到本处理机。


但同时,Linux进行了诸多限制。


迁移顺序。种种限制,Linux倾向于尽量不做负载均衡。


推方案是主动将任务转移到其他处理机的转移方案。


内核使用一个实时进程进行迁移。


NUMA的负载均衡更加复杂。


Q & A


Thanks

1 comment

  1. Hi :
    Your ppt file style is so cool. Could you tell me what style that you used?
    Do you use office power point to create it ?
    Do you use any pattern or create by your self?

    I ready need it. Could tell me or mail me ? Thank you so much.
    My email: antoniocheng@gmail.com

发表评论