IBM Support

Use of the tunable parameters in the DataStage server engine UVCONFIG file

Question & Answer


Question

How do I use the tunable parameters in the UVCONFIG file?

Answer

The uvconfig file contains tunable parameters for the DataStage server engine, DSEngine, that you can configure to improve performance and avoid troubleshooting.
The most commonly used parameters and their default values are as follows.
Linux:
     MFILES         =   200
     T30FILE        =   512
     GLTABSZ        =   75
     RLTABSZ        =   300
     MAXRLOCK       =   299
     DMEMOFF        =   0xb0000000
     PMEMOFF        =   0xb29b6000
     CMEMOFF        =   0xb29b9000
     NMEMOFF        =   0xb2bba000
AIX:
    MFILES         =   200
     T30FILE        =   512
     GLTABSZ        =   75
     RLTABSZ        =   300
     MAXRLOCK       =   299
     DMEMOFF        =   0x90000000
     PMEMOFF        =   0xa0000000
     CMEMOFF        =   0xb0000000
     NMEMOFF        =   0xc0000000
Windows:
     MFILES         =   200
     T30FILE        =   512
     GLTABSZ        =   75
     RLTABSZ        =   300
     MAXRLOCK       =   299
     DMEMOFF        =   0x0
     PMEMOFF        =   0x0
     CMEMOFF        =   0x0
     NMEMOFF        =   0x0
The three parameters most likely requiring adjustment are T30FILE, RLTABSZ, and MAXRLOCK. The larger values below are safe to use on all platforms.
     T30FILE        =   1024
     RLTABSZ        =   475
     MAXRLOCK       =   474
Details on these parameters:

MFILES

This parameter defines the size of DSEngine's rotating file pool. It is a per process setting for tracking files opened by DSEngine. It does not include files opened directly at OS level by the parallel engine (PXEngine running osh).

The server engine logically opens and closes files at the DataStage application level, and physically closes them at the OS level when the need arises.

Increase this value when DataStage server jobs use many files. The default value of 200 is usually suitable though. If the value is set too low, then performance issues might occur. That is, DSEngine makes more calls to open and close at the physical OS level in order to map the logical pool to the physical pool.

NOTE: The operating system parameter of nofiles needs to be set higher than MFILES. In a correctly configured Information Server environment, this requirement is not a concern since the recommended value for ulimit -n is a minimum of 10240.

On most UNIX systems, the proc file system can be used to monitor the file handles opened by a process.

ps -ef|grep dsrpcd|grep -v grep

root      1613     1  0 Nov17 ?        00:00:00 /opt/IBM/InformationServer/Server/DSEngine/bin/dsrpcd

ls -l /proc/1613/fd
total 0
lr-x------ 1 root root 64 Dec  1 09:52 0 -> /dev/null
l-wx------ 1 root root 64 Dec  1 09:52 1 -> /dev/null
l-wx------ 1 root root 64 Dec  1 09:52 2 -> /dev/null
lrwx------ 1 root root 64 Dec  1 09:52 3 -> 'socket:[30405]'

So the dsrpcd process (1613) has four files open.

T30FILE

This parameter determines the maximum number of dynamic hashed files that can be opened system-wide by DSEngine. Many of the job control files in projects are dynamic hashed files such RT_LOG, RT_STATUS, RT_CONFIG, and VOC.

The default value of 512 can be inadequate. If this value is too low, expect to find an error similar to Unable to allocate Type 30 descriptor, table is full in phantom records. Look for these messages under the &PH& directory of projects.

After the DSEngine environment file is sourced, the following command shows the number of dynamic files in use when the engine tier is on UNIX platforms.

. /opt/IBM/InformationServer/Server/DSEngine/dsenv

$DSHOME/bin/smat -d| grep '^[ \t0-9]' | wc -l
On Windows environments, use the Command button in the Projects tab of the Administrator client to execute:
SH -c "C:/IBM/InformationServer/Server/DSEngine/bin/smat -d | grep '^[ \t0-9]' | wc -l"

Use this command to assist with tuning the T30FILE parameter. Another technote explores this topic in more detail (www.ibm.com/support/docview.wss?uid=swg21390117).

At run time, a DataStage job requires at least 3 slots in this table for its associated RT_CONFIG, RT_LOG, and RT_STATUS files. When multiple instances of a job are running simultaneously, they share slots for these files. That is, each instance just increments a usage counter in the table when the file is already open to another instance.

On AIX®, don't set the T30FILE value higher than the system setting ulimit -n.

GLTABSZ
This parameter defines the number of slots in each row of the group lock table. The default value of 75 never needs to be increased.

Use the following command to view locks.

In environments where the engine tier is on UNIX:

$DSHOME/bin/smat -r

On Windows, use the Command button in the Projects tab of the Administrator client to execute:

LIST.READU EVERY

Sample output with a Designer client and a Director client both logged in to the dstage1 project:

Active Group Locks:                                    Record Group Group Group
Device.... Inode..... Netnode Userno  Lmode G-Address.  Locks ...RD ...SH ...EX
     64768  144903210       0  47657  63 IN        800      1     0     0     0
Active Record Locks:
Device.... Inode..... Netnode Userno  Lmode        Pid Login Id Item-ID.............
     64768  144903210       0  48334  63 RL      17202 dsadm    dstage1&!DS.ADMIN!&
     64768  144903210       0  47657  63 RL      17879 dsadm    dstage1&!DS.ADMIN!&
Device
   A number that identifies the logical partition of the disk where the file system is located.
Inode
   A number that identifies the file that is being accessed.
Netnode
   A number that identifies the host from which the lock originated. 0 indicates a lock on the local system, which is usually the case for DataStage.
Userno
   A calculated number representing the process that set the lock (partially based on pid).
Pid
   The process id of the controlling process.
Item-ID
   The record ID of the locked record.
Lmode
   The row number that holds the lock, and a code that describes its use.
G-Address
   Logical disk address of group, or its offset in bytes from the start of the file, in hex. An address of 1 indicates lock on a regular file (opposed to a hashed or dynamic file).
Record Locks
   The number of locked records in the group.
Group RD
   Number of readers in the group.
Group SH
   Number of shared group locks.
Group EX
   Number of exclusive group locks.
When the report describes file locks, it contains the following Lmode codes:
FS, IX, CR
   Shared file locks.
FX, XU, XR
   Exclusive file locks.
When the report describes group locks, it contains the following Lmode codes:
EX
   Exclusive lock.
SH
   Shared lock.
RD
   Read lock.
WR
   Write lock.
IN
   System information lock.
When the report describes record locks, it contains the following Lmode codes:
RL
       Shared record lock.
RU
       Update record lock.
RLTABSZ

This parameter defines the number of slots in each row of record lock tables. From a DataStage job point of view, this value affects the number of DataStage jobs that can be executed concurrently, and the number of DataStage clients that can connect.

Sample smat output when one Director client is logged in to the dstage1 project, and 2 instances of a parallel job are running:

Active Group Locks:                                    Record Group Group Group
Device.... Inode..... Netnode Userno  Lmode G-Address.  Locks ...RD ...SH ...EX
     64768  403037620       0  38215  13 IN        800      1     0     0     0
     64768  403037620       0  38167  35 IN       1800      1     0     0     0
     64768  282990663       0  47657  39 IN      15800      1     0     0     0
     64768  144903210       0  38138  63 IN        800      1     0     0     0
     64768  283520810       0  38167  94 IN          1      2     0     0     0
Active Record Locks:
Device.... Inode..... Netnode Userno  Lmode        Pid Login Id Item-ID.............
     64768  403037620       0  38138  13 RU      27398 dsadm    DSD_OshMonitor.2
     64768  403037620       0  38215  35 RU      27321 dsadm    DSD_OshMonitor.1
     64768  282990663       0  38250  39 RL      27286 dsadm    RT_CONFIG43
     64768  282990663       0  38167  39 RL      27369 dsadm    RT_CONFIG43
     64768  144903210       0  47657  63 RL      17879 dsadm    dstage1&!DS.ADMIN!&
     64768  144903210       0  38250  63 RL      27286 dsadm    dstage1&!DS.ADMIN!&
     64768  144903210       0  38167  63 RL      27369 dsadm    dstage1&!DS.ADMIN!&
     64768  283520810       0  38250  94 RU      27286 dsadm    rowgen2peekmanyrows.1.fifo
     64768  283520810       0  38167  94 RU      27369 dsadm    rowgen2peekmanyrows.2.fifo

In the report, Item-ID of RT_CONFIG43 identifies a running instance of job number 43. A compiled job's RT_CONFIG file is locked at run time to prevent it from being recompiled or deleted. A job’s number within its project can also be seen in the Detail view of Director.

The numerical value in the Lmode column relates to a row number within a lock table. Each row can hold RLTABSZ locks. In the example, 3 slots out of 300 (default value for RLTABSZ) are used in row 63. When the number of entries for a row gets close to the RLTABSZ value, it is time to consider retuning the system. Two symptoms are jobs failing to start or generating -14 errors, and DataStage clients reporting an error message similar to DataStage Project locked by Administrator. Note the latter error message can be misleading; it means in this case that a lock cannot be acquired because the lock table is full, and not that another user already has the lock.

The row containing the project locks is the most likely one to approach the limit. Use the following smat command to monitor the project locks.

On UNIX:

$DSHOME/bin/smat -r|grep DS.ADMIN|wc -l

On Windows:

SH -c "C:/IBM/InformationServer/Server/DSEngine/bin/smat -r | grep DS.ADMIN | wc -l"

 

MAXRLOCK

Set this parameter to the value of RLTABSZ – 1.

Each DSD.RUN process takes a record lock on a key named project&!DS.ADMIN!& of the UV.ACCOUNT file in $DSHOME as seen in the previous smat output. Each DataStage client connection (for example, Designer, Director, Administrator, dsjob command) takes this record lock as well. This lock is the mechanism by which DataStage determines whether operations such as project deletion are safe. That is, operations cannot proceed while a project lock is held by any process.

MAXRLOCK needs to be set to accommodate the maximum number of jobs and sequences plus client connections that are used at any time. And RLTABSZ needs to be set to MAXRLOCK + 1.

Keep in mind that changing RLTABSZ greatly increases the amount of memory needed by the disk shared memory segment.

 

DMEMOFF, PMEMOFF, CMEMOFF, NMEMOFF

These parameters are the shared memory address offset values for each of the four DataStage shared memory segments (disk, printer, catalog, and NLS). The disk shared memory segment contains the dynamic file and record lock tables. Depending upon the platform, changes to T30FILE and RLTABSZ might require adjustments to PMEMOFF, CMEMOFF, and NMEMOFF to allow for larger disk shared memory space.

These values are set to 0x0 on Windows, which means the OS takes care of managing the offsets, and never need to be revised. All of the current UNIX platforms require nonzero offsets. The AIX offset values are adequate and aren't usually revised. Otherwise, on Linux64 and Linux390 platforms, when the size required for disk shared memory exceeds PMEMOFF - DMEMOFF, changes are required. This type of message is reported by uvregen when there is not enough space:

uv -admin -regen
Disk shared memory size of 52317716 exceeds maximum allowed size of 43737088
uvregen: error during regen, process aborted
A script was written to help with the calculation of memory offsets. See https://www.ibm.com/support/pages/node/152057.

Don't use the shmtest utility. It frequently provides invalid offsets (values exceeding 32 bits) that result in random faults.

[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSVSEF","label":"IBM InfoSphere DataStage"},"ARM Category":[{"code":"a8m50000000L0twAAC","label":"DataStage-\u003EEngine Config and Management"}],"Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"All Versions","Type":"MASTER"}]

Document Information

Modified date:
14 December 2021

UID

swg21412963