SMP problem

I have an Intel Server Board SE7505VB2 with two Xeon processors running at 2.8Ghz with Hyperthreading enabled and 1Gb of memory. I installed QNX 6.2.1B and everything works well.

But when I try to change to the SMP kernel, (by using
cp /boot/fs/qnxbasesmp.ifs /.boot reboot) I can only get the login screen, and then the computer locks up. In some cases i can use it for about 1 minute and then it hangs.

I need to get it running with the two processors, any idea?

It sounds like you have a driver which is not as SMP capable as someone would like to think.

Some thoughts…

Try switching to 6.3 - it is newer, but perhaps doesn’t have the same SMP bug - I know the video driver I used on one SMP machine had weird hickups - I switched video cards and the problems went away.

Try not running photon - just go into text mode. It reduces the number of potential problem drivers and may help identify the problem.


I hope you do realise that creates four apparent processors! You might want to try turning off hyperthreading. Afaik, the default smp build with the 6.2.1 install only likes to talk to two processors.

No, I have run it on 4 (real) processors without issue - I bought a used Netfinity 7000 quad ppro 200 machine on ebay for $300 just so I could play with it… :slight_smile:



Finally I could make it work, I don’t know if it’s really stable 'cause today I have no time to test it. Here is the procedure I used, hope it’s usefull for someone:

  1. Installed QNX Neutrino 6.2.1
  2. Run Installer to get professional Edition
  3. Change video driver to use VESA instead of Rage
  4. Install Patch B
  5. Run mkifs -v /boot/build/ smp.ifs
  6. Copy the ifs to .boot
  7. Reboot

Now I can see the four processors (2 of them due to hyperthreading), and I have ran Mozilla and Phab for about one hour without any problem (except for the annoying VESA driver)

I will write my results when I have enough time to test the computer.


Unfortunately QNX6 isn’t Hyperthreading aware. The virtual processor get the same weight as the real processor, which could hurt performance.

Virtual process usually give around 10% boost in performance, while real processor give a LOT more then that. I don’t know of any way in QNX6 to prioritized the processor.

I’m guessing the numbering is;
1 CPU 1
2 CPU 1 Virtual
3 CPU 2
4 CPU 2 Virtual

In case of two processes asking for CPU time it would be MUCH faster to use 1 and 3 (or 2 and 4 ) then to use 1 and 2 or 3 or 4…

I think you should benchmark you application with and without hyperthreading.

Actually, I belive it is HT aware. It will attempt to keep threads on the same physical CPU to limit cache flushes, etc.

With QNX 6.2.1 I never got an stable configuration, I guess the problem is a bug in a driver of a “really needed” device, because I tried different configurations leaving only the essential parts to boot in SMP, and still got the same problem.

After a lot of changes in configuration, and having written like forty different boot scripts, I decided to upgrade to QNX 6.3. Now everything works as expected, even with the default SMP kernel. :smiley: