JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Sun QFS File System 5.3 Configuration and Administration Guide     Sun QFS and Sun Storage Archive Manager 5.3 Information Library
search filter icon
search icon

Document Information

Preface

1.  File System Overview

2.  About the Master Configuration File

3.  mcf File Examples

4.  Configuring the File System

5.  Configuring a Shared File System

6.  Administering File System Quotas

7.  Advanced File System Topics

8.  SMB Service in SAM-QFS

9.  Configuring WORM-FS File Systems

10.  Tunable Parameters

Increasing File Transfer Performance for Large Files

How to Increase File Transfer Performance

Enabling Qwrite Capability

Setting the Write Throttle

Setting the Flush-Behind Rate

Tuning the Number of Inodes and the Inode Hash Table

ninodes Parameter

nhino Parameter

When to Set the ninodes and nhino Parameters

11.  Using QFS File Systems with SANergy (SAN-QFS)

12.  Mount Options in a Shared File System

13.  Using the samu Operator Utility

Increasing File Transfer Performance for Large Files

Sun QFS file systems are tuned to work with a mix of file sizes. You can increase the performance of disk file transfers for large files by enabling file system settings.

How to Increase File Transfer Performance

  1. Set the maximum device read/write directive.

    The maxphys parameter in the Oracle Solaris /etc/system file controls the maximum number of bytes that a device driver reads or writes at any one time. The default value for the maxphys parameter can differ depending on the level of the Oracle Solaris OS, but it is typically around 128 kilobytes.

    Add the following line to /etc/system to set maxphys to 1 megabytes:

    set maxphys = 0x100000

    Note - The maxphys value must be set to a power of two.


  2. Set the SCSI disk maximum transfer parameter.

    The sd driver enables large transfers for a specific file by looking for the sd_max_xfer_size definition in the /kernel/drv/sd.conf file. If this definition does not exist, the driver uses the value defined in the sd device driver definition, sd_max_xfer_size, which is 1024 x 1024 bytes.

    To enable and encourage large transfers, add the following line at the end of the /kernel/drv/sd.conf file:

    sd_max_xfer_size=0x800000;
  3. Set the fibre disk maximum transfer parameter.

    The ssd driver enables large transfers for a specific file by looking for the ssd_max_xfer_size definition in the /kernel/drv/ssd.conf file. If this definition does not exist, the driver uses the value defined in the ssd device driver definition, ssd_max_xfer_size, which is 1024 x 1024 bytes.

    Add the following line at the end of the /kernel/drv/ssd.conf file:

    ssd_max_xfer_size=0x800000;

    Note - On Oracle Solaris 10 x86 platforms, this change is made in the /kernel/drv/sd.conf file. For a maximum transfer size of 8 Mbytes, the following line is added:


    sd_max_xfer_size=0x800000
  4. Reboot the system.
  5. Set the writebehind parameter.

    This step affects paged I/O only.

    The writebehind parameter specifies the number of bytes that are written behind by the file system when paged I/O is being performed on a Sun QFS file system. Matching the writebehind value to a multiple of the RAID's read-modify-write value can increase performance.

    This parameter is specified in units of kilobytes and is truncated to an 8-kilobyte multiple. If set, this parameter is ignored when direct I/O is performed. The default writebehind value is 512 kilobytes. This value favors large-block, sequential I/O.

    Set the writebehind size to a multiple of the RAID 5 stripe size for both hardware and software RAID-5. The RAID-5 stripe size is the number of data disks multiplied by the configured stripe width.

    For example, assume that you configure a RAID-5 device with three data disks plus one parity disk (3+1) with a stripe width of 16 kilobytes. The writebehind value should be 48 kilobytes, 96 kilobytes, or some other multiple, to avoid the overhead of the read-modify-write RAID-5 parity generation. For Sun QFS file systems, the DAU (sammkfs -a command) should also be a multiple of the RAID-5 stripe size. This allocation ensures that the blocks are contiguous.

    You should test the system performance after resetting the writebehind size. The following example shows testing timings of disk writes:

    # timex dd if=/dev/zero of=/sam/myfile bs=256k count=2048

    You can set the writebehind parameter from a mount option, from within the samfs.cmd file, from within the /etc/vfstab file, or from a command within the samu utility. For information about enabling this from a mount option, see the -o writebehind=n option on the mount_samfs(1M) man page. For information about enabling this from the samfs.cmd file, see samfs.cmd(4) in Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual. For information about enabling this from within samu(1M), see samu(1M) in Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual.

  6. Set the readahead parameter. This step affects paged I/O only.

    The readahead parameter specifies the number of bytes that are read ahead by the file system when paged I/O is being performed on a Sun QFS file system. This parameter is specified in units of kilobytes and is truncated to an 8-kilobyte multiple. If set, this parameter is ignored when direct I/O is performed.

    Increasing the size of the readahead parameter increases the performance of large file transfers, but only to a point. You should test the performance of the system after resetting the readahead size until you see no more improvement in transfer rates. The following example shows a method for testing timings on disk reads.

    # timex dd if=/sam/myfile of=/dev/null bs=256k

    You should test various readahead sizes for your environment. The readahead parameter should be set to a size that increases the I/O performance for paged I/O but is not so large as to hurt performance. You should also consider the amount of memory and number of concurrent streams. . Setting the readahead value multiplied by the number of streams to a value that is greater than memory can cause page thrashing.

    The default readahead value is 1024 kilobytes. This value favors large-block, sequential I/O. For short-block, random I/O applications, set readahead to the typical request size. Database applications do their own read-ahead, so for these applications, set readahead to 0.

    The readahead setting can be enabled from a mount option, from within the samfs.cmd file, from within the /etc/vfstab file, or from a command within the samu utility. For information about enabling this setting from a mount option, see the description of the -o readahead=n option on the mount_samfs(1M) man page. For information about enabling this setting from the samfs.cmd file, see samfs.cmd(4) in Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual. For information about enabling this setting from within samu(1M), see samu(1M) in Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual.

  7. Set the stripe width.

    The-o stripe=n option with the mount command specifies the stripe width for the file system. The stripe width is based on the disk allocation unit (DAU) size. The n argument specifies that n x DAU bytes are written to one device before writing switches to the next device. The DAU size is set when the file system is initialized by the sammkfs -a command.

    If -o stripe=0 is set, files are allocated to file system devices using the round-robin allocation method. With this method, each file is completely allocated on one device until that device is full. Round-robin is the preferred setting for a multistream environment. If-o stripe=n is set to an integer greater than 0, files are allocated to file system devices using the stripe method. To determine the appropriate -o stripe=n setting, try varying the setting and taking performance readings. Striping is the preferred setting for turnkey applications with a required bandwidth.

    You can also set the stripe width from the /etc/vfstab file or from the samfs.cmd file.

    For more information about the mount command, see mount_samfs(1M) in Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual. For more information about the samfs.cmd file, see samfs.cmd(4) in Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual.