The governor configuration file
The governor configuration file contains rules governing applications that run against a database.
The governor evaluates each rule and takes specified actions when a rule evaluates to true.
- Delimit general comments with braces ({ }).
- In most cases, specify values using uppercase, lowercase, or mixed
case characters. The exception is application name (specified following
the
applname
clause), which is case sensitive. - Terminate each general clause or rule statement with a semicolon (;).
If a rule needs to be updated, edit the configuration file without stopping the governor. Each governor daemon detects that the file has changed, and rereads it.
In a partitioned database environment, the governor configuration file must be created in a directory that is mounted across all database partitions so that the governor daemon on each database partition can read the same configuration file.
General clauses
- dbname
- The name or alias of the database to be monitored. This clause is required.
- account n
- The interval, in minutes, after which account records containing
CPU usage statistics for each connection are written. This option
is not available on Windows operating systems. On
some platforms, CPU statistics are not available from the snapshot
monitor. If this is the case, the account clause is ignored.
If a short session occurs entirely within the account interval, no log record is written. When log records are written, they contain CPU statistics that reflect CPU usage since the previous log record for the connection. If the governor is stopped and then restarted, CPU usage might be reflected in two log records; these can be identified through the application IDs in the log records.
- interval n
- The interval, in seconds, after which the daemon wakes up. If you do not specify this clause, the default value of 120 seconds is used.
Rule clauses
- desc: A comment about the rule, enclosed by single or double quotation marks
- time: The time at which the rule is evaluated
- authid: One or more authorization IDs under which the application executes statements
- applname: The name of the executable or object file that connects to the database. This name is case sensitive. If the application name contains spaces, the name must be enclosed by double quotation marks.
- setlimit: Limits that the governor checks; for example, CPU time, number of rows returned, or idle time. On some platforms, CPU statistics are not available from the snapshot monitor. If this is the case, the setlimit clause is ignored.
- action: The action that is to be taken when a limit is reached. If no action is specified, the governor reduces the priority of agents working for the application by 10 when a limit is reached. Actions that can be taken against an application include reducing its agent priority, forcing it to disconnect from the database, or setting scheduling options for its operations.
desc "Allow no UOW to run for more than an hour"
setlimit uowtime 3600 action force;
If more than one rule applies to an application, all are applied. Usually, the action that is associated with the first limit encountered is the action that is applied first. An exception occurs if you specify a value of -1 for a rule clause: A subsequently specified value for the same clause can only override the previously specified value; other clauses in the previous rule statement are still operative.
For
example, one rule statement uses the rowssel 100000
and uowtime
3600
clauses to specify that the priority of an application
is decreased if its elapsed time is greater than 1 hour or if it selects
more than 100 000 rows. A subsequent rule uses the uowtime
-1
clause to specify that the same application can have unlimited
elapsed time. In this case, if the application runs for more than
1 hour, its priority is not changed. That is, uowtime -1
overrides uowtime
3600
. However, if it selects more than 100 000 rows, its
priority is lowered because rowssel 100000
still
applies.
Order of rule application
setlimit
clause in a particular rule statement
is more relaxed than the same clause in a preceding rule statement,
the more restrictive rule applies. In the following example, ADMIN
continues to be limited to 5000 rows, because the first rule is more
restrictive.desc "Force anyone who selects 5000 or more rows."
setlimit rowssel 5000 action force;
desc "Allow user admin to select more rows."
authid admin setlimit rowssel 10000 action force;
desc "Force anyone who selects 5000 or more rows."
setlimit rowssel 5000 action force;
desc "Clear the rowssel limit for admin."
authid admin setlimit rowssel -1;
desc "Now set the higher rowssel limit for admin"
authid admin setlimit rowssel 10000 action force;
Example of a governor configuration file
{ The database name is SAMPLE; do accounting every 30 minutes;
wake up once a second. }
dbname sample; account 30; interval 1;
desc "CPU restrictions apply to everyone 24 hours a day."
setlimit cpu 600 rowssel 1000000 rowsread 5000000;
desc "Allow no UOW to run for more than an hour."
setlimit uowtime 3600 action force;
desc 'Slow down a subset of applications.'
applname jointA, jointB, jointC, quryA
setlimit cpu 3 locks 1000 rowssel 500 rowsread 5000;
desc "Have the governor prioritize these 6 long apps in 1 class."
applname longq1, longq2, longq3, longq4, longq5, longq6
setlimit cpu -1
action schedule class;
desc "Schedule all applications run by the planning department."
authid planid1, planid2, planid3, planid4, planid5
setlimit cpu -1
action schedule;
desc "Schedule all CPU hogs in one class, which will control consumption."
setlimit cpu 3600
action schedule class;
desc "Slow down the use of the Db2 CLP by the novice user."
authid novice
applname db2bp.exe
setlimit cpu 5 locks 100 rowssel 250;
desc "During the day, do not let anyone run for more than 10 seconds."
time 8:30 17:00 setlimit cpu 10 action force;
desc "Allow users doing performance tuning to run some of
their applications during the lunch hour."
time 12:00 13:00 authid ming, geoffrey, john, bill
applname tpcc1, tpcc2, tpcA, tpvG
setlimit cpu 600 rowssel 120000 action force;
desc "Increase the priority of an important application so it always
completes quickly."
applname V1app setlimit cpu 1 locks 1 rowssel 1 action priority -20;
desc "Some people, such as the database administrator (and others),
should not be limited. Because this is the last specification
in the file, it will override what came before."
authid gene, hershel, janet setlimit cpu -1 locks -1 rowssel -1 uowtime -1;