Next: Performance Evaluation
Up: Implementation of HLRC on
Previous: Data Transfers
The DSM protocol may issue remote requests for data and synchronization.
These requests, which require a response, are sent using the
send-receive model. Since each node
executes one application thread, there can be only one outstanding request
issued by that node and, one corresponding reply. Therefore, each
node expects at most N-1 requests (one from each other node). This means
that each node must register N-1 receive buffers and
post the same number of receive descriptors, where N is the number of
nodes in the cluster. A N-th registered receive buffer is used to receive
the reply messages (acks, locks, etc).
Since VIA does not support
notification on message arrival, a server thread is run on each node,
which is responsible to handle remote requests. When
no requests are pending, the server thread blocks on a completion queue
that aggregates the receive queues for the N-1 buffers on which the node
can receive asynchronous requests.
Messages that do not require a response (barrier, reply messages)
are sent using RDMA Write
and do not consume a descriptor on the receiving side. These messages
are consumed in a busy loop by the application (not server) thread,
since there is nothing else the application thread can do.
The memory location for the flag on which spinning is performed,
is updated by RDMA Write.
Next: Performance Evaluation
Up: Implementation of HLRC on
Previous: Data Transfers
Murali Rangarajan
2000-08-09