Yes it makes sense now!

For example let's say you have this sequence of 4 messages:
MPI_Send(&i, 1, MPI_INTEGER, peer, tag, comm);
MPI_Send(&j, 1, MPI_INTEGER, peer, tag, comm);
MPI_Send(&i, 1, MPI_INTEGER, peer, tag, comm);
MPI_Send(&j, 1, MPI_INTEGER, peer, tag, comm);

The way you explained the implementation makes me thing that most likely the first message is dispatched immediately (and assuming that the send queue only accept 1 message) and the next 3 will be coalesced together and sent out.

Therefore this runtime solution is not solving *completely* the problem, if the developer would have coalesced the sends in the source code probably the performance will increase (also considering all the above considerations you discussed in the post).

thanks again.