On Fri, 16 Apr 2004, Ross Torkington wrote:
> I have four nodes connected by a 10 Base 2 Network via BNC cable.
Given such old setup, I must ask: are the network cards PCI or ISA ? I
have no experience with ISA so I don't know how this could influence
the results - some extra processing of data might be needed with ISA
cards.
> I am timing how long it takes for MPI_Send to return from sending
> messages between 0.1KB and 200KB.
You mean something like (pseudocode, Python influenced):
t0 = time()
MPI_Send()
t = time()
print t-t0
If this is the case, I don't know what significance the results have.
I say this because the data might be buffered by the OS, so you have
no information about how much time the send really took; the behaviour
of the OS can be very variable with respect to buffering so you may
get very different results depending on other activity that goes on
the system and on the network. Precise information of this kind is
usually obtained at low-level, like network card drivers. That's why
you usually see measurements of ping-times which include a send and a
receive - this is what the application will see anyway.
> It is these jumps I don't understand.
When send() is called, there are at least 2 copies of the data that
take place until the data is put on the wire. One is from your buffer
to a kernel buffer which lets send() complete fast. The second one is
from the kernel buffer to small chunks of maximum 1.5 kb (for normal
Ethernet) that are fed to the network driver. Some old/low spec card's
network drivers might need some extra processing. In case of
transmission errors with TCP, the same data can be copied several
times until it is acknowledged successfully by the recipient. When
using a shared medium like BNC, collisions are quite common and so
data retransmissions happen often.
Apart from copying from one place to another, sometimes the allocation
of the destination memory area by the kernel takes some time, that
becomes comparable to the time needed for physical sending of data on
the wire - this is usually visible on low speed CPUs like the ones
that you are using.
All these to say that the sequence of events that happen when sending
data is variable and so can be the timings.
--
Bogdan Costescu
IWR - Interdisziplinaeres Zentrum fuer Wissenschaftliches Rechnen
Universitaet Heidelberg, INF 368, D-69120 Heidelberg, GERMANY
Telephone: +49 6221 54 8869, Telefax: +49 6221 54 8868
E-mail: Bogdan.Costescu_at_[hidden]
|