Modern network interfaces are operated in the form of queue structures,
e.g. the transmission queue, receive queue, free-buffer queue, etc.
These queues are simple circular FIFO queues, and operate under the
consumer-producer relationship. Consider if the producer generates
requests faster than the service rate of the consumer, outstanding
requests will be queuing up in the queue; due to the limitation of
the queuing space, eventually the system will become full. Upon the
full condition, the system will only accept new request if and only
if the consumer has serviced the "head" request
to make way for the newcomer. Therefore, if there were unlimited supply
of requests, the system gradually reaches an equilibrium state, in
which the producer is forced to work at the same rate at that of the
servicing rate. The algorithm used by this microbenchmark is shown
in Algorithm 7.
For the above microbenchmark to be effective, the prerequisite condition is , without that we could only report of the value. When the number of messages sent (msg_no) is less than queue size (Tx) of the transmit ring, the observed per message handling time becomes our value for this message size. On the other hand, when the number of messages sent is greater than Tx, the observed equilibrium handling time becomes our value for this message size.