dbTalk Databases Forums  

Making DB2 be I/O aggressive

comp.databases.ibm-db2 comp.databases.ibm-db2


Discuss Making DB2 be I/O aggressive in the comp.databases.ibm-db2 forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Troels Arvin
 
Posts: n/a

Default Making DB2 be I/O aggressive - 03-03-2010 , 04:06 AM






Setup:

- Server with data residing on an XIV storage system. The XIV storage
system spreads data over all available disks with no knobs to control
priorities, cache-pools, etc. (This is by design.)

- DB2 v. 9.7.1 installed; one instance. A strategy of using automatic
storage, in order to cut down on complexity. The instance has been
set up with DFTDBPATH pointing to a mountpoint on the XIV; let's
call this /db2/data

When I created a new database, I didn't specify any paths.
For this database, I'm seeing great performance for some database
operations, but others are somewhat slow for no obvious reason.

I talked to two different DB2 consultants, and they independently and
spontaneously suggested that we create databases specifying a handful of
paths, even paths which hit the exact same storage device. The reasoning
seems to be that we need to trick DB2 to be more I/O aggressive this way.
Some initial (and rather superficial) experimentation seems to confirm
the need to use such an absurd practice.

Can this really be true? Can the same effect not be obtained using a less
illogical approach?

--
Troels

Reply With Quote
  #2  
Old   
Mark A
 
Posts: n/a

Default Re: Making DB2 be I/O aggressive - 03-03-2010 , 06:03 AM






"Troels Arvin" <troels (AT) arvin (DOT) dk> wrote

Quote:
Setup:

- Server with data residing on an XIV storage system. The XIV storage
system spreads data over all available disks with no knobs to control
priorities, cache-pools, etc. (This is by design.)

- DB2 v. 9.7.1 installed; one instance. A strategy of using automatic
storage, in order to cut down on complexity. The instance has been
set up with DFTDBPATH pointing to a mountpoint on the XIV; let's
call this /db2/data

When I created a new database, I didn't specify any paths.
For this database, I'm seeing great performance for some database
operations, but others are somewhat slow for no obvious reason.

I talked to two different DB2 consultants, and they independently and
spontaneously suggested that we create databases specifying a handful of
paths, even paths which hit the exact same storage device. The reasoning
seems to be that we need to trick DB2 to be more I/O aggressive this way.
Some initial (and rather superficial) experimentation seems to confirm
the need to use such an absurd practice.

Can this really be true? Can the same effect not be obtained using a less
illogical approach?

--
Troels
Yes it is true if you are using an sophisticated SAN or NAS solution with
fiber channel adapter cards that can handle multiple accesses at one time
without maxing out the I/O bandwidth. You are not tricking DB2, you are
trying to get parallel I/O operations with multiple paths and you are
telling DB2 exactly how many parallel paths to use since your control the
number of mount points and number of containers. But you should also set the
following variable:
db2set DB2_PARALLEL_IO=*

I don't recall if this has to be set before the tablespace is created or can
be set afterward. The asterisk means it applies to all tablespace ids, or
you can specify those where it does apply if not using RAID on some mount
points.

Reply With Quote
  #3  
Old   
Troels Arvin
 
Posts: n/a

Default Re: Making DB2 be I/O aggressive - 03-03-2010 , 07:41 AM



Mark A wrote:
Quote:
But you should also set the following variable:
db2set DB2_PARALLEL_IO=*
Yes, that was one of my first post-installation steps, even before
creating a database. And NUM_IOCLEANERS was raised. But it seems that
there was still a gain by adding a number of "cheating"-containers (as I
see them).

--
Troels

Reply With Quote
  #4  
Old   
Ian
 
Posts: n/a

Default Re: Making DB2 be I/O aggressive - 03-05-2010 , 03:45 PM



On 3/3/10 5:41 AM, Troels Arvin wrote:
Quote:
Mark A wrote:
But you should also set the following variable:
db2set DB2_PARALLEL_IO=*

Yes, that was one of my first post-installation steps, even before
creating a database. And NUM_IOCLEANERS was raised. But it seems that
there was still a gain by adding a number of "cheating"-containers (as I
see them).

What is your EXTENTSIZE set to on the tablespaces, and how does this
compare to how XIV stripes data across its storage?

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.