DescriptionThis parameter determines how FMS performs I/O to the disks. The following options are available:
- 0, Perform I/O using the file system.
- 1, Perform raw I/O directly to the disks, which are mounted as raw devices. (UNIX system only).
- 2, Perform I/O directly to the disks without using the buffer cache.
- 3, Perform I/O using the file system. Flush writes to disk.
For large files which exceed the size of physical memory, moving the data first to a buffer cache and then to the disk makes no sense. Eventually the data must reside on disk. The double move results in memory contention between the operating system trying to maintain the buffer cache and FMS memory. Further FMS performs disk transfers in parallel with processing (asynchronous I/O). By having the data first accumulate in the buffer cache, and then transfer to disk in a large chunk as determined by the operating system, prevents the uniform continuous flow of data when controlled by FMS. By setting IOTYPE=2, this double move is eliminated and the FMS asynchronous I/O works at maximum performance.
For small problems, where the data will fit in memory, specify the FMS Parameter INCORE=1. This will allow FMS to operate directly on the data in your application without any moves.
RAW I/OFMS supports raw I/O to perform transfers to/from disks that totally bypasses the operating system. This can be useful on systems that do not support direct I/O.
To use the RAW I/O feature, you specify IOTYPE=1 in the license file. In addition, you must provide a file called FMSRAW that describes the raw devices. This file contains a record for each raw I/O device in the following format:
Column 1: Queue number (0 to 9) Column 2: Stripe number (0 to 9) Column 3: Volume number (0 to 9) Column 4: Space Column 5 and up: Raw device nameThe first record contains the mount point for the unstriped files. This is the information normally placed in the directory FMSDISK. The first four columns of this record should be blank.
Each of the following records specifies the mount point for one of the FMS stripes. The values of the FMS Parameters NUMIOQ, NUMSTP and NUMVOL determine the number of records required. This is the information normally placed in directories FMSDISKijk, where i is the queue number, j is the stripe number and k is the volume number.
FMS opens each of these files when FMSINI is called. When you call FMS routines to create files from your application, they are placed within these files.
You may also use the RAW I/O option to address files that are part of the UNIX file system. If you specify a valid path name instead of the raw device name in the FMSRAW file, FMS opens the file and treats it as a raw device. While this does not provide the potential performance benefits of true RAW devices, it may be used to store some of the file data as normal files and some as raw files.
RAW I/O ExampleSuppose we have 3 disk drives (rrz3c, rrz4c and rrz5c) that we have initialized as raw devices. We would like to create a 3-way file stripe system to store the large FMS files on these devices (the large FMS files are vector files and off-diagonal matrix files). Normally these files would be placed in the directories FMSDISK000, FMSDISK010 and FMSDISK020. The small nonstriped files we want to place in a normal file called /tmp/MYDATA, which we have created with the command
touch /tmp/MYDATAThe file FMSRAW would contain the following:
/tmp/MYDATA 000 rrz3c 010 rrz4c 020 rrz5cwhere rrz is the character entry point to the disk partition as listed in the /dev directory.
Without RAW I/O, FMS would normally place the files in the directories FMSDISK, FMSDISK000, FMSDISK010 and FMSDISK020. With RAW I/O, the files are placed within the RAW files. In essence, each RAW file contains the same information that would normally be placed in a directory.
Determining the type of file systems on LinuxYou can determine the file systems used for each mount point on Linux with the command