3.2.3 Operands related to HiRDB processing

4) pd_server_entry_queue = spnfifo | fifo | loop
If contention occurs in the HiRDB server process during concurrent execution of UAPs, processing requests might sometimes be temporarily queued. This operand specifies what HiRDB must do in this case. Note that process contention in this case means that multiple processes are simultaneously trying to lock internal resources, such as tables and RDAREAs, when transactions are running on the HiRDB server process. Only a single process is allowed to lock internal resources at any point in time. Spin referred to in the following explanation means a process for acquiring the right to execute a lock. When another process releases the right to execute a lock, a process that is spinning has a higher probability of acquiring the right to execute a lock.
spnfifo:
A processing request that occurs first is given higher priority. However, because the process is spun a certain number of times before being registered in a queue, the priority order is not perfect. This method is used in version 06-00 and earlier.
fifo:
A processing request that occurs first is given higher priority than when spnfifo is specified. Because the process is not spun a certain number of times before a process is registered in a queue, the priority order is maintained better than when spnfifo is specified. This method also reduces the CPU load.
loop:
All processing requests are given the same priority. When processes are registered in a queue, they are spun at high speed. Specifying loop might improve the response during concurrent execution of UAPs. However, this method places a greater load on the CPU than other methods.
Specification guidelines
Normally, you need not specify this operand.
Change the specification value if the processing performance during concurrent execution of UAPs does not improve. Doing so might improve the performance.
Operand default
When this operand is omitted, the specification of the same operand in the system common definition is assumed. When the same operand is also omitted in the system common definition, the default is spnfifo.
5) pd_thdlock_wakeup_lock = Y | N
Specifies a thread lock release notification method. Specify Y in this operand to ensure that release notifications are transmitted.
Y:
When issuing a thread lock release notification, a new separate lock is temporarily obtained.
N:
When issuing a thread lock release notification, no new separate lock is temporarily obtained.
This is the HiRDB processing mode for versions 06-02 and earlier.
Specification guidelines
Specify Y in this operand.
Notes
Note the following about specifying N or omitting this operand:
  • Transactions might occur that have longer execution times than for other transactions, reducing response during multiplexed UAP execution.
  • When no notification is sent that a thread lock has been released, there might be a delay equal to the amount of time specified in pd_thdlock_pipe_retry_interval in obtaining the lock that is waiting for release.
6) pd_thdlock_pipe_retry_interval = thread-lock-release-check-interval
~<unsigned integer>((0-2147483647))(microseconds)
Specifies in microseconds the interval at which to check for thread lock release.
Specification guidelines
If the value that is set is the same as or greater than the default value and all the following conditions are satisfied, CPU usage might decrease:
  • pd_thdlock_wakeup_lock = Y is specified.
  • Processing performance does not increase during multiplexed UAP execution.
  • The CPU usage rate is very high.
However, transactions tend to occur that have longer execution times than for other transactions.
Do not specify this operand when the conditions above are not applicable.
Note
If a value less than the default value is specified, release checking is repeated at short intervals, which might increase the CPU usage rate.
7) pd_thdlock_retry_time = thread-lock-sleep-time
~<unsigned integer>((1-1000000))(microseconds)
Specifies in microseconds the thread lock sleep time. If this operand is specified when all the conditions listed below are satisfied, the CPU usage rate might decrease.
  • The CPU usage rate is very high.
  • Reducing the CPU usage rate is necessary, even if it results in a reduction in performance.
  • 0 is specified for the pd_thdlock_sleep_func operand.
Do not specify this operand when the conditions above are not applicable. The following describes the HiRDB processing based on the combination of the pd_thdlock_sleep_func and the pd_thdlock_retry_time operand values:
pd_thdlock_sleep_func operand valuepd_thdlock_retry_time operand value
1 to 1000010001 to 1000000​
0Each process stands by for the thread lock sleep time specified by select() or Sleep().
1The OS determines process allocation using sched_yield() or SwitchToThread() (the pd_thdlock_retry_time operand value is ignored).#Each process stands by for the thread lock sleep time specified by select() or Sleep().
#: Because processes do not go on standby, CPU usage increases.
Specification guidelines
If you choose to specify this operand, start by specifying 10000. If the CPU usage rate is still too high, increase the value.
Notes
  • Reducing the value might not change the performance.
  • Specifying 1000 or a greater value might have an adverse effect on performance.
Relationship to other operands
  • If v6compatible or v7compatible has been specified in the pd_sysdef_default_option operand, the default value for this operand is 10000.
8) pd_thdspnlk_spn_count = thread-spin-lock-spin-count
~<unsigned integer>((0-2147483647))
Specifies a spin count for thread spin lock. Specifying this operand when all of the following conditions are satisfied might improve the system performance. Otherwise, there is no need to specify this operand.
  • An ample margin exists in the CPU usage rate.
  • You want to improve performance, even if doing so increases the CPU usage rate.
Specification guidelines
  • If this operand is to be specified, specify a value that is greater than 512.
  • Because the specification value depends on the OS type, the processor type, the machine performance, the disk performance, the UAP content, and the number of UAPs concurrently being executed, there is no clear guideline. Determine an appropriate value by varying the specification value and measuring the performance.
Operand default
When this operand is omitted, the specification of the same operand in the system common definition is assumed. When the same operand is also omitted in the system common definition, the default is 512.
Notes
  • If the value of this operand is too large, the CPU usage rate might increase, causing problems such as slower OS operation. In this case, decrease the operand value.
  • Increasing the value of this operand might not always improve performance.
9) pd_db_io_error_action = dbhold | unitdown
Specifies the processing to be performed by HiRDB when an input/output error occurs in an RDAREA (excluding the master directory RDAREA). If an input/output error occurs in the master directory RDAREA, HiRDB (a unit for a HiRDB/Parallel Server) always terminates abnormally regardless of the specification in this operand. For the actions to be taken when an RDAREA input/output error occurs, see the HiRDB Version 9 System Operation Guide.
An input/output error in this case refers to an error that occurs when a file manipulation attempt by HiRDB fails due to a cause that cannot be determined by HiRDB. When such an error occurs, -1544 is output as the error code returned in response to a HiRDB file system access request.
dbhold:
When an input/output error occurs in an RDAREA, the RDAREA is placed in an error shutdown state.
unitdown:
If an input/output error occurs in an RDAREA, HiRDB (a unit for a HiRDB/Parallel Server) terminates abnormally. However, if an input/output error occurs again following abnormal termination, the RDAREA is placed in an error shutdown state. To enable the specification of unitdown again, take one of the following actions:
  • Start HiRDB normally.
  • Execute the system reconfiguration command (pdchgconf command).
Specification guidelines
To determine the specification value for this operand, see HiRDB processing when an RDAREA I/O error occurs in the HiRDB Version 9 System Operation Guide.
Operand default
When this operand is omitted, the specification of the same operand in the system common definition is assumed. When the same operand is also omitted in the system common definition, the default is dbhold.
Notes
  • HiRDB terminates abnormally if an input/output error occurs while unitdown is specified. Consequently, in the following cases, the processing target RDAREA might go onto error shutdown status:
    [Figure]The UAP or utility is executing in the pre-update log acquisition mode or the no-log mode
    [Figure]The UAP or utility is being executed on a user LOB RDAREA that has been placed in the no-log mode by specification of NO in the RECOVERY operand of CREATE TABLE.
    If you use the facility for taking a unit down when a physical error is detected, avoid running these operations, if possible. If you need to run these operations, make a backup prior to running the UAP or utility in case recovery from an RDAREA error shutdown has to be performed. For details about making back-ups, see the HiRDB Version 9 System Operation Guide.
  • If an input/output error occurs during the startup or termination process, HiRDB does not terminate abnormally, even if unitdown is specified.
  • During recovery processing by the database recovery utility (pdrstr), HiRDB does not terminate abnormally even though unitdown is specified. In this case, re-execute pdrstr to perform recovery.
Relationship to other operands
This operand is related to the following operands:
  • pd_mode_conf operand
  • pd_db_access_error_action operand
  • pd_db_hold_action operand
If unitdown is specified in more than one of the pd_db_io_error_action, pd_db_access_error_action, and pd_db_hold_action operands, the operand value that takes effect is determined in the following order:
  1. pd_db_io_error_action operand
  2. pd_db_access_error_action operand
  3. pd_db_hold_action operand
If more than one RDAREA input/output, file access, or physical error has occurred, determine the error that caused unitdown based on the above priority. In addition, see the message that is issued.