[Beowulf] NFS HPC survey results.
bill at cse.ucdavis.edu
Wed Jul 20 16:19:27 PDT 2016
Many thanks for all the responses.
Here's the promised raw data:
I'll summarize the 26 results below. I'll email similar to those that asked.
Not everyone answered all questions.
1) cluster OS:
72% Redhat/CentOS/Scientific linux or derivative
24% Debian/Ubuntu or derivative
4% SUSE or derivative
2) Appliance/NAS or linux server
32% NFS appliance
76% linux server
12% other (illumos/Solaris)
3) Appliances used (one each, free form answers):
* Hitachi BlueARC, EMC Isilon, DDN/GPFS, x4540
* Not sure - something that corporate provided. An F5, maybe...? Also a
Panasas system for /scratch.
* NetApp FAS6xxx
* isilon x and nl
4) Which kernel do you use:
88% one provided with the linux distribution
12% one that I compile/tweak myself
5) what kernel changes do you make
* CPU performance tweaking, network performance.
* raise ARP cache size, newer kernel than stock 3.2 was needed for newer
hardware 3.14 at the moment
6) Do you often see problems like nfs: server 192.168.5.30 not responding,
7) If you see NFS time outs what do you do (free form answers)
* Restart NFSd, look for performance intensive jobs, sometimes increase NFSd.
* Look at what's going on on that server. That means looking at what the
disks are doing, what network flows are going to/from that server and
determine if the load is something to take action on or to let.
* Not much
* Resolve connectivity issue if any and run mount command on nodes. If this
doesn't fix it, then reboot.
* Ignore them, unless they become a problem.
* Look for the root cause of the issue, typically system is suffering network
issues or is overloaded by a user 'abuse/missuse'.
* diagnose and identify underlying cause
* Try to figure out who is overloading the NFS server (hard job)
* Troubleshoot, typically a machine is offline or network saturation
8) which NFS options do you use (free form):
* all default
* tcp,async, nodev, nosuid,timeout=10
* -rw,intr,nosuid,proto=tcp (mostly. Could be "ro" and/or "suid")
* RHEL defaults
* default ones, they're almost always the best ones
* defaults, netdev,vers=3
* default rhel6 (+nosuid, nodev, and sometimes nfsver=3)
* tcp, intr, noauto, timeout, rsize, wsize, auto
9) Any explanations:
* We have not yet made the change to nfsv4, we use nolock due to various
application "issues", we do not hard set rsize/wsize as they have been
negotiating better values for a number of years on their own under v3,
and the timeout/retrans are a bit of a legacy set of values from working on
this issue of server overload. Hard was a choice on our end to pick that
having things hang definitely seemed better then having things fail and go
stale. We still agree with the choice of hard. Intr just helps to
"interupt" stuck things when needed.
* We like to be able to ctrl-C hung processes. For some systems we use larger
rsize/wsize if the vendor supports it.
* works for me without tewaks
* We didn't use tcp until the last couple of years.
* Probably needs a revisit- block size was set up for 2.x series kernels
* default of centos 7
* nfsv4 was not stable enough last time out, don't fix rsize/wsize as
client/server usually negotiate to 1M anyway
* We have frequent power outage (5+ times a year) and noauto helps our not to
hang on mounting nfs shares. Drawback is you have to manually mount. Time
out helps with this issue as well.
* These are adjusted if necessary for particular workloads
10) what parts of the file system do you use NFS for (free form):
* /home and /apps
* We use NFS for the OS (NFSRoot), App tree, $HOME, Group dedicated space, as
well as some of our scratch spaces. All of these come from different NFS
* /home, /apps
* /home /opt /etc /usr /boot
* /home, /apps, /scratch - all of 'em
* /home, long term project storage, shared software
* home, apps, shared data
* /usr/local, /home
* /home , /apps
* /home, /group, /usr/local
* /home, parts of /opt, some specific top level auto-mountable dirs
* What above is called /apps and /home for a few medium sized systems
* /home, /local, /opt, /diskless
* /home, /opt, diskless node images
11) How many nodes can mount a single NFS server at once:
24% >= 512 nodes
20% 65-128 nodes
16% 1-16 nodes
12% 17-32 nodes
12% 257-512 nodes
12% 129-256 nodes
4% 33-64 nodes
12) How many NFSd daemons do you run per NFS server
13) Do you use NFSd or user space
81.0% Kernel NFSd
14.3% User space
14) What interconnect do you use with NFS?
15) If IB what transport (10 responses)
16) If IB, do you use connected mode (8 responses)
65.5% Connected mode
37.5% Don't use connected mode
17) Do you use UDP or TCP (25 responses)
18) Which other network file systems do you use? (24 responses)
8.3% None (Panansas, GPFS, HSM/SAM/QFS, or more than one of the above)
19) Are the other network file systems more or less reliable than NFS?
16.7% I use only NFS
12.5% Much more reliable
4.2% Much less reliable
4.2% Somewhat less reliable
4.2% Somewhat more reliable
20) Do you support MPI-IO (not just MPI)
8.3% (yes, but nobody uses it)
21) Any tips for making NFS perform better or more reliably?
* We start with the underlying block (raid/disks) setup that you are going to
serve data out and plumb up from there. The key things here is choosing your
raid stride/chunk sizes and insuring your file system is as aware of the raid
layout for good alignment as you can. We do follow the esnet host tuning found
at: http://fasterdata.es.net/host-tuning/linux/ on both client and server
systems. We also bump up the rpc.mountd count to help insure successful mounts
as we use autofs to mount a number of the nfs spaces. When a larger HPC job
starts up on many nodes we did have a time where not all would be able to mount
successfully if the server was under load. Increasing the rpc.mountd count
helped. We also set async and wdelay on our exports on the servers.
* Kernel settings
* I've heard that configuring IB in RDMA boosts NFS performance
* We don't use NFS for high performance cluster data. That's Lustre's world.
Where NFS is used for scientific data, it's in places where there are modest
numbers of concurrent clients.
* more disks
* Try to optimize /etc/sysconfig/nfs as much as possible.
22) Any tips for making NFS clients perform better or more reliably?
* Following the above mentioned esnet info at:
http://fasterdata.es.net/host-tuning/linux/. I should note that for both client
and server that are using IPoIB we use connected mode and set the MTU to 64k.
* Reducing the size of the kernel dirty buffer on the clients makes
performance much more consistent.
* user reliable interconnect hw
* We've tried scripting NFS mounts w/o much success.
* Educate users on using the right filesystem for the right task
23) Anything you would like to add:
* We have also seen input from others that they see gains with the client
option of 'nocto'. The man pages would suggest this has some risks so while we
have tested and can see that certain loads see a gain from this we have not yet
moved forward to deploy this option on our general setup. We are in process of
testing our apps to insure we do not create other issues for apps if we do use
this flag. Another things we have been looking at is cachefilesd and seeing how
well that helps for data that can easily be cached. For things like our
application trees, the OS (we are NFSRoot booted), and even some user reference
data sets this looks quite promising but we have not gone live with this yet either.
* We're always looking to improve our environment as well. We don't always
have TIME to do so, of course.
* Horses for courses. NFS is great for shared software and home directories.
It's pretty useless for high performance access from hundreds of compute nodes.
* Every storage system / file system I've ever seen or used has had its
problems. There is no silver bullet (afaik). Use that which you have the
competence to handle.
* We are currently struggling with NFS mounts. We use them extensively
throughout our department. Problems are they hang constantly and when one person
is using the share heavily it slows down other computers. We've done lots of
research into optimizing NFS but always come back to the same issues (hanging
mounts that don't recover w/o admin interaction). We would love to know what
other people are doing. We are experimenting with ceph at the moment for future
large storage needs.
More information about the Beowulf