Previous | Next --- Slide 31 of 72
Back to Lecture Thumbnails
googlebleh

The number to the right of each orange block (API call) represents the number of buffered messages waiting to be sent out on the first link (blue block).

When this buffer reaches its capacity, the message-passing interface can no longer support its asynchronous behavior. It becomes semi-synchronous because the send call must wait until the Network Link sends the next message and frees a slot in the buffer. Then the message for that call can be stored, and the send call can return.

axiao

The bandwidth of the entire system is bounded by the bandwidth of the slowest component of the system. In this example, it would be the first link (blue block). As a result, improving the bandwidth of other parts of the system has no effect whatsoever on the overall bandwidth, as it is only the weakest link that matters.

sadkins

Messages 1 and 2 not are able to pass through the the system immediately after the communication step because whatever "worker" is handling the blue section is still processing the previous request and cannot do more than one thing at once. Eventually(after message 3 communicated) the "worker" handling communication is also left idle because there is no room left in the buffer for it to store data. The numbers next to the orange represent the number of items in the buffer, so in this case it appears the buffer can't have more than two elements waiting to pass through the slowest(blue) part of the system

dmerigou

The behaviour of the system when the async buffer is full depends on the goal of the system. For instance, at the entry of an Internet link, when the buffer is full incoming packets are dropped. Another behavior is the one described by @googlebleh.

The difference between these two behaviors is your tolerance to synchronicity. If you want to be absolutely asynchronous, then you have to tolerate that your message can be dropped. If you want to be sure that your message is sent, you must tolerate synchronicity in certain cases (when the buffer is full).

1_1

To relate to the car example, you can think about every row here as a different car and every block in a row as that car going a different part of the highway.