MsgSend() Experiment

I’m running QNX 6.2

Did a bit of an experiment. Using the resmgr/dispatch framework and
message_attach() I put together a resmgr (has both POSIX IO support and
direct IPC support). I then ran a client and the server on the same machine
and using the SYSPAGE stuff and qtime I measured the amount of time for it
to perform 1 million message passes to the server. Small message, basically
a message header (8 bytes) and a return value (4 bytes).

On a 850mhz machine (both client and server running on the same box), the
average time per MsgSend, round trip was 15usec. On a 266 mhz machine it
was 83usec.

Across the network, the 850mhz machine running the client and the 266
machine running the server it took 1.35 msec per message pass.

Ok…so the question that probably can’t be answered, is 1.35 msec a
reasonable amount of time for such a message?

Just fishing for thoughts

Oh yes…the network was a 100mbit ethernet on a 100Mbit/sec switch.

Kevin

I’m running QNX 6.2

Did a bit of an experiment. Using the resmgr/dispatch framework and
message_attach() I put together a resmgr (has both POSIX IO support and
direct IPC support). I then ran a client and the server on the same machine
and using the SYSPAGE stuff and qtime I measured the amount of time for it
to perform 1 million message passes to the server. Small message, basically
a message header (8 bytes) and a return value (4 bytes).

On a 850mhz machine (both client and server running
on the same box), the average time per MsgSend, round trip was 15usec. On
a 266 mhz machine it was 83usec.

Across the network, the 850mhz machine running the
client and the 266 machine running the server it took 1.35 msec per
message pass.

Ok…so the question that probably can’t be answered,
is 1.35 msec a reasonable amount of time for such a message?

Seems little bit slow for 100Mbit. I have a MODBUS/TCP client handy for the experiment. I ran it on 10Mbit network with about hundred MS Win computers on. So network is pretty loaded. The client sends 12 bytes request to server and receives 124 bytes back (application data). This communication is going on top of TCP/IP stack and server needs some time for request processing. Average time for round trip is 0.6ms, but once in a while 2-3ms bursts happen.

I remember doing similar experiment with QNX 4 nework few years ago. I simply sent a block of data back and forth using different protocols over the 10Mbit network. It happened that I still have the test results. Let’s say for 1024 bytes block I got the foolwing rates (bytes/sec):

QNX native network (Send()/Receive()/Reply()): 528449
UDP (send()/recv()): 452693
TCP (write()/read()): 7794

I would suggest you to make sure that network hardware is really running on 100Mbit and check how busy the network is. Try also to change your data size and see if the time changes. Do you count average time with those bursts that I believe happen from time to time?

Just fishing for thoughts

Oh yes…the network was a 100mbit ethernet on a
100Mbit/sec switch.

Kevin

Serge

“Kevin Stallard” <kevin@fffflyingrobbbotsss.com> wrote in message
news:b4rjtq$pq8$2@inn.qnx.com

I’m running QNX 6.2

Did a bit of an experiment. Using the resmgr/dispatch framework and
message_attach() I put together a resmgr (has both POSIX IO support and
direct IPC support). I then ran a client and the server on the same
machine
and using the SYSPAGE stuff and qtime I measured the amount of time for it
to perform 1 million message passes to the server. Small message,
basically
a message header (8 bytes) and a return value (4 bytes).

On a 850mhz machine (both client and server running on the same box), the
average time per MsgSend, round trip was 15usec. On a 266 mhz machine it
was 83usec.

Across the network, the 850mhz machine running the client and the 266
machine running the server it took 1.35 msec per message pass.

Ok…so the question that probably can’t be answered, is 1.35 msec a
reasonable amount of time for such a message?

Just fishing for thoughts

Oh yes…the network was a 100mbit ethernet on a 100Mbit/sec switch.

I don’t know much about Qnet internal working, but it’s obvious your are
testing a worst case scenario as far as Ethernet is concerned. I would also
guess the 266 machine is slowing things down a bit. With qnet plus ethernet
these 12 bytes requires LOTS of overhead to be transmited.

Some cheap switch will introduce latency in transfer rate, which slows thing
down when packet are really small and there is lots of back and forth.

Kevin