2.2.19 Operands related to shared memory

102) pd_shmpool_attribute = free | fixed
Specifies whether to fix the shared memory used by the HiRDB unit controller in memory. Note that whether this feature is supported depends on the version of Windows you are using. For details about the prerequisites for Windows, see page locking shared memory under System design in the HiRDB Version 9 Installation and Design Guide. If this feature is not supported, this operand is ignored even if fixed is specified.
free:
Do not fix the shared memory in memory. Depending on the size of the real memory, another page of shared memory might be created, affecting performance adversely.
fixed:
Fix the shared memory in memory.
Advantage
Fixing the shared memory to be used by the HiRDB in the memory (fixed specified) prevents shared memory paging, thus improving the access performance to the shared memory.
Specification guidelines
Determine whether to fix shared memory based on the computed shared memory size and the real memory size of the server machine. Because there is a limit to the amount of memory that can be fixed for the HiRDB, fixing too much shared memory might cause frequent paging of other types of memory. How much real memory there is and the amount of memory to be occupied by the shared memory pool need to be carefully evaluated.
For the formulas used to calculate the shared memory sizes to be used by the unit controller and individual servers, see the HiRDB Version 9 Installation and Design Guide.
Notes
The following notes apply when fixed is specified in a Windows operating system that supports page fixing:
  • The shared memory must be allocated to the paging file with the pdntenv command. For details about the pdntenv command, see the manual HiRDB Version 9 Command Reference.
  • When you estimate the required memory size, note that the shared memory is acquired with its size rounded up to the page size of a Windows large page. To check the page size of a Windows large page, use the pdntenv -os command.
103) pd_shmpool_control = unit | server
This operand is applicable only to HiRDB/Parallel Server.
Specifies the control method for shared memory used by HiRDB.
unit:
Applies the unit-by-unit control method for starting and stopping the HiRDB/Parallel Server.
server:
Applies the user-server-by-user-server control method for starting and stopping the HiRDB/Parallel Server (when using the pdstart or pdstop command with the -s option specified).
User server refers to a front-end server, dictionary server, or back-end server.
Specification guidelines
  • Normally, unit is specified in this operand or this operand is omitted.
  • When performing a user server start or stop operation on a system that does not use standby-less system switchover (effects distributed), refer to Securing and releasing shared memory below, and then consider whether to specify server in this operand.
Securing and releasing shared memory
Shared memory used by HiRDB is secured as a block from the OS when the unit starts and is then managed by the HiRDB in a shared memory pool. When a user server starts, the portion of shared memory used by that user server is secured from the shared memory pool in multiple parts.
When the user server shuts down, the shared memory secured when that server started is released.
Accordingly, when the start and stop operations of a HiRDB/Parallel Server are performed for individual user servers, fragmentation can arise in the area within the shared memory pool. As fragmentation increases, units might terminate abnormally because they cannot secure shared memory when the user server starts. If server is specified in this operand, the shared memory required for a user server to start can be secured despite fragmentation.
If a unit is using the standby-less system switchover (effects distributed) facility, the HiRDB is controlled so that fragmentation in the shared memory pool area does not occur, even though user-server start and stop operations are performed. Consequently, there is no need to specify server in this operand when performing start and stop operations only for back-end servers within units that use the standby-less system switchover (effects distributed) facility.
104) pd_dbbuff_attribute = free | fixed
Specifies whether to fix the shared memory used by the global buffer in the real memory. Note that whether this feature is supported depends on the version of Windows you are using. For details about the prerequisites for Windows, see page locking shared memory under System design in the HiRDB Version 9 Installation and Design Guide. If this feature is not supported, this operand is ignored even if fixed is specified.
free:
Do not fix the shared memory to be used by the global buffer in the real memory.
fixed:
Fix the shared memory to be used by the global buffer in the real memory.
Advantage
Fixing the shared memory to be used by the global buffer in the real memory ("fixed" specified) prevents shared memory paging, thus improving the performance of accesses to the shared memory.
Specification guidelines
  • To emphasize performance when there is ample real memory, specify fixed.
  • Determine whether to fix shared memory based on the computed shared memory size and the real memory size of the server machine. If a memory page that is quite large relative to the real memory is fixed, the result might be frequent paging or a virtual memory shortage. Therefore, how much real memory there is and the amount of memory to be occupied by the shared memory pool need to be evaluated carefully. For the formulas used to calculate the shared memory size to be used by the global buffer, see the HiRDB Version 9 Installation and Design Guide.
  • When the size of the shared memory to be page-fixed is subtracted from the size of the real memory, as a guideline, make sure that the result does not equal or exceed half the size that is obtained by subtracting the size of the shared memory to be page-fixed from the swap area size.
Relationship to other facilities
  • If fixed is specified, the shared memory used by a dynamically modified global buffer is also fixed in the real memory. Therefore, carefully consider the real memory size before adding or modifying a global buffer.
Notes
The following notes apply when fixed is specified in a Windows operating system that supports page fixing:
  • The shared memory must be allocated to the paging file with the pdntenv command. For details about the pdntenv command, see the manual HiRDB Version 9 Command Reference.
  • When you estimate the required memory size, note that the shared memory is acquired with its size rounded up to the page size of a Windows large page. To check the page size of a Windows large page, use the pdntenv -os command.
  • In the SHMMAX operand, specify a value that is rounded up to the page size of a Windows large page.
  • If the shared memory for the global buffer pool cannot be fixed in memory when HiRDB starts, the KFPH23045-W message is issued. In this case, even if fixed is specified, HiRDB resumes processing without page-fixing some, or all, of the shared memory in memory.
105) pd_shared_memory_report = Y | N
This operand is applicable only to HiRDB running in 32-bit mode.
This operand specifies whether shared memory-related report messages are to be issued when HiRDB starts.
Y: Output report messages.
N: Do not output report messages.
The following table lists and describes the shared memory subject to reporting and the messages that are issued:
No.Target shared memoryMessage that is issuedOverview of message
1Shared memory for global buffersKFPH23048-I messageThis message reports the size of the shared memory for global buffers that has been allocated.
2KFPH23049-W messageThis message is issued when the shared memory for global buffers that has been allocated exceeds 1.2 gigabytes.
3KFPH23050-I messageThis message reports the maximum size of the management area that is used by each shared memory for global buffers on the server.
4KFPH23051-W messageThis message is issued if the specified SHMMAX operand value exceeds 200 megabytes (50 megabytes if the facility for dynamically changing global buffers (pd_dbbuff_modify=Y) is used).
5Shared memory for unit controllerKFPS05604-I messageThis message reports the size of the shared memory for unit controllers that has been allocated.
Specification guidelines
Normally, this operand does not need to be specified.
If N is specified in this operand, none of the above five messages are issued. If you only want to suppress the output of warning messages (for reasons such as the warning messages might affect the output of event monitoring messages), consider suppressing the output of messages to the event log (by using the pdmlgput operand). For details about the suppression of message output to the event log, see Suppressing message output to the event log in the HiRDB Version 9 System Operation Guide.
Notes
  • This function is also enabled when HiRDB is run in 32-bit emulation mode in 64-bit mode Windows. Warning messages might be issued, but ignore them. For details about how to suppress the output of these messages, see Specification guidelines.
  • The KFPH23049-W message is issued if the size of shared memory for global buffers exceeds 1.2 gigabytes. If the KFPH23049-W message is issued, HiRDB start processing might fail because the shared memory cannot be attached by HiRDB's process, the unit might be shut down during online operation due to insufficient memory, and it might not be possible to restart HiRDB. See the actions to be taken for the KFPH23049-W message to determine how to respond to the message.
  • The KFPH23051-W message is issued if a value greater than 200 megabytes (if the facility for dynamically changing global buffers (pd_dbbuff_modify=Y) is used, 50 megabytes) is specified for the maximum size of shared memory segment (value of the SHMMAX operand). If the KFPH23051-W message is issued, HiRDB start processing might fail because the shared memory cannot be attached by HiRDB's process, the unit might be shut down during online operation due to insufficient memory, and it might not be possible to restart HiRDB. See the actions to be taken for the KFPH23051-W message to determine how to respond to the message.
106) pd_max_dbbuff_shm_no= maximum-number-of-shared -memory-segments-for-global-buffer
~<unsigned integer> ((16-512))<<16>>
This operand is applicable only to HiRDB running in 32-bit mode.
If the shared memory for global buffers is allocated based on the segment size specified in the SHMMAX operand when HiRDB starts, this operand specifies the maximum number of segments to be allocated per server.
Specification guidelines
If facility for dynamically changing global buffers is used, the values of this operand and the SHMMAX operand cannot be changed when HiRDB is restarted. If these operand values are too large, the restart processing might fail because the required area cannot be allocated. To avoid this, specify the value obtained from the formula shown below in this operand. For the SHMMAX operand, specify a value of 50 or smaller.
[Figure]shared memory required for global buffer (megabytes)[Figure] SHMMAX operand value[Figure]
Notes
  • If the facility for dynamically changing global buffers is not used, you can increase the value of this operand when HiRDB is restarted. If the value of this operand is reduced, the restart processing will fail.
  • If the facility for dynamically changing global buffers is used, the total number of shared memory segments that are allocated for global buffer can be obtained from the following formula:
    pd_max_dbbuff_shm_no value + pd_max_add_dbbuff_shm_no value
    When HiRDB starts, if more shared memory segments are needed than the number specified for pd_max_dbbuff_shm_no, the required shared memory segments are allocated by the facility for dynamically changing global buffers. Therefore, the number of additional shared memory segments that can be allocated by the facility for dynamically changing global buffers is less than the number specified for pd_max_add_dbbuff_shm_no. This value can be determined from the following formula:
    Value of pd_max_add_dbbuff_shm_no - number of shared memory segments that were allocated beyond the value specified for pd_max_dbbuff_shm_no
  • If you have changed the value of the pd_max_dbbuff_shm_no operand, re-estimate the number of resources (number of shared memory segments) required for the PDUXPLSHMMAX system environment variable.
Relationship to other operands
This operand is related to the following operands:
  • SHMMAX
  • pd_dbbuff_modify
  • pd_max_add_dbbuff_shm_no
  • PDUXPLSHMMAX system environment variable
Effects on individual estimation formulas
If the value of the pd_max_dbbuff_shm_no operand is changed, the following estimation formulas are affected:
HiRDB Version 9 Installation and Design Guide:
  • Formulas for shared memory used by a unit controller under Estimating the memory size required for a HiRDB/Single Server
  • Formulas for shared memory used by a unit controller under Estimating the memory size required for a HiRDB/Parallel Server
  • Determining the value of S under Determining the size of status files