 | Level: Introductory Dwaine Snow (mailto:dsnow@ca.ibm.com), DB2 UDB and Informix IDS Product Manager, IBM Toronto Lab Raul Chong (mailto:rfchong@ca.ibm.com), DB2 UDB Consultant, IBM Toronto Lab
24 Apr 2003 Ever wonder what all those DB2 processes actually do? This article
describes the processes that DB2 UDB uses on Linux, UNIX and Windows,
discusses why you might need to understand these processes, and details their
functions.
© 2003 International Business Machines Corporation. All rights
reserved.
This article was written for IBM® DB2® Universal
DatabaseTM v8.1 for Linux, UNIX®, and
Windows®
Introduction
UNIX and Linux users commonly examine the
processes that are running on their servers to perform problem analysis as
well as to examine the resources being consumed within the server. This
information is useful not only to administrators who are performing
problem and resource analysis, but also to those developing high
availability and failover scripts that monitor the DB2 processes to
determine when an action such as a database restart or server failover is
needed. Using AIX, you would use the command
ps -ef in order to examine processes. On
Solaris and HP-UX, ps -ef will only show the
db2sysc process (the main DB2 engine process) for all server-side
processes (eg: agents, loggers, page cleaners, and prefetchers). If you're
using Solaris or HP-UX, you can see these side processes with the command
/usr/ucb/ps -axw. Both of these versions of the
ps command work on Linux. When performing
this command on a computer running the DB2 Universal Database client or
server software, you may see several DB2 processes listed. The purpose of
this article is to document these processes and explain what they do and
when they may run. Although the most important processes are documented in
Chapter 2 of the manual
DB2 UDB V8 Administration Guide - Performance,
the list is not complete. By reading this article you will be able to
understand each of the DB2 processes, and you can begin to see what
actions DB2 is performing when you see those processes. Note that
the implementation of how work is performed in DB2 is somewhat different
on Windows than Linux and UNIX-based environments. In Windows, there is
only one process (db2sysc) under which each of the engine dispatchable
units (EDUs) is implemented as a thread. Though the article discusses
processes, they should be thought of as threads in the Windows
environment. From the Windows Task Manager you will be able to see the
db2sysc process (db2syscs.exe) for each instance. Other Windows
services/processes will also be displayed, and we will explain what they
are in this article. Warning! Do not meddle directly with the
DB2 processes in a healthy DB2 environment. Killing a DB2 process with the
kill -9 command in Linux or UNIX may cause
undesirable behaviors in DB2. Killing the db2sysc process, for example,
will bring the entire DB2 instance down. The idea here is to gain
understanding of the processes but not to manipulate them
directly.
Why look
at DB2 processes? Our personal experiences have shown the
value of this knowledge, and the customers we have visited have asked us
for this type of information. Not yet convinced? Take a look at the
following real-life scenarios, and see for yourself how problems were
resolved by reviewing the DB2 processes running on a system: Scenario 1: Infrequent cleaning of buffer
pool pages A customer running an eCommerce site and using DB2
as the database server reported that at various times throughout the day,
the database response time for application requests would become very
long. Database snapshots did not show anything abnormal occurring at these
times. By examining the CPU usage of the processes on the server at one of
these times we were able to determine that the I/O cleaners (db2pclnr)
were consuming over 90% of the CPU time. By subsequently looking at the
I/O cleaner triggers and tuning them appropriately, we eliminated this
condition and the eCommerce site was able to handle over 50% higher
throughput on a daily basis. Scenario 2: The truth comes out While visiting an IBM
business partner to perform some DB2 performance tuning, we encountered a
general slowdown in query response time. A list applications command
didn't show anything out of the ordinary running at the time. Before
taking DB2 snapshots, we took a look at the DB2 processes running on the
DB2 server and found that the db2rebal process was running. This process
is used to perform a rebalancing of the data when a container is added to
a DMS table space. The customer "confessed" that earlier that day he had
added one container to a tablespace containing a 40 GB table. Once the
rebalancing finished, the queries returned to their original response
times. Shedding some light on
the notification and diagnostic logs The administration
notification log and the diagnostic log
(db2diag.log) are important tools that
administrators use to understand database activities and functions. These
normally contain information about DB2 processes as shown in the example
below taken from a db2diag.log
entry:
2000-03-06-11.53.18.001160 Instance:myInst Node:000
PID:78121(db2agent (TEST)) TID:352
Appid:*LOCAL.payroll.000306140834
lock_manager sqlplrq Probe:111 Database:TEST
DIA9999E An internal return code occurred. Report the following:
"0xFFFFE10E".
|
In
this example, the message came from process ID number 78121. The name of
this process is db2agent and it is connected to the database named TEST.
Understanding what a process does can help you make sense of the entries
in the administration notification log and
db2diag.log.
The DB2 process model Although the DB2
process model is explained in the
DB2 Administration Guide - Performance
manual, we will give you a brief overview here. We'll first describe the
concept of an agent. Agents An agent can be thought of as a 'worker' that performs
all database operations on behalf of an application. There are two main
types of DB2 agents:
- Coordinator Agent (db2agent)
A coordinator agent (or a
coordinating agent) coordinates the work on behalf of an application
and communicates to other agents using interprocess communication
(IPC) or remote communication protocols. All connection requests from
client applications, whether they are local or remote, are allocated a
corresponding coordinator agent.
- Subagent (db2agntp)
When the intra_parallel database
manager configuration parameter is enabled, the coordinator agent
distributes the database requests to subagents (db2agntp). These
agents perform the requests for the application. Once the coordinator
agent is created, it handles all database requests on behalf of its
application by coordinating subagents (db2agent) that perform requests
on the database.
When an agent or subagent completes its work it becomes idle. When a
subagent becomes idle, its name changes from db2agntp to
db2agnta. For example: db2agntp processes are active
subagents which are currently performing work for the coordinator agent.
These processes will only exist when intra-partition parallelism is
enabled. db2agnta processes are idle subagents that were used
in the past by a coordinator agent. Idle agents reside in an agent
pool. These agents are available for requests from coordinator agents
operating on behalf of client programs, or from subagents operating on
behalf of existing coordinator agents. The number of available agents is
dependent on the database manager configuration parameters
maxagents and num_poolagents. We'll describe other
types of agents like the parallel recovery agent (db2agnsc) later in the
article. The following two figures show the DB2 Process model.
Figure 1. The DB2 process
model without connection concentration (for a non-partitioned
database)
Each of the circles in Figure 1 represent
engine dispatchable units (EDUs) which are known as processes on
Linux/UNIX platforms, and threads on Windows . Applications A (App
A) and B (App B) are local applications running in the same machine where
the DB2 server resides. When these applications issue a CONNECT to a
database, the db2ipccm listener process establishes the communication
between the database manager and the application. db2ipccm will also work
with a coordinator agent EDU (db2agent) which contacts the client
application directly to establish shared memory communications between the
client application and the coordinator. Once this communication is
established, the application at the local client is connected to the
database. Application C (App C) is a remote application residing in
a machine different than the one used for the DB2 Server. A remote client
establishes TCP/IP communications through the db2tcpcm listener process.
The db2tcpcm then works with a db2agent, which becomes the coordinator
agent for the application and passes the connection to this agent. After
this, the coordinator agent contacts the remote client application and is
connected to the database.
Figure 2. The DB2 process
model without connection concentration for a partitioned database
Figure 2 is similar to Figure 1, but is
applicable to partitioned databases. Node0000 and Node0001 represent two
different machines where part of a database resides. The processes and
interaction between them is the same as described in Figure 1; however,
there are some other processes applicable only to this environment. The
db2fcmd process for example is the Fast Communication Manager process used
to manage the communication between the different partitions. The table in
the next section will describe in more detail other processes applicable
to partitioned databases.
The processes The following tables lists all the
DB2 processes per instance, per database, and by function. Note that some
of the processes in the tables below are not listed in alphabetical order,
but grouped based on functionality. If you would like to look for a
process in alphabetical order, refer to Table 7
below.
Table 1. Per instance processes - no connections, no active databases
|
Process name
|
Description
|
Applicability
| | db2cart | Determines when a log file can be archived and invokes the user
exit to do the actual archiving. There is one db2cart process per
instance, but it is only running if there is at least one database
in the instance which has USEREXIT enabled. | All | | db2chkau | Used by the DB2 audit facility to log entries to the Audit log. It
is only active if auditing has been enabled. | All | | db2ckpw | Used to check the user id and password on the DB2 server. Since
DB2 relies on operating system level authentication, this process
is used to verify the user id and password when a user or
application connects to a database on the server. Authentication
will occur when AUTHENTICATION is set to SERVER, or when a
connection is made from a non-secure operating system. | UNIX/Linux | | db2disp | The DB2 agent dispatcher process. This process dispatches
application connections between the logical agent assigned to the
application and the available coordinating agents when connection
concentration is enabled.
This process will only exist when connection concentration is
enabled.
| All | | db2fcmd | FCM (Fast Communication Manager) daemon for handling
inter-partition communications. One per server, per partition. | Multi-partitioned database environment only | | db2fmcd | The Fault Monitor Coordinator daemon process. One per physical
machine. | UNIX only | | db2fmd | The fault monitor daemon process that is started for every
instance of DB2 that is monitored by the fault monitor. It is
monitored by the coordinator daemon (db2fmcd), so if you kill the
db2fmd process, db2fmcd will bring it back up. | UNIX only | | db2fmtlg | Pre-allocates log files in the log path when the database is
configured with LOGRETAIN ON and USEREXIT OFF. This is done so the
engine process does not need to wait while switching from one log
file to the next during normal processing. | All | | db2gds | The DB2 Global Daemon Spawner process that starts all DB2 EDUs
(processes) on UNIX. There is one db2gds per instance or database
partition. | UNIX only | | db2glock | Global deadlock detector. This coordinates the information
gathered from the db2dlock process on each database partition to
check for deadlock conditions that exist between database
partitions. The db2glock process runs on the catalog partition of
a multi-partitioned database. | Multi-partitioned database environment only | | db2govd | The DB2 Governor, a reactive governoring process. If DB2 governor
is enabled, this process takes snapshots at the interval specified
in the governor configuration file and checks the snapshot against
all configured rules. If a rule is broken, the specified action is
taken. | All | | db2panic | The panic agent. It handles urgent requests after agent limits
have been reached on any of the database's partitions. | Multi-partitioned database environment only | | db2pdbc | The PDB (Parallel Database) Controller. It handles parallel
requests from remote nodes. | Multi-partitioned database environment only | | db2rebal | The rebalancer process. It is called when containers are added to
an existing table space and a rebalance of the existing data is
required. This process performs the rebalance asynchronously. | All | | db2resyn | The resync manager process used to support applications that are
using two-phase commit | All | | db2srvlst | Process used to manage lists of addresses for systems such as
OS/390. | All | | db2sysc | The main DB2 system controller or engine. Without this process,
the database server cannot function. | All | | db2syslog | The system logger process. This process writes to the operating
system error log facility. On UNIX this must be enabled by editing
the file syslog.conf. On Windows DB2
will automatically write the Windows event log. | All | | db2wdog | The DB2 watchdog. This process is required since processes in UNIX
can only track their parent process ID. Each time a new process is
started, the db2gds notifies the DB2 watchdog. In the event that
any DB2 process receive a ctrl-c or other abnormal signal, the
process send the signal to the watchdog, and it propagates the
signal to all of the other processes in the instance. | UNIX only | | dlasync | A monitor for the DB2 Data Links (File Manager) servers. This
process only exists if DB2 has been configured for data links. | Data Links only |
Table 2. Per instance and per connection
|
Process name
|
Description
|
Applicability
| | db2agent | DB2 coordinator/coordinating agent which performs all database
requests on behalf of an application. There will be one db2agent
process per connected application, unless the connection
concentrator is enabled.
If intra-partition parallelism is enabled, the db2agent
process will call the DB2 subagents to perform the work, and they
will return the result set to the coordinator agent to return to
the applicaiton.
In a partitioned database, the
coordinator agent will exist on the partition which the
application connected to. | All | | db2agentg | The gateway agent for DRDA Application Requesters. | All | | db2agnsc | The parallel recovery agent. This agent is used during roll
forward and restart recovery to perform the actions from the logs
in parallel. This can improve recovery time in comparison to a
serial recovery.
Note: This process enables parallelism within logged
transactions, as well as between parallel transactions. | All | | db2agnta | An idle subagent that was used in the past by a coordinating agent
and is still associated to that coordinating agent process.
It will appear when the INTRA_PARALLEL dbm cfg parameter is
set to YES. | All | | db2agntp | A subagent that is currently performing work on behalf of the
coordinating agent it is associated with. These processes provide
intra-partition parallelism, i.e. the ability to execute a query
in parallel within a database instance / partition
It will apprear when the INTRA_PARALLEL dbm cfg parameter is
set to YES. | All | | db2ipccm | IPC communication manager. One per database partition. This is the
interprocess communication listener for local client connections.
A local client connection is a connection made from an
application (such as the CLP) within the same computer where the
DB2 server is running. | All | | db2tcpcm | TCP communication manager. It works as a communication listener
for TCP/IP connection requests. When a connection request is
received, the listener associates the connection with an agent,
and then resumes listening for more connection requests. | All | | db2tcpdm | Communication listener for TCP/IP discovery requests. Discovery
requests are made by the configuration assistant (CA) when it is
searching the network for remote DB2 servers and their databases. | All | | db2snacm | SNA / APPC Communication manager. It works as a communication
listener for SNA/APPC connection requests. When a connection
request is received, the listener associates the connection with
an agent, and then resumes listening for more connection requests. | All |
Table 3. Per instance and per active database
|
Process name
|
Description
|
Applicability
| | db2dlock | Local deadlock detector, one per database partition. It scans the
lock list and looks for deadlock conditions. When a deadlock
condition is encountered, one of the applications / transactions
involved is chosen as the victim and rolled back. | All | | db2estor | Used to copy pages between the database buffer pools and extended
storage. These processes will appear only when extended storage is
enabled for a database. | All | | db2event | The event monitor process. There will be one db2event process per
active event monitor, per active database. These processes capture
the defined "events" and write to the output file specified for
the event monitor. | All | | db2loggr | The database log reader. This process reads the database log files during:
- transaction processing (i.e. rollback)
- restart recovery
- rollforward operations
| All | | db2loggw | The database log writer. This process flushes log records from the
log buffer to the log files on disk. | All | | db2logts | Process used for collecting historical information about which
logs are active when a table space is modified. This information
is recorded in the DB2TSCHG.HIS file in the database directory. It
is used to speed up table space rollforward recovery by enabling
the skipping of log files that are not needed for the rollforward
operation. | All | | db2pclnr | The buffer pool page cleaners. These processes asynchronously
write dirty pages from the buffer pool(s) back to disk. A dirty
page is one that was changed after it was read into the buffer
pool and the image on disk is no longer the same as the image in
the buffer pool.
When the page cleaners are "triggered" they will all run at the
same time. Once they complete their assigned work they sleep
until triggered again.
Page cleaners work to ensure that there is room in the buffer
pools for new pages being retrieved for applications
The number of page cleaners per database is configured by the
NUM_IOCLEANERS database configuration parameter. | All | | db2pfchr | The buffer pool prefetchers. These processes read data and index
information from disk and into the database buffer pool(s) before
it is read on behalf of applications. Prefetchers perform this
"read-ahead" asynchronously.
The DB2 agents, acting on behalf of the applications send
prefetch requests which are serviced by the prefetchers. The
prefetchers perform big-block I/O to read the data more
efficiently.The number of prefetchers per database is
configured by the NUM_IOSERVERS database configuration
parameter. | All |
Table 4. Other processes classified by function
|
Process name
|
Description
|
Applicability
| | db2bm | The backup/restore buffer manipulator. This process is used to
read from a table space during a backup operation, and to write to
a table space during a restore operation. There will be one db2bm
process per backup/restore buffer configured on the BACKUP or
RESTORE command. | All | | db2fmp | Fenced processes to run user code on the server outside the
firewall for both stored procedures and user defined functions.
The db2fmp is always a separate process, but may be
multithreaded depending on the types of routines it executes.
Note: This process replaces both the db2udf
and db2dari processes that were used in previous versions of DB2. | All | | db2lbs | LOAD LOB scanner. They are only used when the load tool is loading
into a table with LOB columns. These processes scan the LOB object
of the table and read the information back in. | All | | db2lbmX | LOAD buffer manipulator. The last character 'X' indicates one or
more. Writes loaded data to the database and can be involved in
async I/O. There is always one and often more depending on a
heuristic. The heuristic is based on the number of CPUs on the
system and the number of containers being written to.
This "intelligent default" may be overridden by the
DISK_PARALLELISM modifier to the LOAD command.
We should make it clear that this Async I/O is not the async
file I/O supported by some operating systems; it just means that
we have separate processes writing the I/O. This means that other
processes that are formatting the data are not tied up on I/O
waits. | All | | db2lfrmX | LOAD formatter process. The last character 'X' indicates one or
more. This process formats the input data into internal form. It
is always present in a LOAD. An intelligent default is used which
may be overridden by the CPU_PARALLELISM modifier to choose the
optimum number of CPUs. | All | | db2lfs | These process are used when the table being loaded has LONG
VARCHAR columns. These are used to read and format the LONG
VARCHAR columns in the table. | All | | db2lmr | This is the LOAD Media Reader process. It reads the load input
file(s) and will disappear once the input file(s) have been read
completely. This will happen even before the entire load operation
has completed. | All | | db2lmwX | These are the LOAD media writer processes. The last character 'X'
indicates one or more.
These processes make the "load copy" if this option is
specified for the LOAD comamnd. The load copy is essentially a
backup of the data that was loaded into the table.
These media writers are the same as the media writers used
by BACKUP and RESTORE. There is one media writer invoked per copy
session as described on the command line (you can create a load
copy to multiple files). If there is no load copy there is no
media writer. They get input from the other processes in load
depending on what the data type is, but typically every bit of
data that gets written by a buffer manipulator will be passed on
to the media writer. As with all the other processes they are
controlled by the load agent. | All | | db2lrid | This process performs the index sort and builds the index Record
IDs (RIDs) during the LOAD.
This process is not present in a non-parallel database
instance, i.e. INTRA_PARALLEL is disabled. The tasks performed by
this process are done by the formatter EDU in a non-parallel instance.
This process performs three functions:
- SMP synchronization
- Allocate RIDs, the last is to build the indexes
- Control the synchronization of the LOAD formatter
processes
| All | | db2ltsc | The LOAD table scanner. These processes scan the data object for
the table being loaded and read the information for the LOAD tool.
These are used during a LOAD append operation. | All | | db2linit | The LOAD initialization subagent. This subagent acquires the
resources required on the database partitions and serializes the
reply back to the load catalog subagent. | Multi-partitioned database environment only | | db2lcata | The LOAD catalog subagent. This subagent is executed only on the
catalog partition and is responsible for:
- Spawning the initialization subagents
- Processing their replies
- Storing the lock informationat the catalog partition.
The catalog subagent also queries the system catalog tables
to determine which partitions to use for data splitting and partitioning.
There is only one catalog subagent for a normal load job.
The exception are loads failing to acquire loading resources on
some partitions. If setup errors are isolated on database
partitions, the coordinator will remove the failed partitions from
the load's internal partition list and spawn a new catalog
subagent. This process is repeated until resources are
successfully acquired on all partitions, or failures are
encountered on all partitions. | Multi-partitioned database environment only | | db2lpprt | Load pre-partition subagent. This subagent pre-partitions the
input data from one input stream into multiple output streams, one
for each partitioning subagent.
There will be one pre-partitioning subagent for each input
stream. | Multi-partitioned database environment only | | db2lpart | The load partition subagent. This subagent partitions the input
data into multiple output streams, one for each database partition
where the data will be written.
The number of partitioning subagents can be configured by
the user. The default number depends on the total number of output
database partitions. | Multi-partitioned database environment only | | db2lmibm | The load mini buffer manipulator subagent processes.
This subagent writes the partitioned output file if the
partition_only mode is used for the load.
There is one mini buffer manipulator subagent per output
database partition. | Multi-partitioned database environment only | | db2lload | The load subagent processes. This subagent is responsible for
carrying out the loading on each database partition. It spawns the
formatters, ridder, buffer manipulators and media writer EDUs and
oversees their work.
There is one load subagent for each output database
partition. | Multi-partitioned database environment only | | db2lrdfl | The load read-file subagent processes. This subagent reads the
message file on a given database partition and sends the data back
to the client. There will be a read-file subagent for each output
partition, partitioning partition and pre-partitioning partition | Multi-partitioned database environment only | | db2llqcl | The load query cleanup subagent processes. This subagent removes
all of the load temporary files from a given partition.
There is one cleanup subagent for each output partition,
partitioning partition and pre-partitioning partition. | Multi-partitioned database environment only | | db2lmitk | The load mini-task subagent processes. This subagent frees all LOB
locators used in a load from cursor call or a CLI load.
There is one mini-task subagent per cursor/CLI load running on
the coordinator partition. | Multi-partitioned database environment only | | db2lurex | The load user-exit subagent processes. This subagent runs the
user's file transfer command.
There will be one user-exit subagent for each load job using
the file transfer command option. | Multi-partitioned database environment only | | db2lmctk | This process is used to hold, release or downgrade locks held on
the catalog partition as a result of the load | Multi-partitioned database environment only | | d2med | These processes handle the reading from and/or writing to the
database table spaces for LOAD, backup and restore.
They write the data in formatted pages to the table space
containers. | All | | db2reorg | This process is used to perform the new online - inplace reorg in
DB2 V8.1. This works similar to a disk defrag tool, placing the
data rows in the specified order. | All |
Table 5. Some commonly used executables
|
Process name
|
Description
|
Applicability
| | db2 | The DB2 Command Line Processor (CLP) foreground process. It parses
DB2 commands, SQL statements, etc.
This process is the the interactive component of the DB2 CLP.
This front-end/back-end configuration does have some
advantages for command line performance: The front-end handles the
connection to the user, and the back-end interfaces with the database.
You can use CTRL-C/CRTL-Break to stop processing (i.e. when
too many records are returned) without killing the connection to
the database. | All | | db2bp | This is the persistent background process for the DB2 CLP, and it
is the process which actually connects to the database.
Since the DB2 CLP allows OS as well as DB2
commands/statements, this background process is required. | All | | db2cmd | Similar to the db2 executable, but for Windows. The db2cmd invokes
a Windows command window. On Windows, parent threads cannot
terminate their child processes when they are terminated. The DB2
Command Line Processor has a front-end and back-end
process/thread, so we need a cookie (launched from DB2CMD.EXE) to
tie these threads together on Windows so that the back end process
is terminated if the user exits or kills the front end process. | Windows only | | db2start | User command to start up the DB2 engine. | All | | db2star2 | The real db2start program. | All | | db2stop | User command to stop the DB2 engine. | All | | db2stop2 | The real db2stop program. | All |
Table 6. Other Windows services/processes
|
Process name
|
Description
| | db2dasrrm.exe | The DB2 Admin Server process. This process supports both local and
remote administration requests using the DB2 Control Center. | | db2dasstm.exe | The DB2 Admin Server tools DB manager process. This process stores
info in and retrieves info from the tools database, if it has been
set up on the DB2 server. | | db2fmp.exe | The process that handles / executes all fenced stored procedures
and UDFs. | | db2rcmd.exe | DB2 Remote Command Service which automatically handles
inter-partition administrative communications. | | db2jds.exe | The DB2 JDBC applet server service. This service intercepts and
handles all JDBC applications connecting to the DB2 server. | | db2licd.exe | The DB2 license daemon. This process verifies that a correct DB2
license is installed on the server when DB2 is started. | | db2sec.exe | This process is used to check the userid and password on the DB2
server on Windows. Since DB2 relies on operating system level
authentication, this process is used to verify the user id and
password when a user or application connects to a database on the
server. This authentication will occur when authentication is set
to SERVER, or when a connection is made from a non-secure
operating system. | | db2syscs.exe | The main DB2 system controller or engine on Windows. The EDUs are
threads within this process.
Note the 's' at the end for a Windows service. | | IWH2SERV.EXE | The Warehouse Manager Center. This is installed as part of DB2
ESE, but is not part of the DB2 engine. |
The following table may be a helpful index to find a given process. It
lists all processes in alphabetic order with links to the tables above.
Table 7. All processes in alphabetical order
 |
Examples The following section shows you examples of the
output you may obtain when executing the ps -ef
command in AIX. After a
db2start:
root 49504 1 0 13:13:07 - 0:00 db2wdog
db2inst1 22142 49180 0 13:13:10 - 0:00 db2gds
db2inst1 43072 49180 0 13:13:17 - 0:00 db2syslog
db2inst1 45294 74134 0 12:12:43 pts/2 0:00 /usr/bin/ksh
db2inst1 49180 49504 0 13:13:10 - 0:00 db2sysc
db2inst1 55920 49180 0 13:13:19 - 0:00 db2resync
db2inst1 59012 22142 0 13:13:19 - 0:00 db2srvlst
db2inst1 60680 49180 0 13:13:17 - 0:00 db2ipccm
|
The
database manager configuration file has the following settings that affect
the processes that you will initially
see:
Max number of existing agents (MAXAGENTS) = 200
Agent pool size (NUM_POOLAGENTS) = 100(calculated)
Initial number of agents in pool (NUM_INITAGENTS) = 0
|
Because
NUM_INITAGENTS is zero, there will be no 'db2agent (idle)' processes
displayed at db2start time. If for example NUM_INITAGENTS had been set to
5 before the db2start, then these extra processes would have shown after
issuing a
db2start:
db2inst1 35542 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 43096 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 49628 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 58170 59814 0 16:25:57 - 0:00 db2agent (idle)
db2inst1 64012 59814 0 16:25:57 - 0:00 db2agent (idle)
|
After
connecting to database SAMPLE (NUM_INITAGENTS still left at
zero)
root 49504 1 0 13:13:07 - 0:00 db2wdog
db2inst1 25844 35124 0 16:04:50 - 0:00 db2pfchr
db2inst1 35124 65638 0 16:04:17 - 0:00 db2gds
db2inst1 35540 35124 0 16:04:50 - 0:00 db2loggr (SAMPLE)
db2inst1 41940 65638 0 16:04:19 - 0:00 db2resync
db2inst1 45058 35124 0 16:04:50 - 0:00 db2pfchr
db2inst1 49300 35124 0 16:04:19 - 0:00 db2srvlst
db2inst1 49626 35124 0 16:04:50 - 0:00 db2dlock (SAMPLE)
db2inst1 55852 65638 0 16:04:17 - 0:00 db2ipccm
db2inst1 58168 35124 0 16:04:50 - 0:00 db2loggw (SAMPLE)
db2inst1 59048 35124 0 16:04:50 - 0:00 db2pfchr
db2inst1 64010 55852 0 16:04:50 - 0:00 db2agent (SAMPLE)
db2inst1 65638 22238 0 16:04:17 - 0:00 db2sysc
db2inst1 70018 35124 0 16:04:50 - 0:00 db2pclnr
db2inst1 72120 35124 0 16:04:51 - 0:00 db2event (DB2DETAILDEADLOCK)
db2inst1 74198 65638 0 16:04:17 - 0:00 db2syslog
db2inst1 74578 1 0 16:04:47 - 0:00 /home/db2inst1/sqllib/bin/db2bp
50112C14631 5
|
After
connecting to the SAMPLE database, the 'db2agent (SAMPLE)' process
appears. This process indicates there is in fact a connection to the
SAMPLE database. If we issued the
command:
The
db2agent (SAMPLE) would now become db2agent (idle). This is because
NUM_POOLAGENTS is set to a number greater than zero, which means the agent
will remain allocated in the pool, though it is idle. If NUM_POOLAGENTS
had been set to zero, then after the 'connect reset', there would have
been no db2agent process running. The database configuration file
for the SAMPLE database has these
settings:
Number of asynchronous page cleaners (NUM_IOCLEANERS) = 1
Number of I/O servers (NUM_IOSERVERS) = 3
|
Note
that there are three db2pfchr processes which correspond to the value of
NUM_IOSERVERS, and one db2pclnr process which corresponds to the value of
NUM_IOCLEANERS.
Conclusion There are many other processes that will appear
and disappear depending on different DB2 actions and configuration
settings. We've shown you some sample scenarios that illustrate how you
can investigate which processes are running, what these processes
indicate, and how they are affected by the database settings. Now you can
use this knowledge to improve your ability to administer DB2
databases. Acknowledgements Special thanks to Bob Harbus of the IBM
Toronto Lab Services Consulting team for his input to this document.
About the authors  | |  |
Dwaine Snow
is the product manager for DB2 UDB partitioned databases as well as Query Patroller and IBM Informix IDS. Dwaine has worked for the past 12 years at IBM, and has worked with DB2 UDB for the past 8 years. You can reach Dwaine at
dsnow@ca.ibm.com
.
|
 | |  |
Raul F. Chong
is a database consultant from the IBM Toronto Laboratory and works primarily with IBM Business Partners. Raul has worked for five years in IBM, three of them in DB2 Technical Support, and two of them as a consultant specializing in database application development and migrations from other RDBMS to DB2. You can reach Raul at
rfchong@ca.ibm.com
.
|
Rate this page
|  |