免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2003 | 回复: 7

[FreeBSD] FreeBSD支持SMP否???? [复制链接]

论坛徽章:
0
发表于 2004-01-07 00:41 |显示全部楼层
我们服务器装的LINUX
只有一个CPU
但是可以用SMP的
top的时候 可以看到2个CPU

现在想改成FreeBSD的系统
不知道FreeBSD支持这样么?
刚才搜索了一下 信息很少 好象不可以的样子

论坛徽章:
0
发表于 2004-01-07 00:57 |显示全部楼层

FreeBSD支持SMP否????

晕怎么不可以啊,,
偶P4 2.4 CG就是SMP的
编译内核的时候支持一下就可以啊/

论坛徽章:
0
发表于 2004-01-07 17:38 |显示全部楼层

FreeBSD支持SMP否????

需要重新编译内核
去掉下面两行前面的#:
options SMP
options APIC_IO
如果是超线程的SMP还需要把下面这行前面的#去掉:
options HTT

论坛徽章:
0
发表于 2004-01-10 18:58 |显示全部楼层

FreeBSD支持SMP否????

要到5.X版SMP支持才好,不知道是么?

论坛徽章:
0
发表于 2004-01-10 19:19 |显示全部楼层

FreeBSD支持SMP否????

5.x对SMP的支持是好d~ :em11: :em11: :em11:

http://www.cnfug.org/project/ffs/contents.html

《FreeBSD使用大全》第二版    作者:王波


1.5.1 下一代SMP支持

对于高端服务器来讲,不再是单处理器的系统,而是使用了多个中央处理器共同执行计算任务。目前,服务器通常使用的是SMP方式,就是说多个处理器处于等价的地位,可以访问同样的内存空间,有相同的机会同时处理计算任务。因此对于SMP系统,原则上就可以将多个计算任务同时分配给多个处理器同时进行,达到提高系统性能的目的。

然而,事情总不是那么简单的,因为如果希望计算任务能够被很好的并行处理,那么计算任务应该能划分为很多个互不相关的子任务,这样才能同时提供给多个处理器进行处理,满足并行处理的需要。如果计算任务不能划分为这样的多个子任务,这样就可能出现一个处理器工作的时候,另一个处理器由于必须等待而处于空闲状态的情况,这样,系统性能就不能像理想中的那样成倍增加。

由于Unix本身是多任务的,系统本身就存在多个进程,最简单的考虑是每个处理器可以处理一些进程对应的任务,达到并行处理的目的。然而,这些进程可以通过系统调用进入内核空间执行任务,内核本身也会执行相应的处理任务,当计算任务进入内核当中,问题就比较复杂了。

因为传统的Unix的内核是不可抢占的,一个内核任务和用户进程任务是不同的,一旦执行一个内核任务,就必须等待这个任务执行完毕才能执行下一个内核任务。例如硬件中断处理,由于硬件资源的唯一性,必须等待一个处理任务处理完毕之后,才能进行下一个中断处理。但事实上很多内核任务还是可以同时处理的,例如对不同硬件的处理等等。因此如果在Unix中增加SMP支持,就需要解决这个内核的计算任务的并行化问题。

并行化的关键就是对一些硬件资源进行加锁保护,以防止对同一个资源的并发访问,导致数据错误。在目前的FreeBSD系统中,采取的是比较简单而且保守的策略,就是说对资源采用排他锁的方式进行保护,一但内核任务出现冲突,就进行锁定,而不管系统中是否还存在其他可以并行执行的任务。这种排他锁的做法虽然比较简单,但由于大多数情况都是用户进程的并行处理,内核操作的冲突比较少,还是能够满足并行处理的要求的。但在更复杂的情况下,例如存在大量系统调用或内核操作的情况下,这种简单的策略就造成了很多本可以并行处理的内核操作不得不顺序进行,使得系统的性能无法成倍的提升。

FreeBSD的这种简单化的策略就使得目前版本的FreeBSD在高端服务器上的性能表现上并不是十分理想。因此在FreeBSD 5.0系列中,对于SMP的支持将完全重写,这一部分工作称为SMPng,它将参考商业的BSD/OS中的部分优点,并移植BSD/OS中的一些代码,从而使得对SMP的支持更为优秀。

SMPng需要完成的目标就是能够实现内核任务或中断处理的可并发执行,以充分利用多处理器的能力,当然这不可能在FreeBSD 5.0中完全解决,但5.0将提供一个很好的开始。首先需要完成的工作就是使用更精细的锁定策略,很多操作系统的锁定机制要比FreeBSD要好,例如在BSD/OS中,当一个处理器处理的内核任务不能执行时,该处理器可以去执行其他的处理任务,而不是简单的锁定。

但在SMPng中,所完成的工作事实上将更复杂,SMPng将保留原来系统的SMP支持中的排他锁方式用来支持目前存在的内核处理,但添加了更复杂的调度锁,以支持多处理器处理。进行锁定处理的关键是资源的唯一性,一些资源在一个时间只能被一个任务进行处理,否则就可能发生不一致的问题,而如果将这个只能被唯一访问的资源改变为多路复用器,多个计算任务就可以同时访问它了,SMPng的调度锁的实质就是这个目的。因此,接下来的工作就是查看所有的多处理器相关的内核代码,将可能冲突的资源更改为新的调度锁。

此外,SMPng中还要改善中断处理例程,传统的Unix中断处理不可被中断,这样就不适合SMP的情况。SMPng中将改变中断处理例程,使其具备上下文的属性,使得中断处理例程可以被再次中断和重新进入。SMPng的这些复杂的工作,将使得中断处理和其他内核操作中互斥的部分降低到最少,达到内核任务可以并行执行的目的。显然,SMPng的工作将明显改善FreeBSD对于SMP的支持,改善FreeBSD在高端服务器系统上的性能。

论坛徽章:
0
发表于 2004-02-01 23:53 |显示全部楼层

FreeBSD支持SMP否????

原帖由 "solaris007" 发表:
需要重新编译内核
去掉下面两行前面的#:
options SMP
options APIC_IO
如果是超线程的SMP还需要把下面这行前面的#去掉:
options HTT

我的是HT的CPU,操作系统是4.9,把HTT的#去了,config时说没有HTT,只去SMP和APIC_IO它就直接认出二个cpu了。
真是很奇怪的说。

论坛徽章:
0
发表于 2004-02-02 09:33 |显示全部楼层

FreeBSD支持SMP否????

原帖由 "hdcola" 发表:

我的是HT的CPU,操作系统是4.9,把HTT的#去了,config时说没有HTT,只去SMP和APIC_IO它就直接认出二个cpu了。
真是很奇怪的说。


4.9 的 HTT 已经变成默认的了,所以就没有该选项了:

[quote="/usr/src/UPDATING"]
...
20031028:
        FreeBSD 4.9-RELEASE.

20031022:
        Support for HyperThread logical CPUs has now been enabled by
        default.  As a result, the HTT kernel option no longer exists.
        Instead, the logical CPUs are always started so that they can
        handle interrupts.  However, the extra logical CPUs are prevented
        from executing user processes by default.  To enable the logical
        CPUs, change the value of the machdep.hlt_logical_cpus from 1 to
        0.  This value can also be set from the loader as a tunable of
        the same name.
...
[/quote]

论坛徽章:
0
发表于 2004-02-02 10:47 |显示全部楼层

FreeBSD支持SMP否????

原帖由 "leaner" 发表:
我们服务器装的LINUX
只有一个CPU
但是可以用SMP的
top的时候 可以看到2个CPU

现在想改成FreeBSD的系统
不知道FreeBSD支持这样么?
刚才搜索了一下 信息很少 好象不可以的样子




SMP不是至少两个CPU才可以用吗
为什么楼主1个CPU就可以用啊
那位说说啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP