Poor virtio performance on Scaleway ARM systems
John Baldwin
jhb at FreeBSD.org
Tue Oct 23 17:04:07 UTC 2018
On 10/23/18 8:46 AM, Greg V wrote:
>
>
> On Sun, Sep 16, 2018 at 9:46 PM, Peter Jeremy <peter at rulingia.com>
> wrote:
>> I have been playing with the 4-core ARM64 VPSs on
>> https://www.scaleway.com
>> and notice that the disk I/O performance (using virtio_blk) is
>> abyssmal.
>> Using "dd if=/dev/{vda|vtbd0} of=/dev/null bs=256k count=4096", I get
>> 400-500MBps, whilst under FreeBSD-12, I get about 5MBps. I've
>> checked on a
>> couple of instances and both Linux & FreeBSD on the same instance and
>> get
>> similar results. Linux & FreeBSD are both using a virtio block device
>> attached to the PCI bus. Rebuilding FreeBSD to turn off all the
>> debugging
>> has no effect.
>>
>> The only oddity I've found is that FreeBSD is reporting very high
>> interrupt
>> rates on gic0,p11, gic0,s4 and gic0,s5 whilst disk I/O is occurring.
>> Unfortunately, I can't tell what is attached to those interrupts (it's
>> not obvious from the dmesg and reported as "+").
> gic0,s4 correlates to network activity.
> gic0,s5 correlates to disk activity.
>
>> I've done some searching and have only found general FUD ("FreeBSD
>> virtio
>> isn't any good") and nothing specifically related to Scaleway.
>>
>> Can anyone suggest where to look for a solution?
>
> I FIGURED IT OUT!!
>
> echo 'hw.pci.honor_msi_blacklist="0"' >> /boot/loader.conf
>
> SOMEHOW FreeBSD ended up using legacy interrupts instead of MSI-X.
>
> I have no idea how.
> Looking at pci_quirks, MSI disable is for old Intel stuff, some old
> VMWare stuff... NOTHING about QEMU/KVM or Cavium!
>
> With the fix, we're getting ~1000 interrupts on 'its0,4: virtio_pci1'
> (instead of ~30000 on gic), latency is no longer awful, and bandwidth
> is about 220 MB/s. YAY!!
Can you make 'pciconf -lc' output available? There is a "generic"
blacklist that assumes we will see a host bridge device with PCI-e
or PCI-X and if neither of those is present we also blacklist MSI.
However, we can certainly figure out how to make this work out of
the box.
--
John Baldwin
More information about the freebsd-arm
mailing list