We had an issue with this on a NetWare 6.5 IBM server with ServeRaid 7t (Adaptec 2410SA) SATA RAID disk system and 1 Gbit NIC.
Copying smal files was so and so, while storing of large files - like iso images - on the server took "forever".
All the usual topics was checked - change of NIC, buffers, client cache settings, network. Also, we studied this question:
but nothing helped. Read performance was average at about 40%, write performance a disaster with 7% use of bandwidth at most with delayes in the transfer stream up to 1 second. Actually, it was faster to download an iso image from an external FTP server to the workstation than saving it to the file server.
The we located the tuning guide:
and these paragraphs:
NSS /CacheBalance=xx and NSS /MinBufferCacheSize=n
Every 30 seconds (by default) and/or when the server loads or unloads an NLM, NSS rebalances the NSS file system cache to the percentage specified by the /CacheBalance parameter. By default this is set to 60%; the valid range is 1-99 expressed as percentage. (You can change the default time interval with the /CacheBalanceTimer command. The range for this is 1 - 3600 seconds.)
The /MinBufferCacheSize represents the minimum amount of file system cache NSS will use. It will never balance the cache below the /MinBufferCacheSize. By default it is set to 512 * 4KB buffers, or 2MB. The valid range is 256 - 1,048,576.
On a server with only NSS volumes, you can usually adjust the /CacheBalance parameter upwards of 85% without any problem; some customers have reported that they can adjust it in excess of 95%. Monitor the Least Recently Used (LRU) Sitting Time on the NetWare server to ensure that you are not running the server too low on memory.
Obtaining beast (file) information from disk is an expensive process in terms of performance. If NSS can get the information from memory, it will enable file handles to be given quicker. The /ClosedFileCacheSize parameter keeps these beast objects in cache so NSS doesn't have to go to disk and unpack beast information again when it wants the same file.
In NSS 3.0, the default size is 50,000; the valid range is 16-1,000,000. Novell recommends setting this parameter to 100,000 or more if you have applications on your server that consistently cycle through the same set of files and you suspect that this cache is being flushed when combined with normal server operations. On average, each Closed File Cache entry consumes 0.4 - 1KB of RAM.
This did the trick:
NSS /CacheBalance=99 /ClosedFileCacheSize=10000
Now read/write to/from a WinXP workstation with a 100 Mbit NIC runs at about 65% and 90% bandwidth respectively.
I realize I have answered my own question; however, this was really hard to track down and at the end the solution was so simple. I don't recall the initial settings not to say why they were so - no idea.
Any useful comments will be rewarded with a small gift of points.