This appendix contains answers to questions asked by programmers who use the MEMORY CHANNEL API to develop programs for TruCluster systems.
Question: An
attempt was made to do an attach to a coherent region using the
imc_asattach
function.
The function returned the value
IMC_NOMAPPER.
What does this mean?
Answer: This return value indicates
that the
imc_mapper
process is missing from a system in
your MEMORY CHANNEL API cluster.
The
imc_mapper
process is started automatically in
the following cases:
On system initialization, when the configuration variable
IMC_AUTO_INIT
has a value of 1.
(See
Chapter 1
for more information about the
IMC_AUTO_INIT
variable.)
When you execute the
imc_init
command for
the first time.
To solve this problem, reboot the system from which the
imc_mapper
process is missing.
This error may occur if you shut down a system to single-user mode from
init
level 3, and then return the system to multi-user mode without
doing a complete reboot.
If you want to reboot a system that runs TruCluster MEMORY CHANNEL
software, you must do a full reboot of that system.
Question: How can data be copied to a MEMORY CHANNEL transmit region in order to obtain maximum MEMORY CHANNEL bandwidth?
Answer: The MEMORY CHANNEL API
imc_bcopy
function provides an efficient way of copying aligned
or unaligned data to MEMORY CHANNEL.
The
imc_bcopy
function has been
optimized to make maximum use of the buffering capability of a DIGITAL Alpha
CPU.
You can also use the
imc_bcopy
function to copy data
efficiently between two buffers in standard memory.
Question: Is maximum MEMORY CHANNEL bandwidth available when using coherent MEMORY CHANNEL regions?
Answer: No. Coherent regions use the loopback feature to ensure local coherency. Therefore, every write data cycle has a corresponding cycle to loop the data back; this halves the available bandwidth. See Section 2.2.1.3 for more information about the loopback feature.
Question: How can a program determine whether a MEMORY CHANNEL API cluster configuration change has occurred?
Answer: The new
imc_wait_cluster_event()
function can be used to monitor hosts joining or leaving the MEMORY CHANNEL
API cluster, or to monitor changes in the state of the active logical rails.
You can write a program that calls the
imc_wait_cluster_event()
function in a separate thread; this blocks the caller until a state change
occurs.
Question: When a program tries to set a value in an attached transmit region, it crashes with the following message:
Bus error (core dumped)
Why does this happen?
Answer: The data type of the
value may be smaller than 32 bits (in C, an
int
is a 32-bit
data item, and a
short
is a 16-bit data item).
The
DIGITAL Alpha processor, like other RISC processors, reads and writes data
in 64-bit units or 32-bit units.
When you assign a value to a
data item that is smaller than 32 bits, the compiler generates code that loads
a 32-bit unit, changes the bytes that are to be modified, and then stores
the entire 32-bit unit.
If such a data item is in a MEMORY CHANNEL region attached
for transmit, the assignment causes a read operation to occur in the attached
area.
Because transmit areas are write-only, a bus error is reported.
You can prevent this problem by ensuring that all accesses are done on 32-bit data items. See Section 2.2.3 for more information.
Question: There are three TruCluster products. Which product should I use?
Answer: If your application requires high availability and access to disks on shared SCSI buses, and uses the Distributed Lock Manager (DLM) or Distributed Raw Disk (DRD) services, you should use the TruCluster Production Server product. You need MEMORY CHANNEL interconnect hardware and shared SCSI buses. Applications which require these features include certain database management systems. (The TruCluster Production Server product combines the features of the TruCluster Available Server product and the TruCluster MEMORY CHANNEL Software product.)
If your application requires high availability with management of failover of critical services to a backup system, you need the TruCluster Available Server product. You need shared SCSI buses, but the MEMORY CHANNEL interconnect is not supported. NFS is an example of a highly available service managed by TruCluster Available Server.
If your application requires a high bandwidth, low latency interconnect, you need the TruCluster MEMORY CHANNEL Software product. You need MEMORY CHANNEL interconnect hardware, but shared SCSI buses are not supported. The DIGITAL Parallel Software Environment (PSE) product is an example of an application that requires these features.
Question: Where can I get more information about MEMORY CHANNEL?
Answer: You can find out more about MEMORY CHANNEL from the DIGITAL High Performance Technical Computing Web server, at the following URL:
http://www.digital.com/info/hpc
You may also mail your questions to:
high-performance@digital.com