61 FreeBSD连载:其他内核设置选项

其他内核设置选项了解了最基本的GENERIC设置文件的内容,使用者就能根据实际情况,将不必要的设置删除,配置一个适合自己硬件的内核 。然而GENERIC内核并不能包括更丰富的设置,包括很多支持的硬件种类,或者特定的内核特性等 。
除了上面提到的这些较常用到的选项之外,FreeBSD中还支持一些不常使用的设备和选项,例如一些老式的连接到声卡上的光驱、游戏杆等,FreeBSD甚至也支持IP over ATM协议和ATM网卡,千兆以太网卡等最新的网络设备和协议 。
所有的选项均可以在LINT文件中找到对应配置的例子,就需要根据具体硬件将配置增加到用户自己的配置文件中 。
无论增加哪种硬件设备之后,都要检查系统中是否有相应的设备文件存在 。通用内核中不存在的设备,缺省也没有生成对应的设备文件 。因此需要进入/dev目录中,使用/dev/MAKEDEV命令来产生相应的设备文件 。
调整内核性能
当运行一台高性能服务器的时候,缺省设置并不能充分发挥内核的所有能力 。为了调整系统性能,便需要考虑更多的设置选项 。
maxusers256options "MAXMEM=(256*1024)"options "MAXDSIZ=(256*1024*1024)"options "DFLDSIZ=(256*1024*1024)"options NMBCLUSTERS=4096options CHILD_MAX=512 options OPEN_MAX=512optionsSMPoptionsAPIC_IOoptionsSOFTUPDATES由于服务器系统运行在高负载下,需要产生数量巨大的进程数目,并打开相当多的文件 。为了提供更好的支持就需要增加系统中表格的大小,这应该增加maxusers设置参数 。
系统启动时首先通过BIOS来检测系统中的内存,但是一般的BIOS最多只能报告64M内存,因此FreeBSD需要自己检测系统中的内存数量 。然而系统内存检测并不一定检测到系统中的所有内存,因此需要在内核设置中指定内存大小,MAXMEM选项就用来指定系统物理内存的容量 。上例中将系统内存设置为256MB 。
此外,缺省情况下FreeBSD限制每个应用程序使用128MB的内存,这对于一般的应用程序是满足的 。但是对于特定的应用程序的服务器,如大容量的新闻组服务器,将占用大量内存,因此就需要增加相应的参数 。内核选项MAXDSIZ为最大限制,DFLDSIZ为这个限制的缺省值,那么将应用程序的内存使用限制设为256MB的配置项为上例所示 。
为了增加FreeBSD的网络性能,可以增加NMBCLUSTERS的值,这个设置决定网络界面接收数据时的缓冲mbuf的大小,增加这个值就能使系统能同时响应更多的并发请求,这对于Web等高负载服务器特别重要 。CHILD_MAX定义一个进程能打开的最多子进程数数目,而OPEN_MAX定义一个进程能同时打开的文件描述字的数目,这三个参数为继承自4.4BSD中的设置参数,在FreeBSD下一般不需要调整,因此并没有写在LINT配置文件中,一般情况下,NMBCLUSTERS的缺省值对于高负载服务器略小一些,而CHILD_Mac和OPEN_MAX的缺省值能满足一般的高负载服务器的要求 。
通常这些数值参数需要根据实际情况进行调整,而不应该一味的增大 。使用vmstat,netstat,top等系统工具可以观察系统在实际情况下的运行状态,以决定需要进行哪些调整 。
SOFTUPDATES选项能增加UFS类型的文件系统存取速度,对于大部分种类的网络服务器,系统瓶颈在于磁盘访问速度,而使用这个选项可以改善文件系统的存取性能 。这个选项之所以没有被作为缺省设置,主要是因为版权原因 。然而为了编译带有SOFTUPDATES选项的内核,还必须手工建立一些符号连接,因为SOFTUPDATES使用的源代码并不直接位于正确的编译路径下,而是位于一个非标准路径下,FreeBSD使用这种方法提醒FreeBSD用户,表示这个部分的版权与BSD版权许可不同,需要单独处理 。

推荐阅读