FreeBSD 2004 年 1-2 月状态报告
2004 年开始的这两个月对于该项目来说充满了激动人心的进展。FreeBSD 5.2 在 1 月初发布,随后在 2 月发布了 5.2.1 的修复版本。展望未来,我们预计 FreeBSD 4.10 将在 4 月底发布,而 FreeBSD 5.3 将在夏季中期发布。别忘了通过购买最新的 CD/DVD 套件来支持 FreeBSD 的供应商和开发人员。
谢谢,
Scott Long
联系人:Maksim Yevmenkin <m_evmenkin@yahoo.com>
没有太多的进展可报告。蓝牙服务发现协议守护进程 sdpd 已经与现有的蓝牙工具集成。从现在开始,用户不应使用 GNU sdpd(Linux BlueZ 移植版)。
蓝牙 HID 配置文件的实现几乎完成。感谢 Matt Peterson < matt at peterson dot org > 为开发提供了蓝牙键盘和鼠标。
联系人:Andre Oppermann <andre@FreeBSD.org>
当前的 TCP 发送和接收缓冲区是静态的,并设置为保守值,以节省内核内存。这对于具有高带宽*延迟乘积的连接来说并不理想,因为 TCP 发送缓冲区的大小决定了发送窗口的最大值。对于高带宽的跨大陆链路,这严重限制了每个 TCP 连接的最大传输速度。例如,170ms 的 RTT 和 32kB 的发送缓冲区将传输速度限制为大约 1.5Mbit 每秒,即使你有一个 10Mbit 的管道。
这个项目使 TCP 发送缓冲区能够自动适应最大链路使用率的最佳缓冲区大小。在上述例子中,这将是大约 220kB 的缓冲区。主要挑战是如何稳定且可靠地测量链路参数,并以公平的方式管理内核内存。我们不希望少数连接垄断所有可用的套接字缓冲区空间,并且必须考虑许多边缘情况。该项目的首次实现将以保守的方式进行调整,但即使如此,它也将比当前的静态缓冲区提供显著更好的性能。这个项目的工作已经在进行中。
链接
联系人:Alexander Leidinger <netchild@FreeBSD.org>
如果没有发生什么问题,icc 补丁应该已在此报告提交截止日期附近被提交。有关更多信息,请查阅 -current / cvs-all 的归档。
该项目的下一步是:
修复内核,使其在使用 icc v8 编译时也能正常运行
如果更多人尝试后出现问题,修复内核
使一些 Port 能够使用 icc 编译
联系人:Poul-Henning Kamp <phk@FreeBSD.org>
在磁盘和设备 I/O 的总体领域,我们通过在 dev_t 上实现正确的引用计数,达成了一个重要的里程碑。我们现在能够正确地分配和释放 dev_t。克隆设备驱动程序也通过添加单元号管理例程,使它们的工作变得更容易。
尚未完全决定在追求真正的 SMPng I/O 子系统的过程中下一步的方向,但一个主要候选方向是实现设备访问 vnode 绕过,以提高系统中的并发性:我们将直接从文件描述符层到达 DEVFS/SPECFS,而不是每次对设备进行 I/O 操作时都要经过 vnodes。除了去除 Giant 的磁盘 I/O 之外,这还应该使我们能够将整个 tty 子系统和 PTY 驱动程序从 Giant 下面抽离出来,我们预计这将显著改善系统的响应速度。
链接
联系人:FreeBSD GNOME 团队 <gnome@FreeBSD.org>
距离我们上次的状态报告已经一年,但我们没有放慢进展。从上次报告以来,Alexander Nedotsukov(bland)和 Pav Lucistnik(pav)加入了 FreeBSD GNOME 团队。GNOME 2.4 于 2003 年 9 月发布,随后发布了 2.4.1 和 2.4.2 版本。我们正在积极努力在 3 月底发布 GNOME 2.6.0。GNOME 2.6 Beta 版本可以通过上述项目网址获取。
为了让 GNOME 2.6.0 成为我们迄今为止最好的版本,我们创建了一个脚本来自动从 GNOME 2.4 升级。我们还建立了一个新的 GNOME 包构建服务器,为所有受支持的 FreeBSD 版本构建并提供 i386 包。我们计划在 2.6.0 版本进入 Ports 时,立即提供 GNOME 2.6.0 包。
GNOME 2.6 发布版中包含 GTK+ 2.4,这是 GTK+ 2 系列的下一部分。由于 GTK+ 2 在过去几年中已经变得非常稳定,FreeBSD GNOME 团队正在推动所有支持 GTK+ 2 的应用程序默认包括 GTK+ 2 支持。Mozilla、Firefox 和 Thunderbird 已经完成了这一工作。现在,使用 GTK+ 2 就可以构建一个完整的 GNOME 桌面和应用环境。最终目标是将 GTK+ 1 从 Ports 中逐步淘汰。
联系人:Kris Kennaway <kris@FreeBSD.org>
分布式软件包构建目前通过一套自制的 shell 脚本来管理、调度和分发客户端机器上的软件包构建任务。这在过去满足了我们的需求,但存在一些显著的缺点,限制了未来的发展。我正在重写软件包构建脚本,使其能够基于 Sun GridEngine(ports/sysutils/sge)工作,作为“FreeBSD 软件包网格”的客户端应用程序。新系统的一些设计目标包括:
更强的机器故障容错能力,更高效的软件包构建任务调度
支持远程构建机器,更好地利用不同局域网的机器资源和集群
允许其他提交者提交 Ports 构建任务,进行更改、测试新 Port 等
链接
联系人:Mark Linimon <linimon_at_lonesome_dot_com>
感谢 Will Andrews 借用的机器,该系统已投入生产。之前在 lonesome.com 的安装现已指向新系统。作为安装的一部分,添加了初步的 FAQ。
数据库每小时更新一次。
新的报告包括关于标记为 DEPRECATED 的 Port 报告,因为该功能现已被合并到 bsd.port.mk 中。(作者希望这能使 Port 弃用过程对整个 FreeBSD 用户社区更加可见。)此外,还添加了标记为 FORBIDDEN 的 Port 报告(代码基本相同)。
接下来的关注点是尝试识别哪些 Port 是从属 Port,因为这些 Port 的状态目前没有自动更新。这一问题也影响了 FreshPorts。PR ports/63683 是解决此问题的尝试。此外,已经做了一些初步工作,用于创建各种统计图表,以及创建一个浏览整个 Ports,Port 依赖关系的工具。
关于 Port 是、 PR 的趋势,做出了一些总体观察:
在过去 6 个月中,提交 Port PR 的时间显著减少。(尤其是新 Port 的 PR。)
未维护的现有 Port 的 PR 队列也得到了精简。这两个问题在很大程度上归功于几位非常活跃的提交者(他们是如何完成“真正”的工作的呢?)感谢你们,大家知道自己是谁。
目前仍然有相当高数量的 PR(约 400/750)适用于现有 Port,并已分配给 FreeBSD 提交者。这涉及大约 370 个独立的 Port。我们似乎很难让这些数字下降;基本上,大部分周我们只是持平。这有点令人失望。
标记为 BROKEN 的 Port 数量急剧上升,目前已超过 250 个(i386-current)。这不完全是突然出现的问题,而是 Kris 为了让人们注意现有的故障而付出的努力——因此,标记为 BROKEN 的构建错误 Port 数量大幅增加。
约三分之二的 Port 构建错误仍然是由于编译问题,主要源自 gcc3.3 的引入。另有 10% 无法正确安装。其他错误原因则更为多样。
联系人:Olivier Houchard <cognet@FreeBSD.org>
开发进展相当快,目前已支持单用户模式启动。仍然非常以 simics 为中心,且需要大量清理和修复一些错误,但已经有了相当数量的代码可以使用,主要来自 NetBSD。我现在计划开始支持真实硬件(尽快获得硬件后),并完善缺失的用户空间部分(主要是 rtld 和 pthread 库),以便能够构建完整的系统。
链接
联系人:Marcel Moolenaar <marcel@FreeBSD.org>
PMAP 改进工作已经启动。将解决许多问题,包括支持稀疏物理内存和 SMP 的支持。当然,性能也会尽可能地进行优化,但功能性优先于性能。此次重设计将为可能的 NUMA 支持奠定基础。举例来说,TLB 的清除操作将限制为那些实际拥有或曾拥有与 PMAP 相关的 TLB 的处理器。当然,如果没有 NUMA 硬件,NUMA 支持的实现将受到很大限制。
链接
联系人:FreeSBIE 团队 <staff@FreeSBIE.org>
FreeSBIE 项目旨在开发一套脚本,允许任何人创建自己的 FreeBSD 可启动 CD-ROM,并安装自己选择的软件包。该项目发布了一个使用 FreeSBIE 脚本构建的 ISO 镜像,以展示它们的功能。2004 年 2 月 29 日,FreeSBIE 1.0 发布并获得了极大的成功,相关帖子出现在 Slashdot.org、OSnews、DaemonNews 和 BSDForums 上。由于获得了大量的反馈,FreeSBIE 开发者现在正在开发新特性,如支持不同于 i386 的架构。网站的重新设计也在进行中。
链接
联系人:Nicholas Souchu <nsouch@FreeBSD.org>
已完成迁移到 Perforce。我花了一些时间构建与 Linux 兼容的通用编译树:直到现在,驱动程序是在 FreeBSD 的 makefile 树中构建的,但这种方式与 Linux 不兼容。
接下来的优先事项是为 KGC 内核图形控制台系统添加 ANSI 支持和键盘映射。
链接:http://people.freebsd.org/~kientzle/
联系人:Tim Kientzle <kientzle@FreeBSD.org>
libarchive(包含完整文档)已提交至 -CURRENT。bsdtar 应该很快也会提交。接下来的几个月里,gtar 和 bsdtar 将同时在基本系统中提供。等到 bsdtar 加入树中后,我希望能够恢复对 libpkg 和 pkg_add 重写的工作。
请注意,bsdtar 不是 gtar 的完全替代品:它在某些方面做得更好(读取/写入标准格式、归档 ACL 和文件标志,自动检测格式和压缩方式),在一些方面做得较差(不处理多卷归档或稀疏文件),还有一些方面则只是有所不同(默认写入 POSIX 格式归档,而非 GNU 格式)。命令行足够相似,大多数用户应该不会遇到过渡问题。然而,那些依赖 gtar 特殊选项或功能的用户可能需要转向 ports。
联系人:Andre Oppermann <andre@FreeBSD.org>
当前,ARP(IP 地址到 MAC 地址的映射)被放置在路由表(FIB)中,但这是不合适的。我们将把它移到自己的基于哈希的结构中,并且每个 802.1 广播域会实例化一个该结构。通过此更改,多个接口可以存在于相同的 IP 子网和数据链路层广播域中。ARP 处理和路由表随后将大大简化。作为额外的好处,将提供基于 MAC 地址的完全访问控制。目前,该项目的工作已经在进行中。
联系人:Poul-Henning Kamp <phk@FreeBSD.org>
NanoBSD(src/tools/tools/nanobsd)是一个工具,用于将 FreeBSD 安装到小型磁盘媒体(如 CompactFlash)中,适用于嵌入式应用。磁盘镜像由三个分区组成,其中两个用于软件镜像,一个用于配置文件。拥有两个软件分区意味着可以在运行活动分区时将新软件上传到非活动分区。
第一个真正公开的版本已提交,并且已经收到了大量的建议和补丁提议。
联系人:Brooks Davis <brooks@FreeBSD.org>
第一个与 if_xname 转换相关的实际功能已于 2 月初提交。现在,网络接口可以通过命令 ifconfig <if> name <newname>
进行重命名。
关于新的网络接口克隆 API 的工作正在慢慢进行,以便支持自动配置 VLAN 等有趣的克隆功能。这项工作正在 perforce 仓库中进行,路径为: //depot/user/brooks/xname/...
联系人:Sam Leffler <sam@FreeBSD.org>
联系人:Robert Watson <rwatson@FreeBSD.org>
该项目旨在将 FreeBSD 网络栈从单一的 Giant 内核锁运行转换为允许其在多个 CPU 上完全并行运行(即,一个完全线程化的网络栈)。这将通过重入性和抢占来提高单处理器机器的性能/延迟,同时也能在多处理器机器上通过允许网络流量处理的真正并行性来提升性能。自 FreeBSD 5.2 以来,低级网络功能以及 IP 过滤和转发平面已经能够在没有 Giant 锁的情况下运行,并且能够在中断处理程序中“处理完成”。
目前,工作仍在继续,以提高网络栈的锁定(和性能)的成熟度和完整性,为 5.3 版本做准备。网络栈锁定的开发分支已更新至最新的 CVS HEAD,跟踪并推动了多个 FreeBSD 变更,包括跟踪并推动接口和设备克隆 API 的变更,对 Berkeley 数据包过滤器中的锁定进行修正与下推,对网络对象分配标志的一致性进行改进,诊断各种系统调用和超时中不必要的 Giant 获取,移除多个系统调用中的 Giant,分析锁定需求时对网络栈中多个全局变量(IPv4、IPv6 等)进行“const”化,对多个伪接口(disc、loopback、faith、stf、gif、tap、tun)、IP 封装和隧道、PPP 和 SLIP 部分的初步审查与锁定进行细粒度锁定,IPv6 上的 PCB 断言实验,增加套接字锁定断言,绘制 FreeBSD 套接字层以支持锁定分析,合并 MT_TAG 到 m_tag 转换以改善队列数据包的能力,移动 debug.mpsafenet 可调参数以控制 Giant 在整个栈上的作用,适配现有的网络锁定断言以便在运行非 MPSAFE 时也能断言 Giant,分析 select() 锁定的高成本,改进锁定和同步注释,TCP 调用现在 MPSAFE,logtimeout() 现在 MPSAFE,uma_timeout() 现在 MPSAFE,调用采样工具,loadav() 现在 MPSAFE,开始进行 AppleTalk 锁定:AARP 锁定并进行 DDP 分析,rawcb 列表已锁定,mrouter 和 IP ID 代码的锁定分析,IGMP 锁定,IPv6 分析开始,IPX/SPX 分析开始,PPP 超时已转换为调用,Netgraph 分析开始。许多这些更改尚未合并到主 FreeBSD 树中,但这是一个进行中的工作。
在与管道 IPC(不是完全的网络栈锁定)相关的工作中,花费了大量时间来诊断自 FreeBSD 4.x 以来管道分配成本的增加,此外,还整合了创建管道所需的多个分配,并且转向了 slab 分配,以分摊管道初始化的成本。未来的工作将包括缓存支持管道缓冲区的虚拟内存结构。
最近的贡献者包括 Robert Watson、Sam Leffler、Max Laier、Maurycy Pawlowski-Wieronski、Brooks Davis 和许多其他贡献者,遗憾的是,他们未在此列出。
链接:
http://pf4freebsd.love2party.net/
联系人:Max Laier <max@love2party.net>
联系人:Pyun YongHyeon <yongari@kt-is.co.kr>
源代码从 OpenBSD 3.4R 导入,并通过从 port 获得的差异进行了修补。从 3 月 8 日起,它已链接到构建和安装。为了让 pf 能顺利融入到 FreeBSD 树中,还需要做一些工作,但过去两个月的主要工作已经完成。
OpenBSD 3.5 定于 5 月初发布,因此我们可能会在 5.3R 之前看到更新。针对广受欢迎的 ALTQ 框架的集成工作也在进行中,尽管目前还不清楚它与正在进行的无 Giant 网络栈工作如何协同。
联系人:Peter Grehan <grehan@FreeBSD.org>
在去年年底由于硬盘崩溃造成的缓慢进展之后,该项目现在正在快速推进。加载程序已完全功能化,并支持 Forth。已经集成 Syscons。新的 Powerbook 型号已得到支持。目前正在着手进行 G5 的移植工作。
仍然有很多工作要做,因此像往常一样,非常欢迎志愿者的加入。
联系人:Alexander Kabaev <kan@FreeBSD.org>
联系人:Russell Cattelan <cattelan@thebarn.com>
自上次报告提交以来,变化不大。XFS 卷的只读访问已经相当稳定。当前正在进行重写 xfs_buf 层的工作,以最大程度地减少原生更改的入侵性。正在进行的初步尝试是让 XFS 代码能够在 amd64 上编译并运行。
我们真的需要一位负责我们用户工具的人。
联系人:Andre Oppermann <andre@FreeBSD.org>
TCP 性能测试和验证测试平台是一个自动化环境,用于模拟各种常见和不常见的端到端网络和链路特性,如延迟、带宽限制、拥塞、数据包丢失、数据包损坏和乱序到达。测试平台会自动遍历所有链路类型,并测试各种 TCP 优化和参数调整。最终,所有数据将以图形方式排列,并与标准行为以及彼此之间进行比较,以判断修改的正面或负面效果。该项目的工作刚刚开始,基于 FreeBSD 的 dummynet。
联系人:Remko Lodder <remko@elvandar.org>
荷兰文文档项目是一个持续进行的项目,旨在将手册和其他文档翻译成荷兰语。目前,有一位活跃的人员(我)正在翻译文档。我目前正在处理手册/基础部分。但是我需要更多的帮助,如果你愿意提供帮助,欢迎通过邮件联系我,这样荷兰文的翻译工作就能加速,并在不久的将来完成。欲了解更多信息,请联系 remko@elvandar.org。
链接
联系人:Dong LI <ld@FreeBSD.org.cn>
联系人:李鑫 <delphij@frontfree.net>
该项目是志愿者的联合努力,专注于 FreeBSD 操作系统和运行在 FreeBSD 上的应用程序的国际化和本地化。所有在该项目中完成的工作将会回馈给 FreeBSD 项目。
得益于许多志愿者的帮助,在撰写本报告时,我们已经完成了 FreeBSD 手册逾 60% 的翻译。我们计划在大部分翻译工作完成后,提交 FreeBSD 网站和 FreeBSD 手册的初步翻译,预计将在几个月内完成。可以通过上面列出的链接查看文档翻译的快照。
该项目还支持个人努力将应用程序(特别是支持简体/繁体中文的软件)移植到 FreeBSD。我们还在进行一些研究,以使 FreeBSD 内核和基本系统更加支持国际化。
链接:http://www.nrg4u.com/freebsd/ipfw_versrcreach.diff
联系人:Andre Oppermann <andre@FreeBSD.org>
ipfw2 的源可达性验证选项检查进入机器的数据包的源 IP 地址是否可以到达。因此,如果我们无法将数据包发送回去,因为没有路由返回,我们就不需要转发它,因为无论如何双向通信不可能。这样的数据包很可能是伪造的。该选项几乎与 Cisco IOS 中的 "ip verify unicast source reachable-via [any|ifn]" 相同。只有在没有默认路由(默认路由总是匹配)的情况下使用此选项才有意义。因此,这对于作为路由器的机器非常有用,特别是在运行 BGP 守护进程时(Zebra/Quagga 或 OpenBSD bgpd),这些机器通常拥有一个无默认路由的全球视图。
在路由器上全局启用此选项的一种有用方法如下:
或者仅为单个接口启用:
链接:http://mailbox.univie.ac.at/~le/geom_vinum.tar.gz
联系人:Lukas Ertl <le@FreeBSD.org>
vinum 的“几何化”已取得一定进展。目前,所有基本设置都已工作(串联的 plexes、条带化的 plexes、RAID5 plexes 和 RAID1),但我仍然需要实现正确的错误处理和状态变更处理。
目前仍缺少用户空间工具,因此你仍然需要使用“旧式”vinum 来配置你的设置。
链接
联系人:Mark Johnston <mark@xl0.org>
我一直在每周总结提交的内容和相关讨论,这些内容已在 cvs-src 邮件列表中报告。这些摘要会在周日晚发布到 -current 上,并存档到网络上。反响非常好。到 2 月底,波兰语翻译由 Lukasz Dudek 和 Szymon Roczniak 提供;他们也计划翻译旧版本的摘要。
最后更新于
这有帮助吗?