Why is NFSv4 so slow?

Rick C. Petty rick-freebsd2009 at kiwi-computer.com
Mon Jun 28 15:18:37 UTC 2010


On Mon, Jun 28, 2010 at 07:56:00AM -0700, Jeremy Chadwick wrote:
> 
> Three other things to provide output from if you could (you can X out IPs
> and MACs too), from both client and server:
> 
> 6) netstat -idn

server:

Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll Drop
nfe0   1500 <Link#1>      00:22:15:b4:2d:XX 1767890778     0     0 872169302     0     0    0 
nfe0   1500 172.XX.XX.0/2 172.XX.XX.4       1767882158     -     - 1964274616     -     -    - 
lo0   16384 <Link#2>                            3728     0     0     3728     0     0    0 
lo0   16384 (28)00:00:00:00:00:00:fe:80:00:02:00:00:00:00:00:00:00:00:00:00:00:01     3728     0     0     3728     0     0    0 
lo0   16384 (28)00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01     3728     0     0     3728     0     0    0 
lo0   16384 127.0.0.0/8   127.0.0.1             3648     -     -     3664     -     -    - 

client:

Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll Drop
re0    1500 <Link#1>      e0:cb:4e:cd:d3:XX 955288523     0     0 696819089     0     0    0 
re0    1500 172.XX.XX.0/2 172.XX.XX.2       955279721     -     - 696814499     -     -    - 
lo0   16384 <Link#2>                            3148     0     0     3148     0     0    0 
lo0   16384 (28)00:00:00:00:00:00:fe:80:00:02:00:00:00:00:00:00:00:00:00:00:00:01     3148     0     0     3148     0     0    0 
lo0   16384 (28)00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01     3148     0     0     3148     0     0    0 
lo0   16384 127.0.0.0/8   127.0.0.1             3112     -     -     3112     -     -    - 

> 7) sysctl hw.pci | grep msi

both server and client:

hw.pci.honor_msi_blacklist: 1
hw.pci.enable_msix: 1
hw.pci.enable_msi: 1

> 8) Contents of /etc/sysctl.conf

server and client:

# 4 virtual channels
dev.pcm.0.play.vchans=4
# Read modules from /usr/local/modules
kern.module_path=/boot/kernel;/boot/modules;/usr/local/modules
# Remove those annoying ARP moved messages:
net.link.ether.inet.log_arp_movements=0
# 32MB write cache on disk controllers system-wide
vfs.hirunningspace=33554432
# Allow users to mount file systems
vfs.usermount=1
# misc
net.link.tap.user_open=1
net.inet.ip.forwarding=1
compat.linux.osrelease=2.6.16
debug.ddb.textdump.pending=1
# for NFSv4
kern.ipc.maxsockbuf=524288

> > server, immediately after restarting all of nfs scripts (rpcbind
> > nfsclient nfsuserd nfsserver mountd nfsd statd lockd nfscbd):
> >
> > Jun 27 18:04:44 rpcbind: cannot get information for udp6
> > Jun 27 18:04:44 rpcbind: cannot get information for tcp6
> 
> These two usually indicate you removed IPv6 support from the kernel,
> except your ifconfig output (I've remove it) on the server shows you do
> have IPv6 support.  I've been trying to get these warnings removed for
> quite some time (PR kern/96242).  They're harmless, but the
> inconsistency here is a little weird -- are you explicitly disabling
> IPv6 on nfe0?

I have WITHOUT_IPV6= in my make.conf on all my machines (or I have
problems with jdk1.6) and WITHOUT_INET6= in my src.conf.  I'm not sure
why the rpcbind/ifconfig binaries have a different concept than the
kernel since I always "make buildworld kernel" and keep things in sync
with mergemaster when I reboot.  I'm building new worlds/kernels now
to see if that makes any difference.

-- Rick C. Petty


More information about the freebsd-stable mailing list