Tags:

“ATOMIC BAND” - ITune Server - V2

28/04/2008 20:14

I wrote a post on install ITune Server on FC6 (http://www.elian.co.uk/2007/04/12/atomic-band-itune-server/)

Due to recent upgrade our internal server to FreeBSD 7, I am looking for a similar solution for ITune Server on FB7.  When FB7 first released, the default C compile is gcc v4.2 and mt-daap was “known-not-compatible” with gcc 4. However, recently I find the new version or new port of mt-daap is fixed the problem with gcc v4.

To install mt-daap, compare with installing it on FC, it is so easy!
1. Make sure your ports are up-to-date. My prefer tool for manaing FreeBSD ports is portsnap, so simply run “portsnap fetch update”
2.Go to mt-daap folder(/usr/ports/audio/mt-daapd)
3. make install clean
4. OK, you got iTune server now!
5. TO configure it up, go to /usr/local/etc/.  Copy mt-daapd.conf.sample to mt-daapd.conf and change admin_pw and mp3_dir. Everything is done

If you got troubles to create playlist, try to use this only tool http://migrantcoder.com/daapd/ or for advanced users, read wiki on its offical website http://wiki.fireflymediaserver.org/Smart_playlists

vim problem on freebsd

30/01/2008 00:09

When using $TERM=xterm, arrow-keys wont work. the work around is re-assign arrow-keys using following command:

In vimrc:

set t_ku= (now type Ctrl-V and press cursor up)
set t_kd= (now type Ctrl-V and press cursor down)
set t_kr= (now type Ctrl-V and press cursor right)
set t_kr= (now type Ctrl-V and press cursor left) 

TAO’s Kernel

23/12/2007 15:59

# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.474.2.2 2007/12/15 02:57:30 scottl Exp $

cpu        I486_CPU
cpu        I586_CPU
cpu        I686_CPU
ident        TAO

# To statically compile in device wiring instead of /boot/device.hints
#hints        “GENERIC.hints”        # Default places to look for devices.

makeoptions    DEBUG=-g        # Build kernel with gdb(1) debug symbols

#options     SCHED_4BSD        # 4BSD scheduler
options        SCHED_ULE
options     PREEMPTION        # Enable kernel thread preemption
options     INET            # InterNETworking
options     INET6            # IPv6 communications protocols
options     SCTP            # Stream Control Transmission Protocol
options     FFS            # Berkeley Fast Filesystem
options     SOFTUPDATES        # Enable FFS soft updates support
options     UFS_ACL            # Support for access control lists
options     UFS_DIRHASH        # Improve performance on big directories
options     UFS_GJOURNAL        # Enable gjournal-based UFS journaling
options     MD_ROOT            # MD is a potential root device
options     NFSCLIENT        # Network Filesystem Client
options     NFSSERVER        # Network Filesystem Server
options     NFS_ROOT        # NFS usable as /, requires NFSCLIENT
options     MSDOSFS            # MSDOS Filesystem
options     CD9660            # ISO 9660 Filesystem
options     PROCFS            # Process filesystem (requires PSEUDOFS)
options     PSEUDOFS        # Pseudo-filesystem framework
options     GEOM_PART_GPT        # GUID Partition Tables.
options     GEOM_LABEL        # Provides labelization
options     COMPAT_43TTY        # BSD 4.3 TTY compat [KEEP THIS!]
options     COMPAT_FREEBSD4        # Compatible with FreeBSD4
options     COMPAT_FREEBSD5        # Compatible with FreeBSD5
options     COMPAT_FREEBSD6        # Compatible with FreeBSD6
options     SCSI_DELAY=5000        # Delay (in ms) before probing SCSI
options     KTRACE            # ktrace(1) support
options     SYSVSHM            # SYSV-style shared memory
options     SYSVMSG            # SYSV-style message queues
options     SYSVSEM            # SYSV-style semaphores
options     _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options     KBD_INSTALL_CDEV    # install a CDEV entry in /dev
options     ADAPTIVE_GIANT        # Giant mutex is adaptive.
options     STOP_NMI        # Stop CPUS using NMI instead of IPI
options     AUDIT            # Security event auditing

# To make an SMP kernel, the next two lines are needed
options     SMP            # Symmetric MultiProcessor Kernel
device        apic            # I/O APIC

# CPU frequency control
device        cpufreq

# Bus support.
device        eisa
device        pci

# Floppy drives
device        fdc

# ATA and ATAPI devices
device        ata
device        atadisk        # ATA disk drives
device        ataraid        # ATA RAID drives
device        atapicd        # ATAPI CDROM drives
device        atapifd        # ATAPI floppy drives
device        atapist        # ATAPI tape drives
options     ATA_STATIC_ID    # Static device numbering

# SCSI Controllers
#device        ahb        # EISA AHA1742 family
#device        ahc        # AHA2940 and onboard AIC7xxx devices
#options     AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
# output.  Adds ~128k to driver.
#device        ahd        # AHA39320/29320 and onboard AIC79xx devices
#options     AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
# output.  Adds ~215k to driver.
#device        amd        # AMD 53C974 (Tekram DC-390(T))
#device        hptiop        # Highpoint RocketRaid 3xxx series
#device        isp        # Qlogic family
#device     ispfw        # Firmware for QLogic HBAs- normally a module
#device        mpt        # LSI-Logic MPT-Fusion
#device        ncr        # NCR/Symbios Logic
#device        sym        # NCR/Symbios Logic (newer chipsets + those of `ncr’)
#device        trm        # Tekram DC395U/UW/F DC315U adapters

#device        adv        # Advansys SCSI adapters
#device        adw        # Advansys wide SCSI adapters
#device        aha        # Adaptec 154x SCSI adapters
#device        aic        # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
#device        bt        # Buslogic/Mylex MultiMaster SCSI adapters

#device        ncv        # NCR 53C500
#device        nsp        # Workbit Ninja SCSI-3
#device        stg        # TMC 18C30/18C50

# SCSI peripherals
device        scbus        # SCSI bus (required for SCSI)
#device        ch        # SCSI media changers
#device        da        # Direct Access (disks)
device        sa        # Sequential Access (tape etc)
#device        cd        # CD
#device        pass        # Passthrough device (direct SCSI access)
#device        ses        # SCSI Environmental Services (and SAF-TE)

# RAID controllers interfaced to the SCSI subsystem
#device        amr        # AMI MegaRAID
#device        arcmsr        # Areca SATA II RAID
#device        asr        # DPT SmartRAID V, VI and Adaptec SCSI RAID
#device        ciss        # Compaq Smart RAID 5*
#device        dpt        # DPT Smartcache III, IV - See NOTES for options
#device        hptmv        # Highpoint RocketRAID 182x
#device        hptrr        # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
#device        rr232x        # Highpoint RocketRAID 232x
#device        iir        # Intel Integrated RAID
#device        ips        # IBM (Adaptec) ServeRAID
#device        mly        # Mylex AcceleRAID/eXtremeRAID
#device        twa        # 3ware 9000 series PATA/SATA RAID

# RAID controllers
#device        aac        # Adaptec FSA RAID
#device        aacp        # SCSI passthrough for aac (requires CAM)
#device        ida        # Compaq Smart RAID
#device        mfi        # LSI MegaRAID SAS
#device        mlx        # Mylex DAC960 family
#device        pst        # Promise Supertrak SX6000
#device        twe        # 3ware ATA RAID

# atkbdc0 controls both the keyboard and the PS/2 mouse
device        atkbdc        # AT keyboard controller
device        atkbd        # AT keyboard
device        psm        # PS/2 mouse

device        kbdmux        # keyboard multiplexer

device        vga        # VGA video card driver

device        splash        # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device        sc

device        agp        # support several AGP chipsets

# Power management support (see NOTES for more options)
#device        apm
# Add suspend/resume support for the i8254.
device        pmtimer

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
#device        cbb        # cardbus (yenta) bridge
#device        pccard        # PC Card (16-bit) bus
#device        cardbus        # CardBus (32-bit) bus

# Serial (COM) ports
device        sio        # 8250, 16[45]50 based serial ports
device        uart        # Generic UART driver

# Parallel port
device        ppc
device        ppbus        # Parallel port bus (required)
device        lpt        # Printer
device        plip        # TCP/IP over parallel
device        ppi        # Parallel port interface device
#device        vpo        # Requires scbus and da

# If you’ve got a “dumb” serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to sio, uart and/or ppc drivers):
#device        puc

# PCI Ethernet NICs.
device        de        # DEC/Intel DC21×4x (“Tulip”)
device        em        # Intel PRO/1000 adapter Gigabit Ethernet Card
device        ixgb        # Intel PRO/10GbE Ethernet Card
device        le        # AMD Am7900 LANCE and Am79C9xx PCnet
device        txp        # 3Com 3cR990 (“Typhoon”)
device        vx        # 3Com 3c590, 3c595 (“Vortex”)

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the ‘device miibus’ line in order to use these NICs!
device        miibus        # MII bus support
device        bce        # Broadcom BCM5706/BCM5708 Gigabit Ethernet
device        bfe        # Broadcom BCM440x 10/100 Ethernet
device        bge        # Broadcom BCM570xx Gigabit Ethernet
device        dc        # DEC/Intel 21143 and various workalikes
device        fxp        # Intel EtherExpress PRO/100B (82557, 82558)
device        lge        # Level 1 LXT1001 gigabit Ethernet
device        msk        # Marvell/SysKonnect Yukon II Gigabit Ethernet
device        nfe        # nVidia nForce MCP on-board Ethernet
device        nge        # NatSemi DP83820 gigabit Ethernet
#device        nve        # nVidia nForce MCP on-board Ethernet Networking
device        pcn        # AMD Am79C97x PCI 10/100 (precedence over ‘le’)
device        re        # RealTek 8139C+/8169/8169S/8110S
device        rl        # RealTek 8129/8139
device        sf        # Adaptec AIC-6915 (“Starfire”)
device        sis        # Silicon Integrated Systems SiS 900/SiS 7016
device        sk        # SysKonnect SK-984x & SK-982x gigabit Ethernet
device        ste        # Sundance ST201 (D-Link DFE-550TX)
device        stge        # Sundance/Tamarack TC9021 gigabit Ethernet
device        ti        # Alteon Networks Tigon I/II gigabit Ethernet
device        tl        # Texas Instruments ThunderLAN
device        tx        # SMC EtherPower II (83c170 “EPIC”)
device        vge        # VIA VT612x gigabit Ethernet
device        vr        # VIA Rhine, Rhine II
device        wb        # Winbond W89C840F
device        xl        # 3Com 3c90x (“Boomerang”, “Cyclone”)

# ISA Ethernet NICs.  pccard NICs included.
device        cs        # Crystal Semiconductor CS89×0 NIC
# ‘device ed’ requires ‘device miibus’
device        ed        # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device        ex        # Intel EtherExpress Pro/10 and Pro/10+
device        ep        # Etherlink III based cards
device        fe        # Fujitsu MB8696x based cards
device        ie        # EtherExpress 8/16, 3C507, StarLAN 10 etc.
device        sn        # SMC’s 9000 series of Ethernet chips
device        xe        # Xircom pccard Ethernet

# Wireless NIC cards
#device        wlan        # 802.11 support
#device        wlan_wep    # 802.11 WEP support
#device        wlan_ccmp    # 802.11 CCMP support
#device        wlan_tkip    # 802.11 TKIP support
#device        wlan_amrr    # AMRR transmit rate control algorithm
#device        wlan_scan_ap    # 802.11 AP mode scanning
#device        wlan_scan_sta    # 802.11 STA mode scanning
#device        an        # Aironet 4500/4800 802.11 wireless NICs.
#device        ath        # Atheros pci/cardbus NIC’s
#device        ath_hal        # Atheros HAL (Hardware Access Layer)
#device        ath_rate_sample    # SampleRate tx rate control for ath
#device        awi        # BayStack 660 and others
#device        ral        # Ralink Technology RT2500 wireless NICs.
#device        wi        # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device        wl        # Older non 802.11 Wavelan wireless NIC.

# Pseudo devices.
device        loop        # Network loopback
device        random        # Entropy device
device        ether        # Ethernet support
device        sl        # Kernel SLIP
device        ppp        # Kernel PPP
device        tun        # Packet tunnel.
device        pty        # Pseudo-ttys (telnet etc)
device        md        # Memory “disks”
device        gif        # IPv6 and IPv4 tunneling
device        faith        # IPv6-to-IPv4 relaying (translation)
#device        firmware    # firmware assist module

# The `bpf’ device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that ‘bpf’ is required for DHCP.
device        bpf        # Berkeley packet filter

# USB support
device        uhci        # UHCI PCI->USB interface
device        ohci        # OHCI PCI->USB interface
device        ehci        # EHCI PCI->USB interface (USB 2.0)
device        usb        # USB Bus (required)
#device        udbp        # USB Double Bulk Pipe devices
device        ugen        # Generic
device        uhid        # “Human Interface Devices”
device        ukbd        # Keyboard
device        ulpt        # Printer
device        umass        # Disks/Mass storage - Requires scbus and da
device        ums        # Mouse
#device        ural        # Ralink Technology RT2500USB wireless NICs
#device        rum        # Ralink Technology RT2501USB wireless NICs
#device        urio        # Diamond Rio 500 MP3 player
#device        uscanner    # Scanners
# USB Ethernet, requires miibus
#device        aue        # ADMtek USB Ethernet
#device        axe        # ASIX Electronics USB Ethernet
#device        cdce        # Generic USB over Ethernet
#device        cue        # CATC USB Ethernet
#device        kue        # Kawasaki LSI USB Ethernet
#device        rue        # RealTek RTL8150 USB Ethernet

# FireWire support
#device        firewire    # FireWire bus code
#device        sbp        # SCSI over FireWire (Requires scbus and da)
#device        fwe        # Ethernet over FireWire (non-standard!)
#device        fwip        # IP over FireWire (RFC 2734,3146)
#device        dcons        # Dumb console driver
#device        dcons_crom    # Configuration ROM for dcons

Compile FreeBSD Kernel

14:11

First of all, you need to have full FreeBSD source tree to build the kernel. If you dont, download them now.

* COPY /usr/src/sys/i386/conf/GENERIC /root/sys/TAO and ln -s /root/sys/TAO /usr/src/sys/i386/conf/TAO

* vi /root/sys/TAO, comment all the device you dont need

* Change scheduler to ULE if you are using FreeBSD 7 (experimental), as mention by Kris, new ULE scheduler has better performance than tranditional 4BSD
http://www.elian.co.uk/2007/12/22/does-freebsd-7-solve-its-mysql-problem/

* Change /etc/make.conf. As V7 support core2 CPUTYPE, so

CPUTYPE?=core2
CFLAGS=-O2 -fno-strict-aliasing -pipe
For pre 7 users, see
http://gentoo-wiki.com/Safe_Cflags#Intel_Core_2_Duo.2FQuad_.2F_Xeon_51xx.2F53xx

*Go to /usr/src/sys/i386/conf directory, and run config TAO to create a compile directory. It is very helpful if you want to keep serveral version of kernel

* Go to ../compile/Tao and run make cleandepend && make depend

* and “make”, it will take very long time and depending on the speed of your machine and your configure file

* make install and reboot your machine. If the new kernel cannot be load correctly or some devices do not function, you can use load kernel.old or kernel.GENERIC to go back to old kernel or generic kernel

N.B. here is my kernel configure file
http://www.elian.co.uk/2007/12/23/taos-kernel/

* After installing new kernel, you have to rebuild your world, otherwise, many program cannot run correctly(To me, sockstat -cl cannot should TCP ports listening)
cd /usr/src
make buildworld (took about two hours)
reboot into single user mode
mergemaster -p
make installworld
mergemaster
reboot

My FreeBSD installation

13:03

* Minimal installation(very simply, google it or follow the manual book on FreeBSD website). enable softupdate for non-root slice

* Install man package

* Install cvsup by pkg_add -r cvsup-without-gui (run rehash or re-login)

* Install vim “pkg_add -r vim-lite”

* Using vim instead of vi(may have security issue, careful!). ln -s /usr/local/bin/vim /bin/vi

* Copy /usr/local/share/vim71/vimrc_example.vim to /usr/local/share/vim71/vimrc (gramma hightlight)

* I prefer to use stable-supfile, so copy it to /root and change host address

* Copy /var/share/examples/cvsup/refuse to /var/db/sup. Dont download source code other language, english only.

* Update source code tree now, by cvsup stable-supfile.

* It will take some time, so sit back and have a cup of coffe ^_^

* I personally like to use portsnap to update port tree, so “portsnap fetch extract”

* Copy and edit /etc/make.conf. Change CFLAG and disable GUI by
NO_X= true
NO_GUI= true
WITHOUT_X11= yes
WITHOUT_XPM= yes

* Edit /etc/rc.conf

* To compile kernel, you can follow my another post on
http://www.elian.co.uk/2007/12/23/compile-freebsd-kernel/

* Email system:
I prefer postfix, and you can find many webpage in google on how to replace sendmail with postfix. and it is easy to do so

cd /usr/src/mail/postfix
make install
select SASL2 and TLS, if you need MySQL support, simply add MySQL
add sendmail_enable=”NONE” to /etc/rc.conf
cp /etc/default/periodic.conf /etc/periodic.conf and change following directive (Disable sendmail dail)

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

* Config postfix by editing /usr/local/etc/postfix/main.cf

* Install other services

Does FreeBSD 7 solve its MySQL problem?

22/12/2007 19:19

A very famous article by Jeremy pointed out the reason mysql database had lower performance on BSD system which is my most preferred OS (http://jeremy.zawodny.com/blog/archives/000203.html). Although, there is a work-around by using LinuxThread (http://pauillac.inria.fr/~xleroy/linuxthreads/), it cannot satisfy all the pure BSDers.

Since the annoucement of V7, many people are exciting for its new features. Especially, the improvement of scheduler, both 4BSD and ULE. But the question is does V7 really solve the MySQL problem? what is the performance of MySQL on FreeBSD 7. I read Kris’ “7.0 Preview” today, it really makes believe so.

http://people.freebsd.org/~kris/scaling/7.0%20Preview.pdf

bsd7.jpg

FreeBSD announce the release date of V7

25/10/2007 18:24

FreeBSD team announced the release date of another major upgrade for version 7 of FreeBSD OS.
http://www.freebsd.org/releases/7.0R/schedule.html

As everyone knows, V7 will have a massive change comparing V6, such as ZFS etc. I am really looking forward to seeing it.

FreeBSD 的优化参数

10/09/2007 22:11

来源:iceblood 作者: 发布时间:2007-04-06
很多人想优化自己的FreeBSD,特别是在网络性能以及内核调整上,因为这些是最直接的优化方式。在这里我收集整理并用中文注释了一下,相信很多人用得到。

#最大的待发送TCP数据缓冲区空间
net.inet.tcp.sendspace=65536

#最大的接受TCP缓冲区空间
net.inet.tcp.recvspace=65536

#最大的接受UDP缓冲区大小
net.inet.udp.sendspace=65535

#最大的发送UDP数据缓冲区大小
net.inet.udp.maxdgram=65535

#本地套接字连接的数据发送空间
net.local.stream.sendspace=65535

#加快网络性能的协议
net.inet.tcp.rfc1323=1
net.inet.tcp.rfc1644=1
net.inet.tcp.rfc3042=1
net.inet.tcp.rfc3390=1

#最大的套接字缓冲区
kern.ipc.maxsockbuf=2097152

#系统中允许的最多文件数量
kern.maxfiles=65536

#每个进程能够同时打开的最大文件数量
kern.maxfilesperproc=32768

#当一台计算机发起TCP连接请求时,系统会回应ACK应答数据包。
#该选项设置是否延迟ACK应答数据包,把它和包含数据的数据包一起发送,
#在高速网络和低负载的情况下会略微提高性能,但在网络连接较差的时候,
#对方计算机得不到应答会持续发起连接请求,反而会降低性能。
net.inet.tcp.delayed_ack=0

#屏蔽ICMP重定向功能
net.inet.icmp.drop_redirect=1
net.inet.icmp.log_redirect=1
net.inet.ip.redirect=0
net.inet6.ip6.redirect=0

#防止ICMP广播风暴
net.inet.icmp.bmcastecho=0
net.inet.icmp.maskrepl=0

#限制系统发送ICMP速率
net.inet.icmp.icmplim=100

#安全参数,编译内核的时候加了options TCP_DROP_SYNFIN才可以用
net.inet.icmp.icmplim_output=0
net.inet.tcp.drop_synfin=1

#设置为1会帮助系统清除没有正常断开的TCP连接,这增加了一些网络带宽的使用,但是一些死掉的连接最终能被识别并清除。死的TCP连接是被拨号用户存取的系统的一个特别的问题,因为用户经常断开modem而不正确的关闭活动的连接
net.inet.tcp.always_keepalive=1

#若看到net.inet.ip.intr_queue_drops这个在增加,就要调大net.inet.ip.intr_queue_maxlen,为0最好
net.inet.ip.intr_queue_maxlen=1000

#防止DOS攻击,默认为30000
net.inet.tcp.msl=7500

#接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包
net.inet.tcp.blackhole=2

#接收到一个已经关闭的端口发来的所有UDP包直接drop
net.inet.udp.blackhole=1

#为网络数据连接时提供缓冲
net.inet.tcp.inflight.enable=1

#如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表,节约路由的计算时间,但会需要大量的内核内存空间来保存路由表
net.inet.ip.fastforwarding=0

##kernel编译打开options POLLING功能,高负载情况下使用低负载不推荐
##SMP不能和polling一起用
#kern.polling.enable=1

#并发连接数,默认为128,推荐在1024-4096之间,数字越大占用内存也越大
kern.ipc.somaxconn=32768

#禁止用户查看其他用户的进程
security.bsd.see_other_uids=0

#设置kernel安全级别
kern.securelevel=0

#记录下任何TCP连接
net.inet.tcp.log_in_vain=1

#记录下任何UDP连接
net.inet.udp.log_in_vain=1

#防止不正确的udp包的攻击
net.inet.udp.checksum=1

#防止DOS攻击
net.inet.tcp.syncookies=1

#仅为线程提供物理内存支持,需要256兆以上内存
kern.ipc.shm_use_phys=1

# 线程可使用的最大共享内存
kern.ipc.shmmax=67108864

# 最大线程数量
kern.ipc.shmall=32768

# 程序崩溃时不记录
kern.coredump=0

# lo本地数据流接收和发送空间
net.local.stream.recvspace=65536
net.local.dgram.maxdgram=16384
net.local.dgram.recvspace=65536

# 数据包数据段大小,ADSL为1452。
net.inet.tcp.mssdflt=1460

# 为网络数据连接时提供缓冲
net.inet.tcp.inflight_enable=1

# 数据包数据段最小值,ADSL为1452
net.inet.tcp.minmss=1460

# 本地数据最大数量
net.inet.raw.maxdgram=65536

# 本地数据流接收空间
net.inet.raw.recvspace=65536

#ipfw防火墙动态规则数量,默认为4096,增大该值可以防止某些病毒发送大量TCP连接,导致不能建立正常连接
net.inet.ip.fw.dyn_max=65535

#设置ipf防火墙TCP连接空闲保留时间,默认8640000(120小时)
net.inet.ipf.fr_tcpidletimeout=864000

#所有MPSAFE的网络ISR对包做立即响应
net.isr.direct=1

Lost in OS

02/09/2007 14:25

Im a experienced Linux user, at least I think so. I gained much experience on configuring, fine-tuning Fedora servers from my work which required me to use several Linux servers to host a massive MySQL database and a veeery busy email system. With the increasing of demand, we decided to move from 1and1 (one of the biggest web hosting in Europe) to a self-managed datacenter in Manchester. We have more freedom on what machine and which OS to be used.

From previous experience, Linux’s fat,buggy kernel, low IO, poor FS do annoy me a lot. Look around the Internet, FreeBSD seems be an very good alternative for web server. Actually, I think about it before and never brave enough to use it in a production environment. But this time, I will put my fat ass in front of it ^_^. I totally believe it will work better under a stressed condition than Linux