Configure Striping Size and Eventsize for IBM DB2 Databases on Itanium-Based Systems

Submit New Article

March 1, 2009 11:00 PM PST



Challenge

Configure striping size and eventsize for IBM DB2* Databases to produce high performance on Itanium®-based systems. The organization of data on the disks is an important factor for benchmark performance. Extentsize determines number of pages written to a container before moving to the next container. It is very important to distribute data horizontally across multiple containers so that with a high number of sequential disk reads, all disk spindles can move in parallel. To achieve this disk parallelism, selection of the proper extentsize is key.

In reality, I/O performance is constrained by multiple factors, such as hard-drive speed (measured in RPM), peripheral-bus (PCI and PCI-X) bandwidth, I/O interconnect bandwidth, and the unit I/O size that an operating system can handle. PCI bus throughput capability determines the maximum I/O bandwidth.

No matter how fast individual hard drives are, once the number of drives attached to a PCI bus via controllers/enclosures reaches a certain point, the system cannot deliver more throughput through the addition of additional drives. No matter how large the overall aggregate bandwidth from all PCI buses, the volume of data that the operating system can handle will finally determine how much I/O an application can accomplish. The calculation of extentsize is a reflection of these system constraints.


Solution

Calculate the eventsize based on the type of disk subsystem and the maximum I/O unit size. There are, in general, two types of disk subsystems to consider: RAID and non-RAID. A non-RAID storage system is typically described as JBOD (Just a Bunch Of Disks).

All RAID levels, except RAID level 1, use disk striping. In the case of RAID storage with striping, before calculating extentsize, one has to decide the striping size during the configuration of the RAID arrays. Striping size refers to the amount of data written to one drive before moving to the next drive within the array.

Typically, striping size is set to the maximum I/O unit size that the OS can handle. If it is higher than that, one striping unit needs more than one I/O to be issued so that it may de-parallel disk I/Os in large disk arrays. If the striping size is less than the maximum I/O unit size, it may waste some of the I/O capacity, causing a given number of I/Os to take more time to complete.

Once the striping size is decided, the corresponding extentsize can be calculated by the following formula, assuming that all arrays on which a tablespace is defined are configured in a symmetric manner:

Extentsize = Number of Data Drives x Striping Size (KB)/Bufferpool Page Size (KB)

Deciding on the number of data drives for each RAID array can be rather complex, since the number of drives in an array is not necessarily equal to the number of drives in which data is populated. The following table summarizes the number of data drives on the most popular RAID levels:

With non-RAID (JBOD) storage, the key factor one should be sure of before setting extentsize is the maximum I/O size that the operating system can handle. The extentsize with JBOD storage can be calculated using the following formula:

Extentsize = Largest I/O Unit Size/Bufferpool Page Size (KB)

Using this formula, one extent can be read and written in one I/O unit and within one drive. Otherwise, there may be certain inefficiencies.


Source

This KnowledgeBase item contains text drawn verbatim from the following source:

Tuning IBM DB2* databases for Intel® Itanium®-based systems*