On Tue, 9 Nov 1999, Aimee Schmidt wrote:
Try installing the appropriate Solaris patches and tune NFS/DNLC parameters. This will improve performance by an order of magnitude or so.
Whether/how much these patches help depends a great deal on the specifics of your situation. Nonetheless, these are probably good things. I wish Sun would let us know exactly how these patches implement their fix.
Patches: 5.6 sparc - 105720-08 5.6 i386 - 105721-08 5.7 sparc - 106541-06 5.7 i386 - 106542-06
Tunings (for /etc/system): set nfs:nfs_nra = 10 set nfs:nfs3_nra = 10 set nfs:nfs_max_threads = 24 set nfs:nfs3_max_threads = 24 set ncsize=8192 Aimee
Some of these values are very different from what I've found to be effective on high volume mail systems. I'm not at all sure that ncsize needs to be set this low if the above patches actually fix bug "4212925 NFS client unlink operation slow" effectively, but again, since I don't know what the actual fix introduced was, it's hard to tell.
Does netapp have a white paper discussing suggested solaris tuning parameters with some explanation on why the values were picked?
Not that I know of. The "correct" numbers are application, machine, RAM, and implementation specific, so I doubt they could provide something simple that improved everyone's situation.
My department recently put a 740 in production as a mail spool with a mid of solaris 7 and solaris 8(beta) hosts. I got a list of parameters from another netapp engineer through a salesperson but was reluctant to change the value of nfs:nfs_nra to 24 for example.
For mail systems with small mailboxes I would expect that "10" might be higher than optimal. If you message store is one file per message and most messages are small, I would actually expect performance to be marginally worse with nfs_nra = 10 than with a lower value. I'd hesitate to speculate on what would be optimal without knowing the specific characteristics of a particular situation.
The default value for this appears to be 524288!
This would be several Gigabytes in size. In some situations, automatically loading in the whole file might be a good thing. In some situations, especially where the client connection was very slow, it might read the whole file into memory, but be so slow about sending the connection down to, say, a POP client that LRU caused some of this info to be flushed from the buffer cache before it got transmitted, in which case it would have to be read again, which would be a waste.
Since there are other applications that suggest tuning these parameters, and Sun asks us to change them from time to time, it is helpful to know 'why' we set the values.
Certainly, it is important to understand what each of these parameters controls.
If the real answer is "we just iterated through lots of different numbers and these are the ones that provided the best performance mix", thats OK..
In most cases, this is probably the case. Note, though, that if your servers are memory poor the same parameters that work best on a similar machine with memory to spare are likely to be sub-optimal, for example.
FYI, here is the list of things we got from the salesperson:
set npty = 1024 set nfs:nfs_nra = 10 set nfs:nfs3_nra = 10 set nfs:nfs_max_threads = 24 set nfs:nfs3_max_threads = 24
On really busy mail servers with much memory, my opinion is that nfs_max_threads can be set much higher than this. I believe that one thread per concurrent process accessing data over NFS is not unreasonable as a rule of thumb, as long as the box doesn't start thrashing as a consequence.
set maxusers = 256
Depends on your box and how much RAM you use. For E250, E450, E3500, and larger servers, boosting this to 2048 is not unreasonable if you have RAM to burn in order to gain performance.
set ncsize = 30000
If you don't have one of the patches listed above applied, this may be a little too high. With the patches installed, without knowing how the problem was fixed, it's hard to say whether this number is too high or not.
set doingcache=0
I don't know what this does.
It's impossible to come up with a general set of kernel tuning parameters for Solaris clients doing email over NFS without more information. The nature of the message store is important. The load characteristics are important. What client machines are being used and how much RAM do they have? Is it worth consuming more memory, network, and filer I/O resources to reduce POP or IMAP connection latency? Is the system primarily a POP, file based, or IMAP server? There are a large number of variables that precludes a simple answer.
In everyone's case, there's not much to do about it except to understand what the parameters do and to iterate on them until good things happen. In order to understand what they do, I recommend the 2nd edition of Adrian Cockroft's Solaris performance tuning book and the SMCC NFS Server Performance and Tuning Guide from Sun. For the latter, it's a matter of time and effort. However, for those sites managing less than 100,000 mailboxes, the return on lots of careful tuning is probably small enough that it's not worth pursuing.
One note of caution, Cockroft's book covers Solaris tuning up through about Solaris 2.5.1. While the descriptions are still valid, some of the math and parameters have changed. Not all the advice is good advice if you're running Solaris 2.6 or higher. The same would be true for older editions of the Tuning Guide.