One of the tuning items that has come up as I've been doing all of this benchmarking is NSS Read Ahead. This can be configured by two command-line parameters:
nss /AllocAheadBlks=[vol]:[count]
nss /ReadAheadBlks=[vol]:[count]
AllocAhead allocates blocks on writes, where ReadAhead is just that, blocks read ahead of the read. Both behaviors are to make access to the base I/O subsystem more efficient and to improve Read performance.
By default as of NetWare 6.5, the default ReadAhead is 2 blocks (8KB), and the default AllocAhead is 15 blocks (60KB).
So what is the recommended settings for these? The manual has this to say:
The question then begs what is the real optimal setting for this, based on what you can find out about your storage systems. I don't know, but I do have some suggestive ideas. If I have time, I'll see what I can do about testing it.
The gold standard is having very good data on how I/O is performed on your volume. For a volume consisting of mostly databases, such as Access files, the read-ahead should be set to a value close to the average record-read size. For a plain ole home-directory volume file size is probably the better determiner of 'best'.
Running some stats on the STU1 volume, I've found the following:
RAID Stripe size: 128KB
NSS Block size: 4KB
Median Size: 8192KB
Average Size: 293KB
File-count Median Size: 16KB
The GIS volume is another story.
Median Size: 200MB
Average Size: 11.5MB
File-count Median Size: 8KB
Tags: OES, NSS
nss /AllocAheadBlks=[vol]:[count]
nss /ReadAheadBlks=[vol]:[count]
AllocAhead allocates blocks on writes, where ReadAhead is just that, blocks read ahead of the read. Both behaviors are to make access to the base I/O subsystem more efficient and to improve Read performance.
By default as of NetWare 6.5, the default ReadAhead is 2 blocks (8KB), and the default AllocAhead is 15 blocks (60KB).
So what is the recommended settings for these? The manual has this to say:
The most efficient value for block count depends on your hardware. In general, we recommend a block count of 8 to 16 blocks for large data reads; 2 blocks for CDs, 8 blocks for DVDs, and 2 blocks for ZLSS.ZLSS is, I believe, a standard volume.
The question then begs what is the real optimal setting for this, based on what you can find out about your storage systems. I don't know, but I do have some suggestive ideas. If I have time, I'll see what I can do about testing it.
The gold standard is having very good data on how I/O is performed on your volume. For a volume consisting of mostly databases, such as Access files, the read-ahead should be set to a value close to the average record-read size. For a plain ole home-directory volume file size is probably the better determiner of 'best'.
Running some stats on the STU1 volume, I've found the following:
RAID Stripe size: 128KB
NSS Block size: 4KB
Median Size: 8192KB
Average Size: 293KB
File-count Median Size: 16KB
- 50% of the files on STU1 are 16K or smaller
- 50% of the files on STU1 are responsible for 0.55% of the total space used on STU1
- 90% of the files on STU1 are 256K or smaller, which represents 7.9% of the total space used on STU1
- 10% of the files on STU1 are responsible for over 90% of the data on STU1
The GIS volume is another story.
Median Size: 200MB
Average Size: 11.5MB
File-count Median Size: 8KB
- Total files on the volume is vastly smaller than on STU1
- 43% of the data on the GIS volume are in files larger than 256MB
- The largest file-type is TIF, which is an uncompressed graphics format that is read as a whole, not as sub-records
- Files under 64MB in size represent 93% of the files, but only 7.7% of the data. Compare that with 99.97% and 89.3% respectively on STU1
Tags: OES, NSS