[Bug 267631] slow nfs from FreeBSD guest/client to linux host/server

From: <bugzilla-noreply_at_freebsd.org>
Date: Tue, 08 Nov 2022 02:12:56 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=267631

            Bug ID: 267631
           Summary: slow nfs from FreeBSD guest/client to linux
                    host/server
           Product: Base System
           Version: 13.0-RELEASE
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: bugs@FreeBSD.org
          Reporter: andrew.cagney@gmail.com

First the numbers:

FreeBSD:
real    11m53.066s
user    0m36.488s
sys     0m5.237s
NetBSD (9.99.something):
real    3m52.182s
user    0m46.372s
sys     0m19.655s
OpenBSD (7.2):
real    3m24.953s
user    0m42.260s
sys     0m9.800s

now the details:

The test is to use build libreswan over NFS on a BSD KVM guest using a Linux
host as the NFS server.  FreeBSD and NetBSD both use GCC so I don't think it is
the compiler (Open uses llvm).

Visually, linking is slower; all binaries are in the same ballpark:
-rwxr-xr-x. 1 cagney qemu   9400760 Nov  7 19:13
OBJ.kvm.fedora/programs/pluto/pluto
-rwxr-xr-x. 1 cagney cagney 9079352 Nov  7 19:24
OBJ.kvm.freebsd/programs/pluto/pluto
-rwxr-xr-x. 1 cagney cagney 9817860 Nov  7 19:36
OBJ.kvm.netbsd/programs/pluto/pluto
-rwxr-xr-x. 1 cagney cagney 7869320 Nov  7 20:04
OBJ.kvm.openbsd/programs/pluto/pluto

KVM Host and NFS server:
  Linux 6.0.5-200.fc36.x86_64
KVM Guest and NFS client (the KVM gets are configured the same way):
  FreeBSD freebsd 13.0-RELEASE FreeBSD 13.0-RELEASE

The vm was created using:

sudo virt-install \
        --connect=qemu:///system --check=path_in_use=off --graphics=none
--virt-type=kvm --noreboot --console=pty,target_type=serial --vcpus=4
--memory=5120  --cpu=host-passthrough
--network=network:swandefault,model=virtio --rng=type=random,device=/dev/random
--security=type=static,model=dac,label='1000:107',relabel=yes \
       
--filesystem=target=bench,type=mount,accessmode=squash,source=/home/libreswan/wip-misc
\
        --filesystem=target=pool,type=mount,accessmode=squash,source=/home/pool
\
       
--filesystem=target=source,type=mount,accessmode=squash,source=/home/libreswan/wip-misc
\
       
--filesystem=target=testing,type=mount,accessmode=squash,source=/home/libreswan/wip-misc/testing
\
        --name=m.freebsd \
        --os-variant=freebsd13.1 \
        --disk=cache=writeback,path=/home/pool/m.freebsd.qcow2 \
        --import \
        --noautoconsole

FreeBSD's network interface is:

  vtnet0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4c07bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,TXCSUM_IPV6>
        ether 52:54:00:11:50:39
        inet 192.168.234.153 netmask 0xffffff00 broadcast 192.168.234.255
        media: Ethernet autoselect (10Gbase-T <full-duplex>)
        status: active
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

so it should be virtualized.

FreeBSD's fstab looks like:

# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/vtbd0s1a   /               ufs     rw      1       1
/dev/vtbd0s1b   none            swap    sw      0       0
192.168.234.1:/home/pool     /pool       nfs     rw
192.168.234.1:/home/libreswan/wip-webkvm    /bench       nfs     rw
192.168.234.1:/home/libreswan/wip-webkvm   /source         nfs     rw
192.168.234.1:/home/libreswan/wip-webkvm/testing  /testing        nfs     rw

so nothing custom (presumably it is using TCP).

Linux's exportfs shows entries such as:

/home/libreswan/wip-webkvm/testing
192.168.234.0/24(sync,wdelay,hide,no_subtree_check,anonuid=1000,anongid=1000,sec=sys,rw,secure,root_squash,all_squash)


Presumably I've mis-configured FreeBSD but I'm at a loss as to what.

-- 
You are receiving this mail because:
You are the assignee for the bug.