The ACC Mux Subsystem reserves a contiguous block of kernel
memory for tables for its use. This block of memory is used for
table space and for data buffering internal to the ACC Mux Subsystem
product.
The maximum size of the memory
block is set by the value of the zcom_mem_size parameter
in the “system” file used to build your kernel. Typically,
this is the file /stand/system.
The default value is 4 M-Byte. The zcom_mem_size value
can be sized to reflect what is actually required for a given system
configuration.
The zcom_mem_size parameter
should never be set less than the “Total Size” value
which is reported when ttgen is
run using the -s option
on the ttgen configuration file. The algorithm below can be used
to estimate a reasonable value for zcom_mem_size.
In the case that zcom_mem_size is not set to a large
enough value for the given configuration, the program zmasterd will be unable to start
up the ZCOM subsystem. If the zmlog utility
is running, a message is placed in the log file indicating that
zmon does not have enough memory
to start up. If zcom_mem_size is
large enough to hold the internal tables, but is not large enough
to handle the buffering between the ACC Mux card and the ACC Mux
Subsystem drivers, the subsystem will still function, but the performance
may be degraded.
If zcom_mem_size is not
large enough, it is suggested that the ttgen configuration
file be reviewed to make sure that it only contains what is actually
required.
If zcom_mem_size is modified,
the kernel must be rebuilt, and the system rebooted for the change
to take effect.
An appropriate value for zcom_mem_size can be estimated using
the following algorithm:
where:
- <card>
number of mux cards on the system
- <rate>
maximum number of messages per second per mux card
(Refer to the calculation shown below.)
- <time>
average turn-around time for one message (including
transmission time). This also depends on the SPU processing power.
For most systems, 5 seconds should be adequate.
- <length>
average message length.
- 200
memory overhead per message (in bytes)
- 1.5
scaling factor to allow for usable gaps in the buffer
pool
The rate value is calculated
as follows:
where:
- <bps_rate>
rate of port in bits per second divided by 8
- <num_ports>
number of ports in use.
- <duplex>
half duplex = 1; full duplex = 2
- <msg_len>
average number of bytes per message
For example, for a system with 5 ports (at 57.6 Kbits per
second per port) running half duplex with a message length of 100
bytes per message: