An adaptive retry mechanism may record latencies of recent transactions
(e.g. the first data transfer latency), and may select a retry latency
from two or more retry latencies. The retry latency may be used for a
transaction, and may specify a point in time during the transaction at
which the transaction is retried if the first data transfer has not yet
occurred. In one implementation, the set of retry latencies includes a
minimum retry latency, a nominal retry latency, and a maximum retry
latency. The nominal retry latency may be set slightly greater than the
expected latency of transactions in the system. The minimum retry latency
may be less than the nominal retry latency and the maximum retry latency
may be greater than the nominal retry latency. If latencies greater than
the nominal retry latency but less than the maximum retry latency are
being experienced, the maximum retry latency may be selected. On the other
hand, if latencies greater than the maximum retry latency are being
experienced, the minimum retry latency may be selected.