Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
BroadcastCommunity.qnx.com will be offline from May 31 6:00pm until June 2 12:00AM for upcoming system upgrades. For more information please go to https://community.qnx.com/sf/discussion/do/listPosts/projects.bazaar/discussion.bazaar.topc28418
Forum Topic - QNX 6.4 - QNX 6.3 Comparison: Page 1 of 2 (64 Items)
   
QNX 6.4 - QNX 6.3 Comparison  
Hi,

I was testing and trying to compare some aspects of QNX 6.4 and QNX 6.3 (+corepatch 6.3.2A). I prepared a small 
presentation with the purpose of to show the results of my tests. In this presentation there are some whys? that I would
 like to find an answer.

It would be of much utility and helps me to understand this results, as well as if the method that I am using to measure
 what desire is the suitable one.

There are other aspects that I want to test like OS Performance, maybe you can help me telling how?

If there are some translation problems (from spanish) that can cause confusion, please let me know to avoid confusions.

Thank you very much in advance.

Regards,
Juan Manuel
Re: QNX 6.4 - QNX 6.3 Comparison  
I'm having problems with attachment...

RE: QNX 6.4 - QNX 6.3 Comparison  
Hi:
   Are you looking for OS in general or networking in particular?  If you have a look at the networking wiki, there's a 
number of links comparing the networking stack implementation in io-net and the one in 6.4 

(for example
http://community.qnx.com/sf/wiki/do/viewPage/projects.networking/wiki/Stack_wiki_page
and the io-net migration page).

For OS kernel information, you should take a look at the Core OS project instead.

   Robert.

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com]
Sent: Wed 11/19/2008 6:14 PM
To: technology-networking
Subject: QNX 6.4 - QNX 6.3 Comparison
 
Hi,

I was testing and trying to compare some aspects of QNX 6.4 and QNX 6.3 (+corepatch 6.3.2A). I prepared a small 
presentation with the purpose of to show the results of my tests. In this presentation there are some whys? that I would
 like to find an answer.

It would be of much utility and helps me to understand this results, as well as if the method that I am using to measure
 what desire is the suitable one.

There are other aspects that I want to test like OS Performance, maybe you can help me telling how?

If there are some translation problems (from spanish) that can cause confusion, please let me know to avoid confusions.

Thank you very much in advance.

Regards,
Juan Manuel


_______________________________________________
Technology
http://community.qnx.com/sf/go/post16941


Attachment: Text winmail.dat 3.11 KB
Re: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi Robert, and thanks for the reply!! 

I need some specific answers to my little work if possible.

Here's the attachment (I hope)

Regards,
Juan Manuel
Attachment: Powerpoint Comparing QNX 6.4 vs QNX 6.3 Forum v1.pps 1.19 MB
RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi:

  The bulk of your questions are really oriented on file system performance, so it may be best if you post this in the 
file system project.  If I had to guess, I'd say it's probably because you installed using fs-qnx6.  This file system 
was designed for robustness and is meant to handle things like power outages without resulting in corruption.  This 
would have to be confirmed by the file system people though.

In terms of the slight degradation in qnet performance, I'll have to take a closer look.  Do you have sample test code 
available for me to try out?  We have our own internal code, but it would be useful to see what you've written.  The 
slight reduction could be due to the trade off we made during the design stage to provide optimised IP performance.  
This means that the way that we hook qnet into the stack is not quite as optimized as it was with io-net.  

   Robert.

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com]
Sent: Wed 11/19/2008 9:53 PM
To: technology-networking
Subject: Re: RE: QNX 6.4 - QNX 6.3 Comparison
 
Hi Robert, and thanks for the reply!! 

I need some specific answers to my little work if possible.

Here's the attachment (I hope)

Regards,
Juan Manuel


_______________________________________________
Technology
http://community.qnx.com/sf/go/post16944

Attachment: Text winmail.dat 3.18 KB
Re: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> 
> Hi:
> 
>   The bulk of your questions are really oriented on file system performance, 
> so it may be best if you post this in the file system project.  If I had to 
> guess, I'd say it's probably because you installed using fs-qnx6.  This file 
> system was designed for robustness and is meant to handle things like power 
> outages without resulting in corruption.  This would have to be confirmed by 
> the file system people though.
> 
> In terms of the slight degradation in qnet performance, I'll have to take a 
> closer look.  Do you have sample test code available for me to try out?  We 
> have our own internal code, but it would be useful to see what you've written.
>   The slight reduction could be due to the trade off we made during the design
>  stage to provide optimised IP performance.  This means that the way that we 
> hook qnet into the stack is not quite as optimized as it was with io-net.  
> 
>    Robert.
> 
> -----Original Message-----
> From: Juan Manuel Placco [mailto:community-noreply@qnx.com]
> Sent: Wed 11/19/2008 9:53 PM
> To: technology-networking
> Subject: Re: RE: QNX 6.4 - QNX 6.3 Comparison
>  
> Hi Robert, and thanks for the reply!! 
> 
> I need some specific answers to my little work if possible.
> 
> Here's the attachment (I hope)
> 
> Regards,
> Juan Manuel
> 
> 
> _______________________________________________
> Technology
> http://community.qnx.com/sf/go/post16944
> 

HI Robert, thank you for your always quick answer!

So, according to what I understood, I would have to wait for a small degradation of efficiency for native networking 
(resources managers, message passing, and so on...), but a better one working with IP protocol, for example if I a do 
some UDP packets broadcasting?

With respect to file systems, yes, I was exactly testing the performance of 'fs-qnx6' vs 'fs-qnx4'. And I'll post those 
questions to file system project as you suggest. 

I'll post later the sources (actually, they're very simple.) with which I made the tests. I'm having asome problems 
uploading files to this forum, since I'm behind a strange proxy. 

Thanks you very much again!

Regards,
Juan Manuel
RE: RE: QNX 6.4 - QNX 6.3 Comparison  
I looked at your powerpoint presentation (nice, btw!)
and I had a couple questions:

1) in the qnet tests, you refer to messages.  You vary
the *number* of messages sent - and I would expect the
accuracy of the results to increase as you run the test
longer, with a greater number of message transfers ...

but do you vary the *size* of the message?  Do you get 
different results for different sizes (eg 1K, 4K, 16K, 64K)
of send/reply messages?


2) what network card and driver are you running?  Are you
running the "shim" and an io-net devn-*.so driver with
io-pkt, or are you running the io-pkt devnp-*.so driver?

A "pidin mem" can definitively answer these questions, 
btw.  The reason I ask is that when you run the "shim"
with an io-net driver, an extra thread switch is incurred
during receive, which ordinarily you don't notice, but
when you're doing performance testing, and start talking
about one and two percents, details like this become
relevant.

--
aboyd
Re: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi Andrew, thank you very much for the reply!

1) Actually the size of the message is fixed and is 1024 bytes. The idea was to maintain the same scheme in 6.3 and 6.4.
 But I'll try differents ones!

2) That's a very good question. Actually I don't know how does that 'shim' work. Maybe you can help me to find 
documentation.

>> Are you running the "shim" and an io-net devn-*.so driver with
io-pkt, or are you running the io-pkt devnp-*.so driver? ...

>> The reason I ask is that when you run the "shim"
with an io-net driver ....

I can see "devnp-shim.so" loaded in my DEV1 io-pkt-v4-hc not in 'io-net'. I'm a little confused here...

The configuration is the default one (one assumes that's the one that detects the enum-devices in rc.devices at sysinit,
 isn't it?, When does 'devnp-shim.so' module is loaded?  )

Well, this is the scenario you ask for:

DEV1
---------------------------------------------------------------------------
It's a DELL Optiplex GX520
NIC: Broadcom®5751 Gigabit Ethernet LAN solution 10/100/10001 Ethernet with Remote Wake Up and PXE support

QNX 6.3

enum-devices -n
mount -Tio-net -opci=0,vid=0x14e4,did=0x1677 /lib/dll/devn-tigon3.so

pidin -P io-net mem
 ...
          libc.so.2             ...
          npm-tcpip.so
-->     devn-tigon3.so     
          npm-qnet.so        
          sbin/io-net           
          sbin/io-net           

QNX 6.4 

enum-devices -n
mount -Tio-pkt -opci=0,vid=0x14e4,did=0x1677 /lib/dll/devn-tigon3.so

pidin -P io-pkt-v4-hc mem
...
          io-pkt-v4-hc       ...
          libc.so.3          
          devnp-shim.so      
-->     devn-tigon3.so     
          lsm-qnet.so        
          /dev/mem           


DEV2
---------------------------------------------------------------------------

It's a DELL Optiplex 170/L
NIC: Intel 10/100Mbps Ethernet with Remote Wake-up and PXE support

QNX 6.3

enum-devices -n
mount -Tio-net -opci=0,vid=0x8086,did=0x1050 /lib/dll/devn-speedo.so

pidin -Pio-net mem
...
         libc.so.2          ...
         npm-tcpip.so
-->     devn-speedo.so     
         npm-qnet.so        
         sbin/io-net        
         sbin/io-net        

QNX 6.4

enum-devices -n
mount -Tio-pkt -opci=0,vid=0x8086,did=0x1050 /lib/dll/devnp-speedo.so

pidin -P io-pkt-v4-hc mem
...
          io-pkt-v4-hc     ...
          libc.so.3
-->     devnp-speedo.so
          lsm-qnet.so

Hey btw, why can't I see 'npm-tcpip.so' module or similar in io-pkt ?

So, that 'shim' could be the cause of the small degradation of the performance ?

Thank you very much. I found this ver interesting for me!

Regards,
Juan Manuel
RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi:
	The shim acts as a binary interface converter, allowing "old
style" io-net based drivers to interoperate with the io-pkt
infrastructure.  There could be a small penalty to pay by this
additional layer.

We default to the io-net versions of of the BCM57xx driver because it
supports a few more chipsets than the NetBSD driver did at the time.
You can try running io-pkt with the devnp-bge.so driver instead. 

For more information about why npm-tcpip is not needed and the shim,
please read through the io-net migration wiki pages.

	Robert.

 

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Thursday, November 20, 2008 12:55 PM
To: technology-networking
Subject: Re: RE: RE: QNX 6.4 - QNX 6.3 Comparison

Hi Andrew, thank you very much for the reply!

1) Actually the size of the message is fixed and is 1024 bytes. The idea
was to maintain the same scheme in 6.3 and 6.4. But I'll try differents
ones!

2) That's a very good question. Actually I don't know how does that
'shim' work. Maybe you can help me to find documentation.

>> Are you running the "shim" and an io-net devn-*.so driver with
io-pkt, or are you running the io-pkt devnp-*.so driver? ...

>> The reason I ask is that when you run the "shim"
with an io-net driver ....

I can see "devnp-shim.so" loaded in my DEV1 io-pkt-v4-hc not in
'io-net'. I'm a little confused here...

The configuration is the default one (one assumes that's the one that
detects the enum-devices in rc.devices at sysinit, isn't it?, When does
'devnp-shim.so' module is loaded?  )

Well, this is the scenario you ask for:

DEV1
------------------------------------------------------------------------
---
It's a DELL Optiplex GX520
NIC: Broadcom(r)5751 Gigabit Ethernet LAN solution 10/100/10001 Ethernet
with Remote Wake Up and PXE support

QNX 6.3

enum-devices -n
mount -Tio-net -opci=0,vid=0x14e4,did=0x1677 /lib/dll/devn-tigon3.so

pidin -P io-net mem
 ...
          libc.so.2             ...
          npm-tcpip.so
-->     devn-tigon3.so     
          npm-qnet.so        
          sbin/io-net           
          sbin/io-net           

QNX 6.4 

enum-devices -n
mount -Tio-pkt -opci=0,vid=0x14e4,did=0x1677 /lib/dll/devn-tigon3.so

pidin -P io-pkt-v4-hc mem
...
          io-pkt-v4-hc       ...
          libc.so.3          
          devnp-shim.so      
-->     devn-tigon3.so     
          lsm-qnet.so        
          /dev/mem           


DEV2
------------------------------------------------------------------------
---

It's a DELL Optiplex 170/L
NIC: Intel 10/100Mbps Ethernet with Remote Wake-up and PXE support

QNX 6.3

enum-devices -n
mount -Tio-net -opci=0,vid=0x8086,did=0x1050 /lib/dll/devn-speedo.so

pidin -Pio-net mem
...
         libc.so.2          ...
         npm-tcpip.so
-->     devn-speedo.so     
         npm-qnet.so        
         sbin/io-net        
         sbin/io-net        

QNX 6.4

enum-devices -n
mount -Tio-pkt -opci=0,vid=0x8086,did=0x1050 /lib/dll/devnp-speedo.so

pidin -P io-pkt-v4-hc mem
...
          io-pkt-v4-hc     ...
          libc.so.3
-->     devnp-speedo.so
          lsm-qnet.so

Hey btw, why can't I see 'npm-tcpip.so' module or similar in io-pkt ?

So, that 'shim' could be the cause of the small degradation of the
performance ?

Thank you very much. I found this ver interesting for me!

Regards,
Juan Manuel


_______________________________________________
Technology
http://community.qnx.com/sf/go/post16986
RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> QNX 6.4
> -->     devnp-speedo.so

Another thing ... I just fixed this io-pkt driver
(devnp-speedo.so) to add the "probe_phy" optimization,
which can substantially improve throughput, in our
benchmark tests.

The commits I made should be publicly visible - could
you update your driver source, recompile, and re-run 
your tests?

I hate to put attachments in the forum - if you want,
send an email to me at

  aboyd@qnx.com

and I will immediately reply back with a new x86 binary
devnp-speedo.so with the probe_phy fix, so you don't have
to bother downloading and compiling the source, if you
don't want to.

--
aboyd
RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
P.S.  If you switch from the shim & tigon driver, to
the bge driver, and also upgrade the devnp-speedo.so
driver to the latest with the probe_phy optimization,
your io-pkt numbers may very well exceed your io-net
numbers!

ARGH.  I just remembered something.  There is a mod
to the BSD-source drivers (which the bge driver is)
to work around a threading problem, to force a thread
switch when they transmit qnet packets (long story).

I'm not sure the bge driver is the best for benchmarking
qnet, sorry.  It will receive without a thread switch,
but it will thread switch on transmit.

Sigh.  Time to go and start drink heavily again.

--
aboyd
Re: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Ok, Andrew and Robert, thank you very much for the interest in my questions. The explanations cleared many doubts to me.


Here are the sources codes with which I tested. They're very simple, not big deal.

I'm testing again with the new 'devnp-speedo.so' but not with 'devnp-bge.so'. I can also try both. Then I send you the 
new numbers.

Regards,
Juan Manuel
Attachment: Text networking.tgz 2.74 KB
RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> Here are the sources codes with which I tested. They're 
> very simple, not big deal.

Just had a peek at them - my only comment is that since
your only message size is 1024 bytes, you are really only
testing (and comparing) single-packet throughput.

I might suggest that you vary the size of the send for
a more comprehensive test, such as data sizes of:

10    bytes - small user single packet
1200  bytes - big user single packet
4000  bytes - reasonable size chunk
8000  bytes - larger reasonable size chunk
16000 bytes - pretty big size chunk
64000 bytes - really big size chunk

If you sweep the message size as above, you will
get a much more detailed comparison of io-net and
io-pkt (and it's drivers!) and how it transfers
data for qnet applications.

--
aboyd
Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Thank you Andrew, I'll do that comparison soon.

Side note: With the same schema of fixed 1024 bytes, and replacing 'devnp-speedo.so' and "shim & tigon" by 'devnp-bge.
so' the results were nothing good.

Replacing only 'devnp-speedo.so' the difference was imperceptible, the problem came when I replaced "shim & tigon" (the 
default configuration) by 'devnp-bge.so'. The test was twice slower!.

For example: To send 1000000 (1024 bytes) messages with "shim & tigon" takes for me aprox 317 seconds, but with 'devnp-
bge.so' it takes aprox 582 !! (could I be making something wrong?). I mount the driver with no parameters. Just mount 
and test.

What could be happening?

Regards,
Juan Manuel
RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> Replacing only 'devnp-speedo.so' the difference 
> was imperceptible

Hm.  That may change if you start doing larger
size transfers, with back-to-back packets, using
more of the wire.  Right now you're doing just
single-packet ping-ponging.

> the problem came when I replaced "shim & tigon"
> by 'devnp-bge.so'. The test was twice slower!.

Wow, I thought that the thread switch on transmit
might slow qnet down, but I didn't think that much,
especially with your powerful x86 computers.

After your test is run, can you upload the output
of "sloginfo" from both machines?  I want to make
sure that you aren't losing any packets.

--
aboyd
Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Ok, i run a shorter test but I think is the same, because is very slow with 'devnp-bge.so' module.

Before the test I cleared the log buffer (sloginfo -c): So:

sloginfo srv (devnp-speedo.so):

Nov 21 14:02:08    2    14     0 devn-speedo: speedo_MDI_MonitorPhy(): calling MDI_MonitorPhy()
Nov 21 14:02:11    2    14     0 devn-speedo: speedo_MDI_MonitorPhy(): calling MDI_MonitorPhy()
Nov 21 14:05:32    2    14     0 devn-speedo: speedo_MDI_MonitorPhy(): calling MDI_MonitorPhy()

sloginfo cli (devnp-speedo.so):

Nov 21 13:57:50    6     8     0 Faulted in v86 call! (int 0x10, eax = 4f05)

Nov 21 13:59:33    6     8     0 Faulted in v86 call! (int 0x10, eax = 4f05)

Nov 21 13:59:49    6     8     0 Faulted in v86 call! (int 0x10, eax = 4f05)

Nov 21 14:00:17    6     8     0 Faulted in v86 call! (int 0x10, eax = 4f05)

Nov 21 14:00:34    6     8     0 Faulted in v86 call! (int 0x10, eax = 4f05)

What's that fault!?

Regards,
Juan Manuel

RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Before the test I cleared the log buffer (sloginfo -c): So:

> Faulted in v86 call! (int 0x10, eax = 4f05)

That's really weird.  To the best of my knowledge,
that's not coming from the stack or qnet or the
driver.  My guess is the kernel.

Anyways.  What is noticeable (by it's absence) is
the complete lack of qnet protocol events/errors
such as timeouts, nacks, etc which indicates as
best I can tell, that you are NOT losing packets,
which must be fixed before any benchmarking can
take place.

I guess for the time being, I would recommend
staying with the shim and the tigon driver, 
and the newer version of devnp-speedo.so, for
your qnet tests.  I'm not sure what to recommend
to make your tests run any faster.

--
aboyd
Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
On Fri, Nov 21, 2008 at 03:16:14PM -0500, Andrew Boyd wrote:
> 
> Before the test I cleared the log buffer (sloginfo -c): So:
> 
> > Faulted in v86 call! (int 0x10, eax = 4f05)
> 
> That's really weird.  To the best of my knowledge,
> that's not coming from the stack or qnet or the
> driver.  My guess is the kernel.

Its coming from a graphics driver (/lib/dll/devg-?)

-seanb
Re: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> 
> Before the test I cleared the log buffer (sloginfo -c): So:
> 
> > Faulted in v86 call! (int 0x10, eax = 4f05)
> 
> That's really weird.  To the best of my knowledge,
> that's not coming from the stack or qnet or the
> driver.  My guess is the kernel.
> 
> Anyways.  What is noticeable (by it's absence) is
> the complete lack of qnet protocol events/errors
> such as timeouts, nacks, etc which indicates as
> best I can tell, that you are NOT losing packets,
> which must be fixed before any benchmarking can
> take place.
> 
> I guess for the time being, I would recommend
> staying with the shim and the tigon driver, 
> and the newer version of devnp-speedo.so, for
> your qnet tests.  I'm not sure what to recommend
> to make your tests run any faster.
> 
> --
> aboyd


Ok Andrew, thank you very much!... The degradation of the efficiency between QNX 6.3 io-net and 'shim and the tigon 
driver' on io-pkt is as we saw near 2.5%.

> and the newer version of devnp-speedo.so ...

Last bothering question, sorry: New speedo was hardly slower than the one in 6.4 official release (-0.04%). Still 
recomended?

Thanks for all!

Regards,
Juan Manuel

PS: Filesystem post was unaswered since 2 o 3 days ago :(
Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> 
> > Here are the sources codes with which I tested. They're 
> > very simple, not big deal.
> 
> Just had a peek at them - my only comment is that since
> your only message size is 1024 bytes, you are really only
> testing (and comparing) single-packet throughput.
> 
> I might suggest that you vary the size of the send for
> a more comprehensive test, such as data sizes of:
> 
> 10    bytes - small user single packet
> 1200  bytes - big user single packet
> 4000  bytes - reasonable size chunk
> 8000  bytes - larger reasonable size chunk
> 16000 bytes - pretty big size chunk
> 64000 bytes - really big size chunk
> 
> If you sweep the message size as above, you will
> get a much more detailed comparison of io-net and
> io-pkt (and it's drivers!) and how it transfers
> data for qnet applications.
> 
> --
> aboyd

Here's the comparison.

What could we say?

Thank you very much!

Regards,
Juan Manuel

Attachment: Powerpoint variable_message_size_graph.pps 55 KB
RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi there:
	The first thing that popped to my mind with this is what happens
if you do the test strictly on a local machine without going over the
network?  We have to distinguish between what happens in the kernel with
message passing versus what happens with the networking...

	Robert.

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Wednesday, November 26, 2008 12:21 PM
To: technology-networking
Subject: Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison

> 
> > Here are the sources codes with which I tested. They're very simple,

> > not big deal.
> 
> Just had a peek at them - my only comment is that since your only 
> message size is 1024 bytes, you are really only testing (and 
> comparing) single-packet throughput.
> 
> I might suggest that you vary the size of the send for a more 
> comprehensive test, such as data sizes of:
> 
> 10    bytes - small user single packet
> 1200  bytes - big user single packet
> 4000  bytes - reasonable size chunk
> 8000  bytes - larger reasonable size chunk 16000 bytes - pretty big 
> size chunk 64000 bytes - really big size chunk
> 
> If you sweep the message size as above, you will get a much more 
> detailed comparison of io-net and io-pkt (and it's drivers!) and how 
> it transfers data for qnet applications.
> 
> --
> aboyd

Here's the comparison.

What could we say?

Thank you very much!

Regards,
Juan Manuel



_______________________________________________
Technology
http://community.qnx.com/sf/go/post17390
RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
20 percent for size 10 is a lot, must be the 3 assembler instructions they added, lol!

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: November-26-08 12:21 PM
To: technology-networking
Subject: Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison

> 
> > Here are the sources codes with which I tested. They're very simple, 
> > not big deal.
> 
> Just had a peek at them - my only comment is that since your only 
> message size is 1024 bytes, you are really only testing (and 
> comparing) single-packet throughput.
> 
> I might suggest that you vary the size of the send for a more 
> comprehensive test, such as data sizes of:
> 
> 10    bytes - small user single packet
> 1200  bytes - big user single packet
> 4000  bytes - reasonable size chunk
> 8000  bytes - larger reasonable size chunk 16000 bytes - pretty big 
> size chunk 64000 bytes - really big size chunk
> 
> If you sweep the message size as above, you will get a much more 
> detailed comparison of io-net and io-pkt (and it's drivers!) and how 
> it transfers data for qnet applications.
> 
> --
> aboyd

Here's the comparison.

What could we say?

Thank you very much!

Regards,
Juan Manuel



_______________________________________________
Technology
http://community.qnx.com/sf/go/post17390
Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Here's the complete table test results.

Regards,
Juan Manuel
Attachment: Excel variables_msgs_throughput.xls 42 KB
RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Is there any way that you could run devnp-speedo.so
on both machines, instead of one having a speedo,
and the other running the tigon?

You didn't mention your exact configuration in this
latest test, but it's possible that the 20% slowdown
on 10 byte packets might be caused by the thread switch 
on receive with the shim and io-pkt, if you are using 
the tigon driver.

IIRC there should not be a thread switch when a packet 
is received by io-net, for qnet.

--
aboyd
Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi, 

>> Is there any way that you could run devnp-speedo.so
>> on both machines, instead of one having a speedo,
>> and the other running the tigon?

mmm... I have to get another Intel NIC, maybe next week... 

>> We have to distinguish between what happens in the kernel with
>> message passing versus what happens with the networking... 
>> (Robert)

Meanwhile, I'll follow Robert's suggest in running the same test without networking in both OS. I'm running this test 
right now. Soon I will publish the results, so you can help me to understand...

>> You didn't mention your exact configuration in this
>> latest test, but it's possible that the 20% slowdown
>> on 10 byte packets might be caused by the thread switch 
>> on receive with the shim and io-pkt, if you are using 
>> the tigon driver.

>> IIRC there should not be a thread switch when a packet 
>> is received by io-net, for qnet.

I'm afraid it's not the case. The machine wich 'receives' the packet was running speedo (dev2 in pps), the other one was
 MsgSending (tigon). I could invert the roles. What do you think about it?

That was the question you were referring?

Thanks again!!
Juan Manuel
Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
>> I'm afraid it's not the case. The machine wich 'receives' the packet >> was running speedo (dev2 in pps), the other 
one was MsgSending >> (tigon). I could invert the roles. What do you think about it?

Hey! I did not say anything... the server has to receive the MsgReply too!!!
Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
The client... sorry.

time for a break :)
RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Right.  For a true 6.3 vs 6.4 test, you need to
be running a native 6.4 devnp-*.so driver on both
machines for the 6.4 test, because of the thread
switch by the shim during ANY received packets,
when you are running a devn-*.so io-net driver.

The "10 byte" test is a fascinating one - it 
might as well be one (or zero) bytes of user
data.  It exposes the interrupt, driver and
protocol passing, and kernel message passing
overhead.

It's not an artificial test by any means, 
because most of the traffic on a network is
bi-modal - it's either small packets, or
large packets.

6.3 does work pretty well though, doesn't
it?  I put an awful lot of effort into making
lwl4 qnet on io-net to work very reliably 
with good performance, with an emphasis on
reducing small packet overhead (typical customer 
use), not just high performance for large 
transactions.

--
aboyd
Re: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
>> The first thing that popped to my mind with this is what happens if
>> you do the test strictly on a local machine without going over the
>> network? We have to distinguish between what happens in the
>> kernel with message passing versus what happens with the
>> networking (Robert)

Here's the same server-client test when both, run in the same machine. I found this test very interesting. As I 
undestand, it's about message passing (same node) and context-switch efficiency of the kernel itself, isn't it?. 

>> An educated guess is that the 6.4 kernel has more feature to
>> support then 4.xx hence it might be slower… (Mario)

... doesn't seems to be correct (at least in my workbench test)

It The 6.4 kernel seems to be much more efficient than 6.3 kernel. Now I'm wondering why when the packet size is short 
(10 bytes) the better performance is slight, and as the message length is growing, the performance does to (and how!). 

It's seems like the context-switch overhead is almost similar in both kernels (short messages = more % of context-switch
 work, right?)
And with larger size message (less switching) 6.4 becomes more performant. It seems like data memmove from client to 
server address space were faster in 6.4. Just as if DMA work were optimized (it's sounds so strange) maybe you can give 
the right theory.

> Right.  For a true 6.3 vs 6.4 test, you need to
> be running a native 6.4 devnp-*.so driver on both
> machines for the 6.4 test, because of the thread
> switch by the shim during ANY received packets,
> when you are running a devn-*.so io-net driver.

So, returning to networking test, I have to avoid the shim. Right?

Regards,
Juan Manuel
Attachment: Excel msgs_send_receive_same_node.xls 41.5 KB
Re: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi, sorry... did you see my last post? It has the results of the test we were talking about, but in the same node (not 
networking) just message passing and context-switch benchmark. But I still  have some doubts!

Thank you very much!!

Regards,
Juan Manuel
RE: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> did you see my last post? 

Yup!  I was very impressed with the message passing
speed (local) of 6.4 vs 6.3 - to honour the kernel
group's accomplishment in this regard, I will stop 
stealing their beer for 30 days.

And yes, for a "true" 6.4 test, you need to get rid
of the shim (and 6.3 io-net drivers) on both machines!

--
aboyd
Re: RE: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
The only thing I don't understand yet, is how can a simple memmove (this is what kernel does, isn't it?) be MUCH faster 
in 6.4 kernel?

Thanks!
RE: RE: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Kernel does much more,  context switch, change of virtual memory mapping.  That being said you`d be surprise at the 
tuning you can do inside a memmove/memcpy...

> -----Original Message-----
> From: Juan Manuel Placco [mailto:community-noreply@qnx.com]
> Sent: December-03-08 12:39 PM
> To: technology-networking
> Subject: Re: RE: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison
> 
> The only thing I don't understand yet, is how can a simple memmove
> (this is what kernel does, isn't it?) be MUCH faster in 6.4 kernel?
> 
> Thanks!
> 
> 
> _______________________________________________
> Technology
> http://community.qnx.com/sf/go/post17860
> 
QNX 6.4 - QNX 6.3 Comparison  
I'm a bit surprised that the comparison shows that much improvement with
large message transfer sizes as well.  I would have expected the
improvements to be most noted for small messages (in which the kernel
overhead dominates the message pass) as opposed to the large messages
(which should be dominated by the actual time to do the copy).  I think
that you might want to post this information in one of the forums on the
OS project to get a better explanation.  I'm not sure of the kernel
optimizations which were introduced in 6.4.0 which would affect message
passing.

	Robert.

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Wednesday, December 03, 2008 12:39 PM
To: technology-networking
Subject: Re: RE: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison

The only thing I don't understand yet, is how can a simple memmove (this
is what kernel does, isn't it?) be MUCH faster in 6.4 kernel?

Thanks!


_______________________________________________
Technology
http://community.qnx.com/sf/go/post17860
Re: QNX 6.4 - QNX 6.3 Comparison  
Yes Robert, I'm surprised too, and I was expecting the same conclusions you mention. Mario, I was in the idea that a 
memmove is a memmove (almost an assembly level function and DMA's task)

Thanks very much for your answers!!

Regards,
Juan Manuel
RE: QNX 6.4 - QNX 6.3 Comparison  
Memcopy is NOT a dma task, however there are lots of method to do it. Intel has a few pages on the subject memmove, for 
example some can use SSEx instructions/registers!!

> -----Original Message-----
> From: Juan Manuel Placco [mailto:community-noreply@qnx.com]
> Sent: December-03-08 12:55 PM
> To: technology-networking
> Subject: Re: QNX 6.4 - QNX 6.3 Comparison
> 
> Yes Robert, I'm surprised too, and I was expecting the same conclusions
> you mention. Mario, I was in the idea that a memmove is a memmove
> (almost an assembly level function and DMA's task)
> 
> Thanks very much for your answers!!
> 
> Regards,
> Juan Manuel
> 
> 
> _______________________________________________
> Technology
> http://community.qnx.com/sf/go/post17863
> 
RE: QNX 6.4 - QNX 6.3 Comparison  
Hi Juan:

	I finally got around to looking through your test code and there
are problems in there with the way that you're doing your timing
calculation in the client.

The resolution of the internal clock is usually set to 1 ms, so if your
single msg send takes less than this amount of time to run, then you'll
end up with invalid timing results.  Instead of doing your timing check
around the single message send and then summing the results together in
your main function (totmsg += mseg), you need to do the timing
comparison around your "for (i = 0; i < cant_retries; i++)" loop to get
the total time.  And you need to make absolutely sure that the number of
retries that you pass in gives you a good amount of time in order for
the timing results to be valid.

Also, the server side doesn't properly handle the network message case.
From the docs for MsgReceive:

"In a local message pass, the kernel would ordinarily limit the size of
the transfer to the minimum of both sizes. But in the networked case,
the message is received by the client's lsm-qnet.so into its own private
buffers and then sent via transport to the remote lsm-qnet.so. Since the
size of the server's receive data area can't be known in advance by the
client's lsm-qnet.so when the message is sent, only a fixed maximum size
(currently 8 KB) message is transferred between the client and the
server. "

(See the sample code for how this should be handled).


	Robert.


 

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Wednesday, December 03, 2008 12:55 PM
To: technology-networking
Subject: Re: QNX 6.4 - QNX 6.3 Comparison

Yes Robert, I'm surprised too, and I was expecting the same conclusions
you mention. Mario, I was in the idea that a memmove is a memmove
(almost an assembly level function and DMA's task)

Thanks very much for your answers!!

Regards,
Juan Manuel


_______________________________________________
Technology
http://community.qnx.com/sf/go/post17863
Re: RE: QNX 6.4 - QNX 6.3 Comparison  
> Hi Juan:
> 
> 	I finally got around to looking through your test code and there
> are problems in there with the way that you're doing your timing
> calculation in the client.
> 
> The resolution of the internal clock is usually set to 1 ms, so if your
> single msg send takes less than this amount of time to run, then you'll
> end up with invalid timing results.  Instead of doing your timing check
> around the single message send and then summing the results together in
> your main function (totmsg += mseg), you need to do the timing
> comparison around your "for (i = 0; i < cant_retries; i++)" loop to get
> the total time.  And you need to make absolutely sure that the number of
> retries that you pass in gives you a good amount of time in order for
> the timing results to be valid.
>
> 	Robert.

Thanks Robert for take your time to answer me... but... humm... wait, please...

>>  Instead of doing your timing check around the single message send

I'm not measuring a single message time... I think... Look,

In 'send_msgs' funtion I send lot of messages!! (cant_msgs = 5000 to 100000)

mseg = send_msgs ( cant_msgs, mensaje );
totmseg += mseg;

I'm totalizing the amount of time in the loop inside 'send_msgs'. Look, this is 'send_msgs' function...

	// Arranco a contar tiempo	
    ftime ( &time_ini );
    stime_ini = ctime ( &time_ini.time );
 
	for ( i=0; i< cant_msg; i++ )
	{
		ret = MsgSend ( _connect_id, mensaje, strlen(mensaje)+1, reply_msg, sizeof(reply_msg) );
		
		if ( ret < 0 )
		{ 
		    printf("Error in MsgSend errno=[%d] - '%s' (ret=%d)\n", errno, strerror ( errno ), ret );
		}
	}

	// Termino de contar tiempo
    ftime ( &time_fin );
    stime_fin = ctime ( &time_fin.time );

	return ( difftimeb (time_fin, time_ini) );

And 'cant_msg' is big enought. 'cant_msg' is, much more bigger than 'cant_retries'. In fact, I could avoid 
'cant_retries' loop at all. This just was a simple (and innocuous) idea to have more 'samples' of the same test to 
calculate an average. The 'REAL' loop is the one I show you before inside the function 'send_msgs' ... for ( i=0; i< 
cant_msg; i++ ) ... 'cant_msg' values varies from 5000 to 10000!!.. while 'cant_retries' was fixed to 10. Even I though 
to let cant_retries equal to just 1 or not make THAT loop at all.

I could be confused, sorry, but I'm calculating the time to send at least 5000 messages!! and as the test goes on, this 
loop reaches values of 100000 messages. And I start to count time before the 1st msg and stop after de 5000 or 100000th.
.. 
After that I have the other (and maybe obsolete) loop, to average 10 times the same 5000 or 100000 msg test...

Please, let me know if I confused, but I think 5000 messages is enought to totalize, isn't? Do you think, I have to send
 more than 5000 messages to have a good result?

> Also, the server side doesn't properly handle the network message case.
> From the docs for MsgReceive:
> 
> "In a local message pass, the kernel would ordinarily limit the size of
> the transfer to the minimum of both sizes. But in the networked case,
> the message is received by the client's lsm-qnet.so into its own private
> buffers and then sent via transport to the remote lsm-qnet.so. Since the
> size of the server's receive data area can't be known in advance by the
> client's lsm-qnet.so when the message is sent, only a fixed maximum size
> (currently 8 KB) message is transferred between the client and the
> server. "
> 
> (See the sample code for how this should be handled).

My sended messages were of 1K exactly (< 8K), so I supposed that I didn't have to worry about it. Is this wrong?

Thank you very much again, and please, let me know your opinions.

Regards, 
Juan Manuel
RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi Juan:
	Missing out on the command line would certainly have led to part
of the confusion :->>.  From running the code on my machine, 1000
iterations is not enough, 5000 iterations and up are probably OK
(although you should also make sure that you're running the test at a
very high priority to make sure that other system processes aren't
pre-empting the test).

OK...  So what I was REALLY looking for was the code that you used to do
the message size comparisons locally.  My preliminary tests showed very
little difference between 6.3.2 and 6.4.0.

	R.


-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Thursday, December 04, 2008 4:03 PM
To: technology-networking
Subject: Re: RE: QNX 6.4 - QNX 6.3 Comparison

> Hi Juan:
> 
> 	I finally got around to looking through your test code and there
are 
> problems in there with the way that you're doing your timing 
> calculation in the client.
> 
> The resolution of the internal clock is usually set to 1 ms, so if 
> your single msg send takes less than this amount of time to run, then 
> you'll end up with invalid timing results.  Instead of doing your 
> timing check around the single message send and then summing the 
> results together in your main function (totmsg += mseg), you need to 
> do the timing comparison around your "for (i = 0; i < cant_retries; 
> i++)" loop to get the total time.  And you need to make absolutely 
> sure that the number of retries that you pass in gives you a good 
> amount of time in order for the timing results to be valid.
>
> 	Robert.

Thanks Robert for take your time to answer me... but... humm... wait,
please...

>>  Instead of doing your timing check around the single message send

I'm not measuring a single message time... I think... Look,

In 'send_msgs' funtion I send lot of messages!! (cant_msgs = 5000 to
100000)

mseg = send_msgs ( cant_msgs, mensaje ); totmseg += mseg;

I'm totalizing the amount of time in the loop inside 'send_msgs'. Look,
this is 'send_msgs' function...

	// Arranco a contar tiempo	
    ftime ( &time_ini );
    stime_ini = ctime ( &time_ini.time );
 
	for ( i=0; i< cant_msg; i++ )
	{
		ret = MsgSend ( _connect_id, mensaje, strlen(mensaje)+1,
reply_msg, sizeof(reply_msg) );
		
		if ( ret < 0 )
		{ 
		    printf("Error in MsgSend errno=[%d] - '%s'
(ret=%d)\n", errno, strerror ( errno ), ret );
		}
	}

	// Termino de contar tiempo
    ftime ( &time_fin );
    stime_fin = ctime ( &time_fin.time );

	return ( difftimeb (time_fin, time_ini) );

And 'cant_msg' is big enought. 'cant_msg' is, much more bigger than
'cant_retries'. In fact, I could avoid 'cant_retries' loop at all. This
just was a simple (and innocuous) idea to have more 'samples' of the
same test to calculate an average. The 'REAL' loop is the one I show you
before inside the function 'send_msgs' ... for ( i=0; i< cant_msg; i++ )
... 'cant_msg' values varies from 5000 to 10000!!.. while 'cant_retries'
was fixed to 10. Even I though to let cant_retries equal to just 1 or
not make THAT loop at all.

I could be confused, sorry, but I'm calculating the time to send at
least 5000 messages!! and as the test goes on, this loop reaches values
of 100000 messages. And I start to count time before the 1st msg and
stop after de 5000 or 100000th... 
After that I have the other (and maybe obsolete) loop, to average 10
times the same 5000 or 100000 msg test...

Please, let me know if I confused, but I think 5000 messages is enought
to totalize, isn't? Do you think, I have to send more than 5000 messages
to have a good result?

> Also, the server side doesn't properly handle the network message
case.
> From the docs for MsgReceive:
> 
> "In a local message pass, the kernel would ordinarily limit the size 
> of the transfer to the minimum of both...
View Full Message
Re: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
>> My preliminary tests showed very little 
>> difference between 6.3.2 and 6.4.0.

SO... This was longer as I thought :) sorry. But there're still some little things rounding my head. Let'see if I can 
get just one final idea. Please.

For 1024 bytes local messages I have aprox 17% "more efficient" in 6.4. 

But again, for longer messages the difference is HUGE (better in 6.4!!)

But why SO HUGE? (and we must agree that is a VERY good thing!)... But just, I want to know why? 

This are the numbers (always with more than 5000 msg, look at the excel file): (We're talking again about message 
passing-same node).

Bytes	"QNX 6.4 Better performance than 6.3 [%]"
10	3.90
1200	26.28
4000	63.67
8000	83.78
16000	89.92
64000	92.64   ( WOW !!!!)

COULD THIS BE CORRECT?

Please... Take a little time to look at this numbers again, here I re-post the excel file.

AND REALLY THANK YOU !!!!!!

Regards,
Juan Manuel
Attachment: Text msgs_send_receive_same_node.xls 41.5 KB
RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi Juan:
	I need to see the code that you used for testing longer messages
in order to be able to comment.

	Robert. 

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Friday, December 05, 2008 1:20 PM
To: technology-networking
Subject: Re: RE: RE: QNX 6.4 - QNX 6.3 Comparison

>> My preliminary tests showed very little difference between 6.3.2 and 
>> 6.4.0.

SO... This was longer as I thought :) sorry. But there're still some
little things rounding my head. Let'see if I can get just one final
idea. Please.

For 1024 bytes local messages I have aprox 17% "more efficient" in 6.4. 

But again, for longer messages the difference is HUGE (better in 6.4!!)

But why SO HUGE? (and we must agree that is a VERY good thing!)... But
just, I want to know why? 

This are the numbers (always with more than 5000 msg, look at the excel
file): (We're talking again about message passing-same node).

Bytes	"QNX 6.4 Better performance than 6.3 [%]"
10	3.90
1200	26.28
4000	63.67
8000	83.78
16000	89.92
64000	92.64   ( WOW !!!!)

COULD THIS BE CORRECT?

Please... Take a little time to look at this numbers again, here I
re-post the excel file.

AND REALLY THANK YOU !!!!!!

Regards,
Juan Manuel


_______________________________________________
Technology
http://community.qnx.com/sf/go/post18040
Re: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Ok, Robert, here it is.

The differences with the previous are:

1) Another loop to change the message size (10, 1200, and so on...)
2) Using variable type: char mensaje [64000];
3) In order to use strlen() when sending, I truncate with '\0' the message at the desired lenght. Then I pass 
'strlen(mensaje)+1' to MsgSend function's 3rd arg.
4) Apart from that, is the same code.

5) Ah. A big one!... I corrected the -m usage to 'number of messages to send' as hp suggested. :-)

Thank you!

Regards,
Juan Manuel
Attachment: Text networking_2.tgz 3.02 KB
RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi:
	I've managed to take a quick look at this and I seem to be
getting similar results to you.  I THINK that at least part of this
large difference is compiler related.

If you compile the binaries under 6.3.2 and run them on 6.4, they
produce the same results as running them on 6.3.2.  Use a 6.4 compiled
binary for either the server or the client and you'll see that the
results improve.

I'm not quite sure what this means.  The funny thing is that when I
specified optimization levels with 6.3.2 (e.g. -O3 and -O2), the results
got worse rather than better.

Can you confirm?


   Robert.


 

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Friday, December 05, 2008 5:20 PM
To: technology-networking
Subject: Re: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison

Ok, Robert, here it is.

The differences with the previous are:

1) Another loop to change the message size (10, 1200, and so on...)
2) Using variable type: char mensaje [64000];
3) In order to use strlen() when sending, I truncate with '\0' the
message at the desired lenght. Then I pass 'strlen(mensaje)+1' to
MsgSend function's 3rd arg.
4) Apart from that, is the same code.

5) Ah. A big one!... I corrected the -m usage to 'number of messages to
send' as hp suggested. :-)

Thank you!

Regards,
Juan Manuel


_______________________________________________
Technology
http://community.qnx.com/sf/go/post18061
Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Humm... I see.... very interesting...
I was waiting this answer anxiously

BTW... I'm flying to Argentina right now, but you can be sure I'll check this again when I return (to Mexico), on early 
january, God willing.

Thank you very much Robert, and...

"Merry Christmas for you and Foundry27 community!!"

And thank everyone for the support. You are awesome !!!

I learned A LOT from all of you. Thank you !! 

Regards,
Juan Manuel
Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> Hi:
> 	I've managed to take a quick look at this and I seem to be
> getting similar results to you.  I THINK that at least part of this
> large difference is compiler related.
> 
> If you compile the binaries under 6.3.2 and run them on 6.4, they
> produce the same results as running them on 6.3.2.  Use a 6.4 compiled
> binary for either the server or the client and you'll see that the
> results improve.
> 
> I'm not quite sure what this means.  The funny thing is that when I
> specified optimization levels with 6.3.2 (e.g. -O3 and -O2), the results
> got worse rather than better.
> 
> Can you confirm?
> 

Hi again. At last I could make me the time to continue with this test! 

The pending question was: to compile the binaries in 6.3 and run them on 6.4 and see what happens. That is what I did.

The results are in the increasingly complex attached Excel file :) (I'm sure you can go directly to the BLUE bar graph 
at the end)

Ok, as I see "for messages > 1200 bytes":

1) The same code (6.3 compiled binary) run faster in 6.4 than in 6.3, so it can be that 6.4 kernel is faster, because 
the code is the same. Right?

2) The 6.3 compiled binary running on 6.4 is slower than 6.4 binary compiled and also running on 6.4. So the code was 
optimized too. Right?

So, we can say both ("for msgs >1200 bytes"): 

* 6.4 kernel is faster than 6.3
* 6.4 compiled code is faster (an much smaller) than 6.3

Do you agree with these first conclutions?

BUT !!
---------

Why the results "for messages < 1200" are not the same? This confuses me with the previous conclusions, because in small
 msgs, the context-switch overhead is heavier... So the context-switch (kernel) is slower in this case? Who can it be?

Is not so simple, but I need to understand what is going on...

Please, I will greatly appreciate your own conclusions about this..

Thank you in advance!!!

Regards,
Juan Manuel


Attachment: Excel msgs_send_receive_same_node_2.xls 64.5 KB
RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
OK...  My head is spinning with all of those numbers :>

Let me see if I can summarise your question...

Running a 6.4 binary on 6.4 is always faster than the 6.3 version at all
times.

When you compare running the 6.3 binary on 6.4 with running the 6.3
binary on 6.3, for all cases EXCEPT the 10 byte case,  a performance
increase is seen.  For the 10 byte case, a performance decrease is seen.
Why?

I'll wait and see if that's the question before I try to answer :>.

	Robert.



-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Tuesday, January 27, 2009 6:07 PM
To: technology-networking
Subject: Re: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison

> Hi:
> 	I've managed to take a quick look at this and I seem to be
getting 
> similar results to you.  I THINK that at least part of this large 
> difference is compiler related.
> 
> If you compile the binaries under 6.3.2 and run them on 6.4, they 
> produce the same results as running them on 6.3.2.  Use a 6.4 compiled

> binary for either the server or the client and you'll see that the 
> results improve.
> 
> I'm not quite sure what this means.  The funny thing is that when I 
> specified optimization levels with 6.3.2 (e.g. -O3 and -O2), the 
> results got worse rather than better.
> 
> Can you confirm?
> 

Hi again. At last I could make me the time to continue with this test! 

The pending question was: to compile the binaries in 6.3 and run them on
6.4 and see what happens. That is what I did.

The results are in the increasingly complex attached Excel file :) (I'm
sure you can go directly to the BLUE bar graph at the end)

Ok, as I see "for messages > 1200 bytes":

1) The same code (6.3 compiled binary) run faster in 6.4 than in 6.3, so
it can be that 6.4 kernel is faster, because the code is the same.
Right?

2) The 6.3 compiled binary running on 6.4 is slower than 6.4 binary
compiled and also running on 6.4. So the code was optimized too. Right?

So, we can say both ("for msgs >1200 bytes"): 

* 6.4 kernel is faster than 6.3
* 6.4 compiled code is faster (an much smaller) than 6.3

Do you agree with these first conclutions?

BUT !!
---------

Why the results "for messages < 1200" are not the same? This confuses me
with the previous conclusions, because in small msgs, the context-switch
overhead is heavier... So the context-switch (kernel) is slower in this
case? Who can it be?

Is not so simple, but I need to understand what is going on...

Please, I will greatly appreciate your own conclusions about this..

Thank you in advance!!!

Regards,
Juan Manuel




_______________________________________________
Technology
http://community.qnx.com/sf/go/post20891
Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
>>Let me see if I can summarise your question...
>>
>>Running a 6.4 binary on 6.4 is always faster than the 6.3 version at all
>>times.
>>
>> When you compare running the 6.3 binary on 6.4 with running the
>> 6.3 binary on 6.3, for all cases EXCEPT the 10 byte case,  a
>> performance increase is seen.  For the 10 byte case, a performance
>> decrease is seen. Why?

>> I'll wait and see if that's the question before I try to answer :>.

Hi Robert!

I delay my answer to do ALL this tests again in order to be totally sure

That is EXACTLY what is happening. The question is why? To what conclusions can we arrive?

Thank you in advance!

Regards,
Juan Manuel
Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Hi... is there any news about this topic?

Thank you!!

Juan Manuel
RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
Ummm... I thought in your last posting you mentioned:

"I delay my answer to do ALL this tests again in order to be totally
sure "

So I was waiting for you to confirm your results (?)

I have to admit that I'm floundering on this one.  Without some
extensive profiling (of system and application)
I'd only be making speculative guesses.  Maybe this is one that would be
best asked in the OS forums?

	R.

-----Original Message-----
From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
Sent: Tuesday, February 03, 2009 6:15 PM
To: technology-networking
Subject: Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison

Hi... is there any news about this topic?

Thank you!!

Juan Manuel


_______________________________________________
Technology
http://community.qnx.com/sf/go/post21370
Re: RE: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison  
> Ummm... I thought in your last posting you mentioned:
> 
> "I delay my answer to do ALL this tests again in order to be totally
> sure "
> 
> So I was waiting for you to confirm your results (?)
> 
> I have to admit that I'm floundering on this one.  Without some
> extensive profiling (of system and application)
> I'd only be making speculative guesses.  Maybe this is one that would be
> best asked in the OS forums?
> 
> 	R.
> 
> -----Original Message-----
> From: Juan Manuel Placco [mailto:community-noreply@qnx.com] 
> Sent: Tuesday, February 03, 2009 6:15 PM
> To: technology-networking
> Subject: Re: RE: RE: RE: RE: RE: QNX 6.4 - QNX 6.3 Comparison
> 
> Hi... is there any news about this topic?
> 
> Thank you!!
> 
> Juan Manuel
> 
> 
> _______________________________________________
> Technology
> http://community.qnx.com/sf/go/post21370


Hi Robert, thank you very much for the anwer.

Yes... You are right but I've already tried once in the OS forum, but with less lucky than here :), a much worst 
response time :)

Anyway, if you have a feeling, I'am sure it will be better than mines, so I would be extremely grateful to have your 
opinion. 

The question is exactly what you summarised in last post.

>> Let me see if I can summarise your question...

>> Running a 6.4 binary on 6.4 is always faster than the 6.3 version at
>> all times.

>> When you compare running the 6.3 binary on 6.4 with running 
>> the 6.3 binary on 6.3, for all cases EXCEPT the 10 byte case,  
>> a performance increase is seen.  For the 10 byte case, 
>> a performance decrease is seen. Why?

>> I'll wait and see if that's the question before I try to answer :>.

>>	Robert.

The answer is YES. 

BUT, if you think the only way is to re-post to the OS Forum, just let me know...

Thank you in advance, Robert. 

Regards,
Juan Manuel