Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


FreeBSD on KVM success
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

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!

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

    Thanked by 1lbft
  • g519g519 Member

    Any results for gdd? So you can use fdataynsc.

Sign In or Register to comment.