这不是 FreeBSD 与 [插入最喜欢的 Linux 服务器发行版] 的比较。
我感兴趣的是了解为什么会出现这样的问题,以及如果出现这样的问题该如何解决。
我主要想为当地红十字会医院实施基于 FreeSwitch 的 PBX。就我而言,我想拓宽我的视野。我既不是 Linux 专家,也不是 FreeBSD 专家,但我也不差。
现在,经过大量的谷歌搜索,我了解到 FreeBSD 和 SMP 存在问题,但 Linux 没有问题,但说实话,我还没有看到任何问题,而且我有几个 BSD 服务器以及 CentOS、Ubuntu 和 Debian。
那么,有问题吗?如果有问题,您如何解决它(如果可能的话,因为我在 FreeBSD 网站上看到 FreeBSD 是为 x86 架构设计的)。
答案1
FreeBSD 在 6.x 和 7.x 分支中实验性的调度程序“ULE”存在问题(它是在 5.x 中引入的,但众所周知非常不稳定)。当它出现这些问题时,它从未成为任何生产版本的默认调度程序。我在开发期间运行过 ULE,从未遇到过任何问题。
问题是一种技术性极强的竞争条件,除非服务器负载过重,否则这种情况不太可能发生;随着内核数量的增加,问题会变得更加严重,因此大多数计算机都不会遇到这种情况。但结果是机器死锁,无法自动重启;因此,这个问题是一种生产责任。
从那时起,竞争条件已经得到解决,ULE 现在已完全稳定。它已成为 8.x 的默认调度程序,并且对于大量核心来说效率更高。以前的调度程序 (4BSD) 适用于 SMP 系统,但扩展性较差;在具有 4 个以上核心的系统上非常明显。
PS:BSD 最初是为 PDP-11 编写的,代码仍然非常易于移植。FreeBSD 和 NetBSD 因优化差异而分道扬镳(故事非常简短!),FreeBSD 专注于 i386/AMD64;NetBSD 专注于可移植性。顺便说一句:OpenBSD 脱离了 NetBSD,专注于安全性;而 DragonflyBSD 脱离了 FreeBSD,专注于极端稳定性。