Adrian Chadd posts about Nathan Whitehorn’s findings on FreeBSD on POWER8.
A post to freebsd-ppc from a couple of vmonths ago asked if we had support for POWER8 and offered to provide remote access to anyone interested in working on it. I was sufficiently intrigued that I approached the FreeBSD powerpc hackers to ask about it, and was informed that it’d be nice, but we didn’t have hardware.
After a bit of wrangling of hardware logistics and with the FreeBSD Foundation purchasing a box, a Tyan POWER8 evaluation server appeared. Nathan Whitehorn started poking at it and managed to get a basic “hello world” going, but stalled on issues with the Linux KVM virtualisation environment.
Fast forward a few weeks – he’s figured out the KVM issues, their lack of support for some mandated hypervisor APIs and other bugs – FreeBSD now boots inside of the hypervisor environment and seems stable enough to do development on.
He then found the existing powerpc pmap (physical memory management) code wasn’t very SMP friendly – it works fine on one and two CPU powerpc machines, but this POWER8 evaluation board is a 4-core, 32-thread CPU. So a few days of development went by and he rewrote most of the pmap code to be much more fine grained locked and scale much, much better than the existing code. (He also found the PS3 hypervisor layer isn’t thread-safe.)
What’s been done thus far?
- FreeBSD boots inside the hypervisor environment;
- Virtualised console, networking and storage all work;
- (in progress) new, scalable pmap implementation;
- Initial support for the Vector-Scalar Extension (VSX) that’s found on POWER7 and POWER8.
So, I’m impressed. Nathan’s done a fantastic job bringing the whole thing up. There’s some further work on the new powerpc technology that needs doing (things like the new vector processing units, performance counter support and such) and I’m sure Justin and Nathan will poke powerpc dtrace support into further good shape. I’m going to see if we can fix a chelsio 40G NIC into one of these and work with their developers to fix any endian/busdma issues that creep up, and then do some network stack scaling testing with it. There’s also the missing hardware/hypervisor support to run FreeBSD on the bare metal, which would be a fantastic achievement.
Now I kind of want some larger POWER8 hardware.