140是我们公司内部的一台ftp服务器,同时还运行Apache、MySQL、Bind以及qmail邮件系统,OS当然是我最喜欢的FreeBSD了,版本是4.3,今天对他进行了优化配置,结果令我十分满意。
这次主要还是对内核和文件系统进行优化,首先就是重新配置FreeBSD的内核。由于刚安装好FreeBSD后,所产生的通用内核kernel.GENERIC虽然已经能够满足正常运行FreeBSD的需要,但是这不是针对自己电脑配置的内核,而且通用内核中有很多不必要的硬件驱动程序,这些程序不仅使启动时自动检测硬件所需要的时间变长,并且占用了内存空间,由于内核是系统中最重要的部分,将一直常驻在内存中,因此,多余的内核驱动程序浪费了宝贵的物理内存,对系统性能有一定的影响,所以必须对他进行重新配置。
一 对内核的优化配置
1 修改内核的配置文件
FreeBSD的内核配置文件在/usr/src/sys/i386/conf目录下,GENERIC就是通用内核kernel.GENERIC的配置文件,也是我们要修改的对象。
# cd /usr/src/sys/i386/conf
# cp GENERIC GENERIC.OLD (备份通用内核配置文件为GENERIC.OLD)
首先删除不必要的硬件支持选项,这就要求你必须详细地了解自己电脑的硬件信息,如:硬盘是SCSI还是IDE,网卡的interface(ifconfig查看)等等,只有你了解了这些信息才能正确修改内核配置文件。
下面是我修改后的配置文件,可以参考一下:
# Based on GENERIC
machine i386
cpu I686_CPU
ident TUNED
maxusers 512
options NMBCLUSTERS=65536
options INET #InterNETworking
options FFS #Berkeley Fast Filesystem
options FFS_ROOT #FFS usable as root device [keep this!]
options SOFTUPDATES #Enable FFS soft updates support
options MFS #Memory Filesystem
options PROCFS #Process filesystem
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
options UCONSOLE #Allow users to grab the console
options USERCONFIG #boot -c editor
options VISUAL_USERCONFIG #visual boot -c editor
options KTRACE #ktrace(1) support
options SYSVSHM #SYSV-style shared memory
options SYSVMSG #SYSV-style message queues
options SYSVSEM #SYSV-style semaphores
options P1003_1B #Posix P1003_1B real-time extensions
options _KPOSIX_PRIORITY_SCHEDULING
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
device isa
device pci
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device fd1 at fdc0 drive 1
device ata0 at isa? port IO_WD1 irq 14
device ata1 at isa? port IO_WD2 irq 15
device ata
device atadisk # ATA disk drives
options ATA_STATIC_ID #Static device numbering
device atkbdc0 at isa? port IO_KBD
device atkbd0 at atkbdc? irq 1 flags 0x1
device psm0 at atkbdc? irq 12
device vga0 at isa?
pseudo-device splash
device sc0 at isa? flags 0x100
device npx0 at nexus? port IO_NPX irq 13
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? disable port IO_COM3 irq 5
device sio3 at isa? disable port IO_COM4 irq 9
device ppbus # Parallel port bus (required)
device miibus # MII bus support
device dc # DEC/Intel 21143 and various workalikes
pseudo-device loop # Network loopback
pseudo-device ether # Ethernet support
pseudo-device pty # Pseudo-ttys (telnet etc)
2 编译、安装内核
# /usr/sbin/config GENERIC
# cd ../../compile/GENERIC
# make depend
# make
# make install
这个过程中很可能出现错误,仔细看看报错的内容,再修改内核配置文件,修改之后一定要把/usr/src/sys/compile下的GENERIC这个目录删除掉,然后重新执行/usr/sbin/config GENERIC,直到通过。
内核成功安装之后,原来的内核将自动更名为/kernel.old,然后就可以重新启动,检查新内核是否正确。
# reboot
如果新的内核的配置不正确,导致某些硬件不能正确检测而引起的不能正常启动,这个时候就需要用老的内核进入系统。选择不通内核必须通过Boot Loader的交互界面进行,然后输入load kernel.old使用老内核启动系统。
二 对文件系统的优化配置(打开soft updates)
soft updates是提高文件系统更新性能的一种手段,虽然这是一种比较有争议的方法,但是优化效果是很明显的。
首先进入单用户模式:boot -s
在命令行下输入:
# /sbin/tunefs -n enable /
# /sbin/tunefs -n enable /usr
# /sbin/tunefs -n enable /var
# /sbin/tunefs -n enable /tmp
# reboot
最后还要修改一下/etc/sysctl.conf
vfs.vmiodirenable=1
kern.ipc.somaxconn=4096
kern.maxfiles=65536
三 性能测试
这次我先测试了一下文件系统在优化前、后的性能,其他还没来的及测试。
测试软件:postmark-1_5.c
由于代码太长,可以到我主页下载:http://www.patching.net/wadia/tools/postmark-1_5.c
测试:
# ./postmark
pm>set size 10000 20000
pm>set number 1000
pm>set transactions 50000
pm>run
运行测试程序,这个过程要花很长时间,要耐心等待。
我在优化前、后各测试了3次,然后取其平均值:
-=优化前=-
1 Transactions/s: 34
2 DATE READ: 272.96K/S
3 DATE WRITTEN: 281.46K/S
-=优化后=-
1 Transactions/s: 122
2 DATE READ: 983.70K/S
3 DATE WRITTEN: 1014.33K/S
这些数据是我在系统启动后运行了apache、MySQL、proftpd、bind、qmail的环境下得到的,从获得的数据来看,优化后比优化前的性能提高了将近4倍,基本上达到了预期目标。
当然,优化FreeBSD的方法还很多,希望我这篇拙作能够抛砖引玉,大家一起来研究FreeBSD。
来源:Linux技术中坚站