Environment
Novell NetWare
Novell Open Enterprise Server (NetWare based)
Novell Storage Services (NSS)
Novell Open Enterprise Server (NetWare based)
Novell Storage Services (NSS)
Situation
- How to tune a server for best write performance
- Hints, tips and tricks to tune a write-biased server
- Writing, copying or moving files is slow
- Optimising/optimizing write performance
- High utilisation/utilization or poor performance when copying to server
Resolution
In normal usage, users generally do more reading from servers than writing to them. The standard out-of-the-box configuration can often deal with this without further manual tuning. There are circumstances, however, where a server may be subjected to a great deal of writing. In extreme cases the server can become unresponsive and cause bottlenecks where clients slow down or disconnect.
The following tips are all based on real-world experience and can help improve the performance of servers in a write-heavy role. Not everything here may be appropriate in your environment. You need to understand where the bottlenecks are and address those on a case-by-case basis.
Remember!
The following tips are all based on real-world experience and can help improve the performance of servers in a write-heavy role. Not everything here may be appropriate in your environment. You need to understand where the bottlenecks are and address those on a case-by-case basis.
Remember!
- Baseline your server so that you know whether you are making things better or worse
- Ensure that a consistent set of test data is used in your measurements; do not use production data which can change
- Tuning the file system is a matter of modifying only one or two parameters at a time with a gradual, minor adjustment; measure the impact of each change in order to monitor which parameters have the greatest effect
- The following tools can be used to monitor NSS and measure performance:
- Novell Remote Manager (NoRM)
- DPMeterM available from DeveloperNet
(https://developer.novell.com/wiki/index.php/Storage_Test_Tools)
- NSS Commands NameCacheStats, CacheStats, Status and ZLSSIOStatus
- Refer to the following documents:
- Tuning NSS Performance (NetWare) from OES 2: NSS File System Administration Guide
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/aglospq.html)
- Novell Storage Services (NSS) Performance Monitoring and TuningAppNote
(https://support.novell.com/techcenter/articles/ana20020701.html)
- Tuning NSS Performance (NetWare) from OES 2: NSS File System Administration Guide
- There is no one-size-fits-all answer to optimising servers: each server's usage profile must be understood and parameters changed accordingly
- Use only NSS volumes on your server, not a combination of NSS volumes and NetWare Traditional volumes which will split resources
- Split disk subsystems by function; e.g. do not put print queues or other temporary data (which will use bus bandwidth, constantly flush the cache and thrash the disk) on the same subsystem as user data
- Turn off File Compression
- Ensure that the best Host Bus Adapters (HBA) and Hard Disk Drives (HDD) available are in use as tuning cannot make up for slow components
- Ensure the network is performing optimally: check with your network support
- Ensure that as much memory as possible is in the server as memory is used for caching and buffering
- Ensure that the latest firmware and drivers are in use as hardware manufacturers can make undocumented performance improvements
- Some HBAs have on-board memory that can be tuned for read vs write caching or fault tolerance (e.g. immediate flush): check with your hardware vendor
- Some HBA drivers have only one write queue per LUN thus striping data across a number of LUNs can dramatically improve performance: check with your hardware vendor
- The load order (in STARTUP.NCF) of the HBA driver, Multiprocessor (PSM) driver and multipathing drivers can affect performance: check with your hardware vendor
- Early drivers use a 63 sectors-per-track arrangement against HDDs that use 64 sectors-per-track thus forcing two read/write operations per read/write; ensure disks are partitioned using SCSIHD.CDM v3.1.4 dated August 2003 or later (therefore this is most likely to affect older disk subsystems that were partitioned before this module was applied). Note that any disk with a DOS partition will default to 63 sectors-per-track.
- Turn off hyper-threading
- See TID3407939 - Information on Hyper-Threading
(https://www.novell.com/support/search.do?searchString=3407939)
- See TID3407939 - Information on Hyper-Threading
- Use NoRM to check whether the following parameters need to be increased as a shortage will impact performance:
- Minimum Packet Receive Buffers
- Maximum Packet Receive Buffers
- Minimum Service Processes
- Maximum Service Processes
- Enable Opportunistic Locking/Client File Caching if appropriate
- See TID10095627 - Information on Opportunistic Locking
(https://www.novell.com/support/search.do?searchString=10095627)
- See TID10095627 - Information on Opportunistic Locking
- Refer to the documentation before changing any NSS parameters
- Do not change any parameters without understanding the implications
- NSS Parameters listed in this section can be set in the following ways:
- nss /parameterin STARTUP.NCF or AUTOEXEC.NCF file
- NSSSTART.CFG
- server -z
- See OES 2: NSS File System Administration Guide - Using NSS Commands
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/batftab.html)
- Set CacheBalance as high as you can (default is 85%) to give as much memory as possible to NSS cache
- See OES 2: NSS File System Administration Guide - Setting the Cache Balance
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/agtgkda.html)
- See OES 2: NSS File System Administration Guide - Setting the Cache Balance
- Increase FileFlushTimer and BufferFlushTimer and use NoFlushFilesImmediately as this can improve write performance by reducing the frequency that data gets flushed to disk. This carries an increased risk of data loss in the event of a server failure as there is more data in memory waiting to be written to disk.
- See OES 2: NSS File System Administration Guide - I/O Write Commands (NetWare)
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/bathb5o.html)
- See OES 2: NSS File System Administration Guide - I/O Write Commands (NetWare)
- Increase AllocAheadBlks
- See OES 2: NSS File System Administration Guide - Read Ahead Blocks and Allocate Ahead Blocks Commands
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/ajhvfk4.html)
- See OES 2: NSS File System Administration Guide - Read Ahead Blocks and Allocate Ahead Blocks Commands
- Understand the output of ZLSSIOStatus and increase ZLSSPendingWriteIOs if appropriate
- Write Count Queue Level = Maximum number of I/Os (default 1000) that NSS can give to media manager at one specific time
- Pending Write IOs on queue = Count of I/Os that are not currently on the queue of 1000 but are waiting to get on the queue.
- Current Outstanding Write IOs = Count of I/Os that are currently on the queue of 1000 waiting to be serviced
- Increasing ZLSSPendingWriteIOs will increase the number of write inputs dropped in to the storage subsystem
- Note that ZLSSIOStatus only shows a snapshot at the moment it is run, therefore run it several times to ensure the information shown is consistent
- See OES 2: NSS File System Administration Guide - I/O Monitoring Commands
( https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/bb07yhf.html) - Set NoCopyBuffersOnXLatch
- See TID10095637 - Optimizing NSS and the storage system for different usage patterns
(https://www.novell.com/support/search.do?searchString=10095637)
- See TID10095637 - Optimizing NSS and the storage system for different usage patterns
- Set Disk Read After Write Verify = Off
- See OES 2: NSS File System Administration Guide - Common File System Parameters
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/set.html)
- See OES 2: NSS File System Administration Guide - Common File System Parameters
- Set Hardware Write Back = On
- See OES 2: NSS File System Administration Guide - Common File System Parameters
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/set.html)
- See OES 2: NSS File System Administration Guide - Common File System Parameters
- Increase NumWorkToDos
- See OES 2: NSS File System Administration Guide - Load Commands for the nssstart.cfg File
(https://www.novell.com/documentation/oes2/stor_nss_lx_nw/data/bb223q2.html)
- See OES 2: NSS File System Administration Guide - Load Commands for the nssstart.cfg File
Additional Information
Use the Feedback link on this TID to suggest further tips for improving write performance. The best ones may be included in future revisions.