1 2 3 4 5 6 下一页
FreeBSD 5-CURRENT刚刚引入了一个名为ULE调度器的内核调度单元调度器 。这个调度器在SMP系统中的效率要远好于FreeBSD以前版本的调度器(目前,那个调度器被称为4BSD调度器) 。新的ULE调度器的设计更像Solaris和Linux等操作系统的调度器 。Solaris的SMP性能非常好这一点是它的卖点之一,其调度器采用的优秀算法就是一个很重要的原因 。BSD派生系统,尽管由于系统整体设计的合理,以及操作系统其他部分的卓越性能弥补了它在SMP调度器上的不足,甚至尽管FreeBSD在绝大多数情况下的性能都超过
其他系统,但它使用的4BSD调度器的SMP性能不高仍然为人诟病 。
令人高兴的是,全新设计的ULE调度器引入了Solaris、Linux等系统在SMP调度方面的先进算法,并且,它在单处理器系统中的性能也相当不错,与4BSD调度器的性能相当 。
为什么新的ULE调度器能够获得更高的性能呢?最主要的原因在于,新的ULE调度器为每一个CPU单独维护运行队列,并且,CPU之间能够相互“窃取对方就绪队列中的任务,从而达到更好的平衡 。基本上,ULE调度器的设计符合下面的原则:尽可能利用更多的执行资源,尽可能使用局部锁,尽可能避免使用浪费执行资源的自旋锁,尽可能采用高效的调度算法(目前ULE调度器采用的算法的复杂度是O(1)) 。
【FreeBSD ULE调度器浅析】在笔者撰写这篇文章的时候,ULE调度器仍然处于进一步完善的过程中 。一方面,它已经能够提供比4BSD调度器更好的调度性能——内核态调度开销减少大约25%,而用户态的计算也有一定程度的缩减 。
本文所说的ULE调度器(src/sys/kern/sched_ule.c)的cvs tag是
$FreeBSD: src/sys/kern/sched_ule.c,v 1.8 2003/02/03 05:30:07 jeff Exp $未来版本的ULE调度器可能会和这个版本有一些出入,但不会太大 。
如果需要,您可以在这里下载所需的源代码[当然,我个人建议您还是checkout一份FreeBSD-CURRENT的源代码] 。由于引用
了调度器中的代码,根据源代码的授权许可协议,以下首先重述它的版权声明 。这份代码使用的是典型的BSD风格授权 。为了不至造成阅读困难,这断代马没有作语法点亮 。
/*-
* Copyright (c) 2003, Jeffrey Roberson
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice unmodifIEd, this list of conditions, and the following
* disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
中文大意如下,供参考;与英文不一致的地方以英文版本为准 。
版权所有
?br />2003 Jeffrey Roberson ,保留所有权力 。
推荐阅读
- FreeBSD VM内核内存管理
- 如何自行制作一张FreeBSD LiveCD
- Window /FreeBSD/Linux 多系统安装实践
- 采用FreeBSD IPSec Tunnel方式连接两个局域网络
- 如何freebsd下挂接移动硬盘,光驱,和fat格式的硬盘
- 在FreeBSD上建立一个功能完整的邮件服务器
- FreeBSD Command Tools入门必看
- LAM/MPI CLuster System With FreeBSD 5.3
- FreeBSD忘记root密码的一次修复
- FREEBSD的一些小技巧