QNX Neutrino 6.2 performance

Hi All,

I would like to know how can I maximize the QNX Neutrino 6.2 performance. I will be appreciative for your help.

Thanks,
Zsolt

Hum, that’s too generic a question. What “performance” are you looking at?

Networking, graphics, process speed, memory foot print, networking, boot time, image size, performance of custom application, compile time, OpenGL? What is the machine for? What trade off are you prepare to do.

I am looking at process speed and performance of custom application. The machine is a Celeron 1.3GHz, 128MBytes RAM, 256Kbytes Cache. I have been running an implementation of a Fuzzy Multi-layer Perceptron since QNX has been installed, but the process is too slow. I would like to improve QNX performance to run it faster.

Same problem… I don’t know what isn’t fast enough for your process (boy people some time makes it really hard to help, lol, imagine yourself going to the doctor and saying doctor I don’t feel good please make me feel better) Is it disk access slowing down the process, is it graphic, is it displaying too much text on console, etc. You also don’t say how much performance increase you need, 5%, 10%, 100%, 200%, etc.

I’ll take a stab in the dark here. For a process to be a fast as possible it has to do as little IO as possible (no file, no graphic, no printf etc…). It should be compile with optimisation flag, -O3 does usually a good job but some more fine tuning is possible. Also in general stay away from using floating point , second best is to use float instead of double if possible.

Try version 2.9 and 3.3 of GCC (assuming you have 6.4). Also if budget allows get the intel compiler.

Usually you will get best increase in performance by improving your algorithm.

When all fails, get a faster CPU. In may case a Pentium III 1G will give better performance then a Celeron 1.3G. (I’m assuming you Celeron is of PIII and not P4).

Hello.

I must add that I have notice a decrease in the performance when porting from QNX4 to QNX6.

In my case, I have several processes running altogether. Under QNX4, everything goes alright and smoothly. but when porting the source code
to QNX6 by following the migration guidelines I was surprise because everything last longer than before.

The algorithms are the same, and the source code is more or less the same but dealing with the new IPC and the new network protocol (QNET).

Moreover, the processes under QNX4 are running in an Intel Pentium III 550 MHz machine, since the processes under QNX6 run in an Intel Pentium IV 2.4MHz machine.

So, which could be the factor that makes the performace worst under QNX6? The machine is quite better, the algorithms are the same, and only the kernel primitives have changed.

Finally, just mention that the phrelay performance is quite worst under QNX6 and I don’t understand.

Just mention that I’m using QNX 6.2.1.

regards
Jose

6.3 will improved qnet performance greatly. There was some optimisation done with phrelay/phindows in 6.3 as well.

Note that P4 familly of processor sucks under heaving thread/process switching because of the deep pipeline.

In your case bishmilla unless you are done a LOT of messaging, kernel performance isn’t much of an issue (yes QNX6 is slower then QNX4 but it does more). My bet would be the compiler, on some type of code Watcom was very very good. I heard 3.3 that comes with 6.3 is better (haven’t evaluate that myself)

The filesystem performance of 6.3.0 Momentics install is much improved as well. This is due to package filesystem no longer being used.

I suppose QNX 6.3 solves serval problems (I’ve taken a look at the QNX papers about the improvements of the new release) but since I’ve got my source code migrated to QNX 6.2.1, which could be the impact if I only compile it under QNX 6.3?

I know several things (even IPC) have changed or are new (experimental mechanism or the name server), and I’m affraid unexpected behaviours could appear.

I’m not so confident about this new version unless I would make big changes. Am I right?

My process exchange lot of messages between them and with other process in other nodes. My system is composed of up to 5 nodes, and it’s very hard to tune it depending on the kernel primitives response.

What do you recommend me? Try to use a better compiler for the QNX 6.2.1? I’ve heard of the Intel C++ compiler (my code is written in C but I suppose that compiler would fit) or the one you told me, the 3.3.

Many thanks
regards
José

3.3 isn’t available with 6.2.1. As for Intel yes it might be worth a shoot but again I don’t think it’s available with 6.2.1 anymore (i may have been).

If your product value can benefit from better performance then yes I guess it’s worth the upgrade.

As far as the experimental stuff well it’s new stuff anyway so your code isn’t using that anyway. As far as I know IPC available in 6.2.1 is the same under 6.3.