HP c-Class Performance Tuning manual Pre-allocating memory

Page 18

Using the fio-format command to re-initialize the drive

Performing large sequential writes to the drive

For more details on using the fio-formatcommand, see the IO Accelerator User Guide for your operating system.

Increasing outstanding requests allowed by the kernel (Linux only)

This section applies to running the 2.0 driver series and later on Linux, with the default value (3) for the use_workqueue driver option.

The I/O schedulers limit the number of outstanding I/O requests issued to a block device to 128. This might limit achievable performance for small block random I/O. This limit can be adjusted dynamically. For example, to increase the number of allowed requests to 4096 per block device, use the following command:

$ echo 4096 > /sys/block/<fio name>/queue/nr_requests

where <fio name> is the block device name, such as fioa.

For some workloads, increasing this parameter might increase I/O latency.

Pre-allocating memory

The driver allocates memory as needed at runtime. If you need to keep memory allocations to a minimum, such as when using the IO Accelerator as a swap or page file, enable preallocation with the driver options described below.

You can further tune memory allocation for your IO Accelerator devices by using the following module parameters:

preallocate_memory

preallocate_mb

expected_io_size

NOTE: Improper use of the preallocate_mb or expected_io_size module parameters might cause the driver to have insufficient memory in the pre-allocate pool. If the driver needs more memory than is provided in the pre-allocate pool, it will fall back to non-pre-allocate behavior for the additional memory, allocating and freeing memory as it would under normal operation.

preallocate_memory

Description

Causes the driver to pre-allocate the RAM it needs for specified devices. A list of serial numbers is passed in so the driver can pre-allocate the maximum memory needed per device.

This module parameter does not normally need to be invoked if swap has been enabled. If the memory pre-allocation fails, the driver fails to load or enters minimal mode.

General tuning techniques 18

Image 18
Contents HP IO Accelerator Performance Tuning Guide Page Contents Setting Windows driver affinity About the Performance and Tuning Guide IntroductionSystem performance Verifying Linux system performanceWrite bandwidth test System performance Verifying Windows system performance with Iometer Debugging performance issues Improperly configured benchmarkOversubscribed bus Handling PCIe errors PCIe link width improperly negotiated CPU thermal throttling or auto-idling Slow performance using RAID5 on Linux Using CP and other system utilitiesBenchmarking through a filesystem To avoid this issue. For more information, see the patch General tuning techniques Using direct I/O, unbuffered, or zero copyMultiple outstanding IOs Pre-conditioning $ dd if=/dev/zero of=/dev/fioX bs=10M oflag=directPre-allocating memory $ echo 4096 /sys/block/fio name/queue/nrrequestsPreallocatemb Tuning techniques for writes Increased steady-state write performance with fio-formatStride = chunk size / filesystem block size Linux filesystem tuningExt2-3-4 tuning Stripewidth = dbd * strideUsing the IO Accelerator as swap space Options iomemory-vsl preallocatememory=1072,4997,6710,10345Fio benchmark Compiling the fio benchmark$ tar xjvf fio-X.Y.Z.tar.bz2 $ cd fio-X.Y.Z Page Fd = openfilename, Owronly Programming using direct I/OUsing direct I/O on Linux Fd = openfilename, Owronly OdirectUsing direct I/O on Windows ++ code sample Programming using direct I/O Programming using direct I/O Setting Windows driver affinity Windows driver affinityCreate the SetWorkerAffinity2 tag of type Regdword Acronyms and abbreviations Index Index