FreeBSD on KVM success

FreeBSD on KVM success

BluBoyBluBoy Member
edited May 2012 in Reviews

Over the past few weeks, I have attempted to get FreeBSD running well on a XEN-HVM and XEN-PV LEB without much success. Last night, I finally decided it was time to give BuyVM and KVM a shot. This is more an example of what virtio can do for BSD on KVM.

** All tests were run 5 times with the best and worse results excluded **

Lets take a base after default FreeBSD 9.0 i386 install...

$ dd if=/dev/zero of=test bs=64k count=16k 16384+0 records in 16384+0 records out 1073741824 bytes transferred in 37.775315 secs (28424431 bytes/sec) 1073741824 bytes transferred in 71.264295 secs (15067038 bytes/sec) 1073741824 bytes transferred in 41.564684 secs (25833032 bytes/sec)

^ Painful does not even begin to explain how slow that felt!

/usr/local/bin/wget cachefly.cachefly.net/100mb.test -O /dev/null 2012-05-11 18:20:56 (45.4 MB/s) - `/dev/null' saved [104857600/104857600]

^ I am actually pretty happy with this. Coming from Australia (lucky to get 20Mbps) and a bunch of 100Mbps LEBs, I thought this was great!

Next up I tried to install /usr/ports/emulators/virtio-kmod without much success... It refused to recognise the disk or NIC at boot, I'm pretty sure something was missing which was stopping the driver from loading

Being forced into a corner, I decided to rebuild world and compile a new kernel. Having done this a few times before, I was able to knock up a heavily optimised make.conf, src.conf and kernel.conf fairly quickly. The result was a kernel that was more than halved in sized, booting ~4 times as quickly and absolutely flying in actual use... I had a feeling that this round of tests would be good!

Post optimised FreeBSD 10 world and kernel

dd if=/dev/zero of=test bs=64k count=16k 1073741824 bytes transferred in 29.275458 secs (36677200 bytes/sec) 1073741824 bytes transferred in 20.908691 secs (51353852 bytes/sec) 1073741824 bytes transferred in 26.776536 secs (40100102 bytes/sec)

/usr/local/bin/wget cachefly.cachefly.net/100mb.test -O /dev/null 2012-05-12 10:36:31 (50.0 MB/s) - /dev/null' saved [104857600/104857600] 2012-05-12 10:36:37 (46.5 MB/s) -/dev/null' saved [104857600/104857600] 2012-05-12 10:36:41 (48.4 MB/s) - `/dev/null' saved [104857600/104857600]

^ Well that is definitely good... Disk performance was up ~ 100% and somehow interface performance was up another ~10%

... It was a hollow victory, as I was aiming for atleast 50Mbps (preferably 100Mbps) speeds on the disk! That's when I realised that virtio hadn't even been enabled yet. A quick edit to rc.conf and fstab followed by a reboot and...

Post optimised FreeBSD 10 world and kernel with virtio enabled

dd if=/dev/zero of=test bs=64k count=16k 1073741824 bytes transferred in 8.948978 secs (119984852 bytes/sec) 1073741824 bytes transferred in 9.203055 secs (116672323 bytes/sec) 1073741824 bytes transferred in 8.351456 secs (128569414 bytes/sec)

^ JEEBUSSSSSS! My disk performance has gone from ~ 15Mbps to well over 100Mbps. This is what I was looking for!

/usr/local/bin/wget cachefly.cachefly.net/100mb.test -O /dev/null 2012-05-12 10:47:28 (59.5 MB/s) - /dev/null' saved [104857600/104857600] 2012-05-12 10:47:33 (64.6 MB/s) -/dev/null' saved [104857600/104857600] 2012-05-12 10:47:42 (61.6 MB/s) - `/dev/null' saved [104857600/104857600]

^ Oh and another handy little 25% gain on the interface as well.

All up I am pretty excited with BuyVM, KVM, FreeBSD 10 and virtio at the moment!

Checkout my blog. I review VPS providers and mess around with Debian and FreeBSD!

Thanked by 3Steve Francisco lbft

Comments

  • subinsubin Member

    @BluBoy said: Post optimised FreeBSD 10 world and kernel

    How can you get freebsd 10. AFAIK, last version is 9.0

  • BluBoyBluBoy Member

    Standard buildworld technique...

    Step 1 - Create src csup config file

    cat /root/csup_src.txt *default tag=. *default host=cvsup1.us.FreeBSD.org *default prefix=/usr *default base=/var/db *default release=cvs delete use-rel-suffix compress

    Step 1a - May as well create ports csup config file (ports-all is recommended, LEB's usually don't have the space, so I restrict it to just the categories I know I'll need)

    cat /root/csup_ports.txt | grep -v # *default host=cvsup1.us.FreeBSD.org *default base=/var/db *default prefix=/usr *default release=cvs tag=. *default delete use-rel-suffix *default compress ports-base ports-archivers ports-converters ports-databases ports-devel ports-emulators ports-ftp ports-graphics ports-lang ports-net ports-print ports-security ports-sysutils ports-textproc ports-www

    Step 2 - Run csup

    csup /root/csup_src.txt

    Step 2a - If you want to do ports, may as well do that now as well:

    csup /root/csup_ports.txt

    Step 3 - make buildworld|buildkernel as you would normally

    Step 4 - make installkernel as you would normally

    Step 5 - Shutdown to single usermode and installworld as you would normally

    Step 6 - Reboot!

    Step 7 - ... Profit?

    uname -a FreeBSD sj.?????.com.au 10.0-CURRENT FreeBSD 10.0-CURRENT #0: Sat May 12 01:38:48 EST 2012 ?????@sj.?????.com.au:/usr/obj/usr/src/sys/????? i386

    Checkout my blog. I review VPS providers and mess around with Debian and FreeBSD!

    Thanked by 1lbft
  • g519g519 Member

    Any results for gdd? So you can use fdataynsc.

Sign In or Register to comment.