For performance-critical applications, the overhead of the Journaled File System (JFS) for I/O operations might slow down the program. If your program generates large scratch files, you might find that I/O bandwidth also limits its performance. Performing I/O directly to a logical volume rather than to a file system can eliminate the JFS overhead. Using data striping on the logical volume can further improve throughput or processor utilization or both.
This technique works on both AIX 3.2.5 and AIX 4.1, but for significant performance gains the application must be run under AIX 4.1 or higher.
Related Information: | Because data-striped I/O runs much faster for data items that are aligned more strictly than normal, be sure to use the -qalign Option when compiling any programs that perform logical volume I/O or data striping. |
To use a logical volume as a file, do the following:
Attention: Do not perform this kind of I/O with any logical volume that already contains a file system; doing so will destroy the file system. You must also take any precautions necessary to ensure that multiple users or programs do not write to the same logical volume, or write to a logical volume while someone else is reading from it.
Notes:
Related Information: | See -qalign Option. |
Data striping is primarily useful for increasing I/O throughput for large, direct-access scratch files. The performance benefit is greatest when a program reads and writes large objects.
When you make use of data striping, you perform I/O to a logical volume as described in Logical Volume I/O, and set up the logical volume especially for high-performance striped I/O through the smit or mklv commands. You can then use the technique that is described in Naming Scratch Files to place a scratch file on a striped logical volume.
For example, consider a Fortran program that contains the following statements:
OPEN (UNIT=42, STATUS='SCRATCH', + FORM='UNFORMATTED', ACCESS='DIRECT', RECL=131072) ... OPEN (UNIT=101, STATUS='SCRATCH', + FORM='UNFORMATTED', ACCESS='DIRECT', RECL=131072)
You could place the scratch files for units 42 and 101 on the raw logical volumes /dev/rlv30 and /dev/rlv31 by setting environment variables before running the program, as follows:
XLFRTEOPTS="scratch_vars=yes" XLFSCRATCH_42="/dev/rlv30" XLFSCRATCH_101="/dev/rlv31" export XLFRTEOPTS XLFSCRATCH_42 XLFSCRATCH_101
Related Information: | AIX Performance Monitoring and Tuning Guide discusses the performance of data striping. |