15.1.3 Formulas for shared memory used by a unit controller

Organization of this subsection
(1) 32-bit mode HiRDB
(2) 64-bit mode HiRDB

(1) 32-bit mode HiRDB

The size of the memory required for the unit controller from startup to termination of a HiRDB/Single Server is the sum of the process items listed as follows:

Ensure that the size of the shared memory for the entire unit controller does not exceed 2 gigabytes.

Process itemShared memory calculation formula (bytes)
Scheduler
Value of pd_utl_exec_mode set to 0:
{[Figure] (432 + 304 x n) [Figure] 1,024[Figure] + 513 + x} x 1,024
Value of pd_utl_exec_mode set to 1:
{[Figure] (432 + 304 x n) [Figure] 1,024[Figure] + [Figure] (m x 2,000 + 136) [Figure] 1,024[Figure] + y } x 1,024
x: Single server: 116 + 5 x (m + 3) + 14
y: Single server: 5 x (m + 3) + 14
m: Value of pd_max_users
n: Number of servers in unit + number of utility servers in unit + 1
Number of utility servers in the unit: 28 + 12
Lock server(320+ 48 + c + d + 48 + 4,096 + g + 48 + i + 48 + 4,096 + 48 + n + t + u + 16) x value of pd_lck_pool_partition
c: When pd_lck_hash_entry is omitted or 0 is specified:
([Figure](8 + 4 x MAX(largest prime number that is less than [Figure]((p + 3) x (value of pd_max_access_tables + 4 + 5 x 2)
+ [Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 6) [Figure] 10[Figure], 11,261)) [Figure] 16[Figure] + 1) x 16
When 2 or a greater non-prime number is specified for pd_lck_hash_entry:
([Figure](8 + 4 x largest prime number that is less than the value of pd_lck_hash_entry) [Figure] 16[Figure] + 1)
x 16
When 1 or a prime number is specified for pd_lck_hash_entry:
([Figure](8 + 4 x value of pd_lck_hash_entry) [Figure] 16[Figure] + 1) x 16
d: ((p + 3) x (value of pd_max_access_tables + 4 + 5 x 2) +
[Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 6) x 96
g: When value of pd_utl_exec_mode = 1 and p > 32:
((p + 3) x 3 + p) x 256
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
((p + 3) x 3 + 32) x 256
i: When value of pd_utl_exec_mode = 1 and p > 32:
(([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 8 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ p x (value of pd_max_rdarea_no + 1) + (p + 3) x 2 x 2 x 5)
rounded up to the next even value x 64
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
(([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 8 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ 32 x (value of pd_max_rdarea_no + 1) + (p + 3) x 2 x 2 x 5)
rounded up to the next even value x 64
n: When value of pd_utl_exec_mode = 1 and p > 32:
((p + 3) x 3 + p) x 48
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
((p + 3) x 3 + 32) x 48
p: value of pd_max_users
t: When value of pd_utl_exec_mode = 1 and p > 32:
48 + ((p + 3) x 3 + p) x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
48 + ((p + 3) x 3 + 32) x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
u: When value of pd_utl_exec_mode = 1 and p > 32:
48 + (([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 8 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ p x (value of pd_max_rdarea_no + 1) + (p + 3) x 2 x 2 x 5)
rounded up to the next even value x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
48 + (([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 8 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ 32 x (value of pd_max_rdarea_no + 1) + (p + 3) x 2 x 2 x 5)
rounded up to the next even value x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
Transaction server288 + 32 + 192 x m x 2 + 1,028
+ (420 + 564 + 256 + 384 x 2 + 128) x m x 2 + 7) + 256 x 2
m: Value of pd_max_users
Timer server
32 x (value of pd_max_users + 3) x (1 + number of utility servers in unit + 1) + 1,440

Number of utility servers in unit is 26 + 12
Statistics log server384 + 128 x 16 + 32 + 288 x 2 + 1,024 + 128 x 3
+ value of pd_stj_buff_size x 1,024 x 3 + 64 + 4,096 + 8,192
Process server160 + 512 x a + 80 + 256 + (value of pd_max_server_process + 50) x (256 + 144) + 16 + 8 x 16 + 16 + 16 + 48 + 48 x (value of pd_module_trace_max + 1)
a: For a single server: 126
Single Server640 + (44 + 4) x a x 2 + (100 + 4) x (b + 30 + 2) + (100 + 4) x (c + 1) + 40 x b x 14 + 256 + 256 + 36 x d + 12 x e + 8 + 5,844 + 212 + f + 16 + 1,024 + 272 x h
a: Number of single server definitions
b: Number of single servers in unit
c: Number of units
d: Number of -c options specified in pdunit operand
e: Number of pdcltgrp operands specified
f: 2,052 + 128 x (g + 3)
g: For a single server: 92
h: Number of IP addresses for hosts specified in the pd_security_host_group operand
If the pd_security_host_group operand is not specified, 0
Name server169,984
Node manager[Figure](1,152 + 432 x total number of units + 80 x total number of servers + 7,680 + 1,008 + 56 x number of servers in unit + 240 x A + 44 x A + 28 x A + 16 x B + 32)
[Figure]1,024[Figure] x 1,024
A: pd_utl_exec_mode = 0: 1,024
pd_utl_exec_mode = 1 and the unit contains a single server: Value of pd_max_users x 10 + 400
pd_utl_exec_mode = 1 and the unit contains no single server: Value of pd_max_users x 7
If the value of A does not exceed 1,024, use 1,024 as the value of A.
B: pdcltgrp operand not specified: 0
pdcltgrp operand specified: Number of pdcltgrp operands specified + 1
I/O server[Figure](28 + ([Figure](32 + A) [Figure] 32[Figure] x 32)) [Figure] 128[Figure] x 128
A: pd_large_file_use = N specified:
3,248 + (14 + 16) x 808 + 1 x 272 + 534 x 272 + 16 x 272 + value of pd_max_file_no x 808
pd_large_file_use = Y specified (or omitted):
3,248 + (14 + 16) x 972 + 1 x 276 + 534 x 276 + 16 x 276 + value of pd_max_file_no x 972
Log server32 + 48 + 128 x 19 + 384 + 128 x 7 + 1,024 + 512
+ [Figure](128 + 256 + 160 + 8 + 64) [Figure] value of pd_log_rec_leng[Figure]
x value of pd_log_rec_leng + 64 + 4,096 x 2 + (736 + 512) x B + 128
x value of pd_log_write_buff_count
+ (value of pd_log_write_buff_count + A)
x[Figure]{value of pd_log_max_data_size + (68 + 44 + 96 + 160)} [Figure] 4,096[Figure] x 4,096
+ C + [Figure] (512 + 256 + 128 x B + 464 x B) [Figure] (8,192 - 128) [Figure] x 8,192
A: 16
B: Number of pdlogadfg -d sys operands specified
C: 512
Synchronization point dump server[Figure](368 + 1,456 x 2) [Figure] 1,024[Figure] x 1,024
+ [Figure]{(96 + 80 + 208 + 208) + 192 x (number of pdlogadfg -d spd operands specified)
+ 416 x (number of pdlogadpf -d spd operands specified) + 1,023}
[Figure]1,024[Figure] x 1,024
Common to all unitsa + b + 64 + (m + 3) x c + 64 + 48 + d + e
+ (value of pd_max_server_process x 2 + 100) x (64 + 16) + 32
+ (value of pd_max_server_process x 2 + 100 + 384) x 40 + f + g + h
+ (value of pd_max_server_process + 127) x 32 + 32
a: 25,328 + p x 4
b: 2,988
c: 1,952
d: 32 x 32
e: 64 + 64 x {(m + 3) x 2
+ MAX (5, ([Figure] m + 3] [Figure] 10[Figure]) + 7}
f: 512 x (13 + 3) x 2
g: {(96 + value of pd_lck_until_disconnect_cnt x 112 + 4,095) [Figure] 4,096}x 4,096 x 2
h: [Figure] (number of port numbers specified with pd_registered_port x 16 + 32 + 1,023) [Figure] 1,024[Figure] x 1,024
If pd_registered_port is omitted: 0
i: If k is 2 or more, 32 + (8 + 8 x k) x n
Otherwise, 0
k: Value of pd_lck_pool_partition
m: Value of pd_max_users
n: (m + 3) x 2 + MAX{5, [Figure](m + 3) [Figure] 10[Figure]} + 7
p: When Y is specified in pd_dbbuff_modify: value of pd_max_dbbuff_shm_no + value of pd_max_add_dbbuff_shm_no
Otherwise, value of pd_max_dbbuff_shm_no
Transaction log server
1,024 + 512 x A
+ {
128 x B + 128
+ [F + [Figure](128 + 256 + 8 + 224) [Figure] value of pd_log_rec_leng[Figure] x value of pd_log_rec_leng
+ [Figure] (value of pd_log_max_data_size + 68 + 44 + 96 + 160) [Figure] value of pd_log_lec_leng[Figure] x value of pd_log_rec_leng ] x D
+ E + (48 + 8) x B x 2
} x number of servers in unit
+ 584 x B + 128 x B + 64 x B x C + 128
+ {
F + [Figure](128 + 256 + 8 + 224) [Figure] value of pd_log_rec_leng[Figure] x value of pd_log_rec_leng
+ [Figure] (value of pd_log_max_data_size + 68 + 44 + 96 + 160)
[Figure]value of pd_log_lec_leng[Figure] x value of pd_log_rec_leng
}
+ E + (48 + 8) x (B x 2 + 2)
A: 2
B: 7 + value of pd_max_users x 2
C: 1
D: For Single Server, if the value of pd_log_rollback_buff_count is 0, D is 8;
otherwise, it is the value of pd_log_rollback_buff_count
E: 512
F: 512
Status server[Figure]64 [Figure] 32[Figure] x 32
Audit trail management server[Figure]A[Figure] 1,024[Figure] x 1,024
A: 640 if the pd_aud_file_name operand is omitted
640 + (304 x 200) + B + C if the pd_aud_file_name operand is specified
B: 0 if the pd_aud_async_buff_size operand value is 0
The following value if the pd_aud_async_buff_size operand value is 4,096 or greater:
(160 x value of pd_aud_async_buff_count operand)
+ {([Figure]value of pd_aud_async_buff_size operand [Figure] 4,096[Figure] x 4,096)
x value of pd_aud_async_buff_count operand} + 4,096
C: If N is specified for the pd_aud_auto_loading operand, 0
If Y is specified for the pd_aud_auto_loading operand, 256 x 2 + 240

(2) 64-bit mode HiRDB

The size of the memory required for the unit controller from startup to termination of a HiRDB/Single Server is the sum of the process items listed as follows:

Process itemShared memory calculation formula (bytes)
Scheduler
Value of pd_utl_exec_mode set to 0:
{[Figure](432 + 304 x n) [Figure] 1,024[Figure] + 513 + x} x 1,024
Value of pd_utl_exec_mode set to 1:
{[Figure](432 + 304 x n) [Figure] 1,024[Figure] + [Figure](m x 2,000 + 136) [Figure] 1,024[Figure] + y} x 1,024
x: Single server: 116 + 5 x (m + 3) + 14
y: Single server: 5 x (m + 3) + 14
m: Value of pd_max_users
n: Number of servers in unit + number of utility servers in unit + 1
Number of utility servers in the unit: 28 + 12
Lock server(496 + 80 + c + d + 64 + 8,192 + g + 80 + i + 64 + 8,192 + 64 + n + t + u + 16)
x value of pd_lck_pool_partition
c: When pd_lck_hash_entry is omitted or 0 is specified:
([Figure](8 + 8 x MAX(largest prime number that is less than [Figure]((p + 3) x (value of pd_max_access_tables + 4 + 5 x 2)
+ [Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 4) [Figure] 10[Figure][Figure], 11,261)) [Figure] 16[Figure] + 1) x 16
When 2 or a greater non-prime number is specified for pd_lck_hash_entry:
([Figure](8 + 8 x largest prime number that is less than the value of pd_lck_hash_entry) [Figure] 16[Figure] + 1)
x 16
When 1 or a prime number is specified for pd_lck_hash_entry:
([Figure](8 + 8 x value of pd_lck_hash_entry) [Figure] 16[Figure] + 1) x 16
d: ((p + 3) x (value of pd_max_access_tables + 4 + 5 x 2) +
[Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 4) x 128
g: When value of pd_utl_exec_mode = 1 and p > 32:
((p + 3) x 3 + p) x 320
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
((p + 3) x 3 + 32) x 320
i: When value of pd_utl_exec_mode = 1 and p > 32:
(([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 5 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ [Figure]([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure]) [Figure] 3[Figure] + p x (value of pd_max_rdarea_no + 1)
+ (p + 3) x 2 x 2 x 5)
rounded up to the next even value x 112
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
(([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 5 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ [Figure]([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure]) [Figure] 3[Figure] + 32 x (value of pd_max_rdarea_no + 1)
+ (p + 3) x 2 x 2 x 5)
rounded up to the next even value x 112
n: When value of pd_utl_exec_mode = 1 and p > 32:
((p + 3) x 3 + p) x 80
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
((p + 3) x 3 + 32) x 80
p: value of pd_max_users
t: When value of pd_utl_exec_mode = 1 and p > 32:
48 + ((p + 3) x 3 + p) x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
48 + ((p + 3) x 3 + 32) x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
u: When value of pd_utl_exec_mode = 1 and p > 32:
48 + (([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 5 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ [Figure][Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure][Figure] 3[Figure] + p x (value of pd_max_rdarea_no + 1)
+ (p + 3) x 2 x 2 x 5)
rounded up to the next even value x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
When value of pd_utl_exec_mode = 0 or p[Figure] 32:
48 + (([Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure] x 5 + ((p + 3)
x (value of pd_max_access_tables + 4)) x 2)
+ [Figure][Figure]value of pd_lck_pool_size[Figure] value of pd_lck_pool_partition[Figure][Figure] 3[Figure] + 32 x (value of pd_max_rdarea_no + 1)
+ (p + 3) x 2 x 2 x 5)
rounded up to the next even value x[Figure] value of pd_max_open_holdable_cursors[Figure] 16[Figure] x 4
,
Transaction server304 + 32 + 192 m 2 + 1,048
+ (416 + 720 + 256 + 392 2 + 128) (m 2 + 7) + 256 2
m: Value of pd_max_users
Timer server
32 x (value of pd_max_users + 3) x (1 + number of utility servers in unit + 1) + 1,440 + (48 - 32) x 2

Number of utility servers in unit is 26 + 12
Statistics log server424 + 128 x 16 + 32 + 288 x 2 + 1,168 + 144 x 3
+ value of pd_stj_buff_size x 1,024 x 3 + 64 + 4,096 + 8,192
Process server176 + 528 x a + 80 + 256 + (value of pd_max_server_process + 50) x (256 + 160) + 16 + 8 x 16 + 16 + 16 + 64 + 64 x (value of pd_module_trace_max + 1)
a: For a single server: 127
Single Server736 + (48 + 8) x a x 2 + (112 + 8) x (b + 30 + 2) + (104 + 8) x (c + 1) + 40 x b x 14 + 256 + 256 + 40 x d + 16 x e + 8 + 5,864 + 236 + f + 16 + 1,024 + 272 x h
a: Number of single server definitions
b: Number of single servers in unit
c: Number of units
d: Number of -c options specified in pdunit operand
e: Number of pdcltgrp operands specified
f: 2,056 + 128 x (g + 3)
g: For a single server: 92
h: Number of IP addresses for the host specified in the pd_security_host_group operand
If the pd_security_host_group operand is not specified, 0
Name server169,984
Node manager[Figure](1,312 + 464 total number of units in HiRDB system
+ 96 total number of servers in HiRDB system + 10,240 + 1,200
+ 72 number of HiRDB servers in the unit + 240 A + 44 A + 28 A + 16 B + 48)
[Figure]1,024[Figure] 1,024
A: pd_utl_exec_mode = 0: 1,024
pd_utl_exec_mode = 1 and the unit contains a single server: value of pd_max_users x 10 + 400
pd_utl_exec_mode = 1 and the unit contains no single server: value of pd_max_users x 7
If the value of A does not exceed 1,024, use 1,024 as the value of A.
B: pdcltgrp operand not specified: 0
pdcltgrp operand specified: Number of pdcltgrp operands specified + 1
I/O server[Figure](56 + ([Figure](56 + A) [Figure] 32[Figure] x 32)) [Figure] 128[Figure] x 128
A: pd_large_file_use = N specified:
3,248 + (14 + 16) x 808 + 1 x 272 + 534 x 272 + 16 x 272 + value of pd_max_file_no x 808 + (48 - 32) x 3
pd_large_file_use = Y specified (or omitted):
3,248 + (14 + 16) x 972 + 1 x 276 + 534 x 276 + 16 x 276 + value of pd_max_file_no x 972 + (48 - 32) x 3
,
Log server32 + 48 + 128 19 + 432 + 128 7 + 1,168 + 512
+ [Figure] (128 + 256 + 160 + 8 + 64) [Figure] value of pd_log_rec_leng[Figure] value of pd_log_rec_leng
+ 64 + 4,096 2 + (768 + 512) B
+ 144 value of pd_log_write_buff_count
+ (value of pd_log_write_buff_count + A)
[Figure]{value of pd_log_max_data_size + (68 + 44 + 96 + 160)} [Figure] 4,096[Figure] 4,096
+ C + [Figure] (512 + 256 + 128 B + 464 B) [Figure] (8,192 - 128) [Figure] 8,192
A: 16
B: Number of pdlogadfg -d sys operands specified
C: 512
Synchronization point dump server[Figure](384 + 1,536 x 2) [Figure] 1,024[Figure] x 1,024
+ [Figure]{(128 + 80 + 240 + 240) + 192 x (number of pdlogadfg -d spd operands specified)
+ 416 x (number of pdlogadpf -d spd operands specified) + 1,023}
[Figure]1,024[Figure] x 1,024
Common to all unitsa + b + 80 + (m + 3) x c + 64 + 48 + d + e
+ (value of pd_max_server_process x 2 + 100) x (76 + 16) + 32
+ (value of pd_max_server_process x 2 + 100 + 384) x 40 + 32 + f + g + h + i
+ (value of pd_max_server_process + 127) x 48 + 32
a: 34,736 + p x 4
b: 3,480
c: 2,760
d: 48 x 32
e: 80 + 96 x {(m + 3) x 2
+ MAX (5, ([Figure] m + 3] [Figure] 10[Figure]) + 7}
f: 512 x (13 + 3) x 2
g: {(128 + value of pd_lck_until_disconnect_cnt x 112 + 4,095) [Figure] 4,096}x 4,096 x 2
h: [Figure] (number of port numbers specified with pd_registered_port x 16 + 32 + 1,023) [Figure] 1,024[Figure] x 1,024
If pd_registered_port is omitted: 0
i: If k is 2 or more, 32 + (8 + 8 x k) x n
Otherwise, 0
k: Value of pd_lck_pool_partition
m: Value of pd_max_users
n: (m + 3) x 2 + MAX{5, [Figure](m + 3) [Figure] 10[Figure]} + 7
p: If Y is specified for pd_dbbuff_modify: 16 + value of pd_max_add_dbbuff_shm_no + value of pd_max_resident_rdarea_shm_no
Otherwise: 16 + value of pd_max_resident_rdarea_shm_no
Transaction log server
1,168 + 688 x A
+ {
128 x B + 144
+ [G + [Figure] (128 + 256 + 8 + 224) [Figure] value of pd_log_lec_leng[Figure] x value of pd_log_rec_leng
+ [Figure] (value of pd_log_max_data_size + 68 + 44 + 96 + 160) [Figure] value of pd_log_lec_leng[Figure]
x value of pd_log_rec_leng ] x D
+ E + (48 + 8) x B x 2
} x number of servers in unit
+ 600 x B + 128 x B + 64 x B x C + 144
+ {
G + [Figure] (128 + 256 + 8 + 224) [Figure] value of pd_log_lec_leng[Figure] x value of pd_log_rec_leng
+ [Figure] (value of pd_log_max_data_size + 68 + 44 + 96 + 160)
[Figure]value of pd_log_lec_leng[Figure] x value of pd_log_rec_leng
}
+ E + (48 + 8) x (B x 2 + 2)
A: 2
B: 7 + value of pd_max_users x 2
C: 1
D: For Single Server, if the value of pd_log_rollback_buff_count is 0, D is 8;
otherwise, it is the value of pd_log_rollback_buff_count
E: 512
G: 512
Status server[Figure]64 [Figure] 32[Figure] x 32
Audit trail management server[Figure]A[Figure] 1,024[Figure] x 1,024
A: 704 if the pd_aud_file_name operand is omitted
704 + (320 x 200) + B + C if the pd_aud_file_name operand is specified
B: 0 if the pd_aud_async_buff_size operand value is 0
The following value if the pd_aud_async_buff_size operand value is 4,096 or greater:
(176 x value of pd_aud_async_buff_count operand)
+ {([Figure]value of pd_aud_async_buff_size operand [Figure] 4,096[Figure] x 4,096)
x value of pd_aud_async_buff_count operand} + 4,096
C: If N is specified for the pd_aud_auto_loading operand, 0
If Y is specified for the pd_aud_auto_loading operand, 256 x 2 + 256