Chinaunix首页 | 论坛 | 博客
  • 博客访问: 291220
  • 博文数量: 49
  • 博客积分: 3083
  • 博客等级: 中校
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 08:22
文章分类

全部博文(49)

文章存档

2009年(8)

2008年(41)

分类: LINUX

2008-06-18 19:42:56

    前几天在CU论坛里看到这样一篇帖子。问及有关内核对多CPU支持的情况。正好我在阅读/kernel/sched.c。我谈下我自己的对SMP的认识。
    SMP的全称是"对称多处理"(Symmetrical Multi-Processing)技术,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。它是相对非对称多处理技术而言的、应用十分广泛的并行技术。在这种架构中,一台电脑不再由单个CPU组成,而同时由多个处理器运行操作系统的单一复本,并共享内存和一台计算机的其他资源。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力。所有的处理器都可以平等地访问内存、 I/O和外部中断。在对称多处理系统中,系统资源被系统中所有CPU共享,工作负载能够均匀地分配到所有可用处理器之上。

    通过对内核进行分析。在kernel/sched.c中,前几行注释就如此说明:“1996-12-23  Modified by Dave Grothe to fix bugs in semaphores and make semaphores SMP safe”,我们可以知道,早在1996年SMP就出现了,并且已经得到了一定的完善。在kernel/sched.c中搜索#indef CONFIG_SMP可以找到很多有关多CPU的相关处理信息,包括CPU选择,调度……我所阅读的内核版本为2.6.25.4已经是2.6.23之后的版本了,其调度方式为CFS(CFS其他内容可以参考http://blog.chinaunix.net/u1/44250/showart_1002643.html)。CFS试图按照对 CPU 时间的 “最大需求(gravest need)” 运行任务;这有助于确保每个进程可以获得对 CPU 的公平共享。通过对sched.c的阅读可以知道SMP在CFS上的表现的更加流畅,能够对当前进程所使用的CPU进行CFS调度,还可以合理的在CPU之间选择空闲的CPU进行分配任务,大大加强了系统资源的利用率,能够大大提高系统运行的效率。
阅读(1344) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~