QNX 6.5 Plagued by Performance Problems

Tonight, I installed QNX 6.5 on my new PC that I bought just a few weeks ago. It isn’t top of the line, but it’s more than adequate for daily Internet and office stuff, and even a little gaming and compiling. And while I know that QNX isn’t the fastest operating system in the world due to its realtime nature, I was more than a little underwhelmed by its performance—especially for development.

First things first, it took a good 30 minutes to install. Now don’t get me wrong, I’m a patient guy, especially when dealing with things like AIX or Solaris. But Windows 7, which is easily ten times the size of QNX, installs in the same amount of time. Unless the install packages are compressed with some new, ultra-complex algorithm that a second-generation Core i5 can’t handle, there’s no excuse for this. I suspect that QSS has simply neglected to enhance its install routine beyond i386.

Once it booted, QNX thought that it was running on a 1.4 GHz Pentium III. Except that I’m running a 2.5 GHz Intel Core i5-2405S. I can’t imagine what kind of chip I’d have to run to make QNX think it was running faster than 2 GHz. There’s no emulation going on, so am I missing something? Or have the QNX’s developers only done enough to get QNX to run on new hardware but not actually recognize it? Between QNX’s inability to recognize a processor and the slow install process, there doesn’t seem to be a whole lot of optimization going on with this operating system.

I’ll forego commenting on QNX’s bare-bones user interface, minimal unix utility support, and its outdated apps and just get into daily usage performance. Reading email and browsing the web—when not challenged by a lack of support for the latest web technologies—are all fairly fast. I would never call QNX a racehorse, but playing MP3s while checking news in the morning runs fairly smoothly. Just remember to visit websites that don’t depend on Flash, HTML5, or CSS3 and you’re good to go. But so much for the mundane, end-user stuff.

What we’re all really interested in is development, since QNX has only been really been offered for the last decade as a development platform for itself. Hence my new Core i5 system, hence the outdated end-user apps, hence the slow crawl between QNX 6.4 and QNX 6.5. Anyway, I digress. Programming for QNX is one thing: it’s small, efficient, and pervasively customizable. Don’t like the TCP/IP stack? Write one yourself and run it. It’s all modular, and all the Neutrino kernel does is boot and pass messages.

But in the end we all have to compile these bright ideas, and this is where QNX development falls down. The QNX Momentics development suite performance is terrible. I mean downright slow, like a confused snail in the middle of an ice-age. Every chance you make to a project takes forever to write, and, relatively speaking, compiling takes forever. The sad fact about this is that nothing has changed in this department since QNX 6.4, or QNX 6.3, or… Well, you get it.

Hardware companies are constantly putting faster chips and QNX always seems to lag the same on them. This blows my mind, because this means that they’re either making changes that chew up performance but offer no new features, or that there is something inherently wrong with QNX that negates faster performance per clock.

This would be like Windows XP running the same on a Pentium as it would on a Pentium 4. So I have to guess in the end that while QSS might be changing QNX version numbers, what we’re essentially getting is the same operating system with updated drivers. In the very least, there aren’t any new end-user or developer features.

Now here’s the kicker: we’ve all seen RiM consolidating its operating systems into QNX with BBX. Why not bring some of that to the base QNX development platform so we can pretend that we’re at least in the 21st century? We could benefit from a spectacular interface competitive with Mac OS X/iOS nexus and, presumably, some tweaked hardware support. QSS did this in the late Nineties while building a QNX-based Amiga OS and came out with its first desktopable operating system. Why not bring some of the development from BlackBerry back into the fold?

I hate to be negative, but as a service to other serious computer users out there, don’t install QNX 6.5 unless you already depend on QNX and want to make sure you have whatever relevant updates it might include. You won’t get a performance boost, and you don’t get any modern technology. We should probably be running something called QNX 6.3.8 instead of 6.5; it’s just some tweaking to the same old thing instead of actual steps forward with features and hardware support.

Unless this new RiM-owned QSS will do things differently than the last few incarnations of the company, we’ll some platform-specific development kits and really awesome new devices without any of it filtering back into QNX itself. Oh well. If QNX 6.6 doesn’t do it, maybe the inevitable 64-bit kernel rewrite will.

“From your mouth to God’s ears!”

Well while we’re on the subject, I’d like to talk about Toyota.

You see their current cars are not really top of the line. They are very slow. To begin with, it took me a long time to buy one. I was waiting at the dealer for hours. Well it’s ok for day to day stuff, like tooling around town, and some highway driving, but it doesn’t have the latest stuff, like a rear spoiler or a supercharger on the engine. The performance is just not anything like my Maserati.

They really haven’t upgraded much either in the last decade. They still have that out of date wheel thingy to steer with. They don’t drive themselves or even just automatically avoid collisions. And you have to keeping putting is gas, unlike my Chevy Volt.

But the real problem is space. It just doesn’t carry the load that my 18 wheeler has. You have to put a trailer on the back if you’re moving and then you can’t load it up very much or it slows down even more.

They’re really not good cars, I recommend you avoid them.

There, well I’m glad I got that off my chest.

LOL, what kind of posting is that? New forum member, 1 post, and then this kind of ranting?

Don’t you know that in recent independent performance benchmarking, it was found that QNX has more than 4 times better interrupt latency than Linux? On the same hardware! That’s speed, man!

qnx.com/products/neutrino-rt … ation.html

But unfortunately was beaten by “Maximum sustained interrupt frequency” of Windows CE7, which is very close to the QNX performance.
Again according to the same source. I would like to keep it quite.
Yep, looks like Toyota story is very relevant!!!

Yeah! Those MicroSoft products are so well known for their high quality, and trouble free operation. I’m going to go get one as soon as I unload my Toyota.

I think the original poster is confused about some things.

QNX was never intended to be used as a desktop OS, so I’m not sure what you’re trying to accomplish. The UI will most likely NEVER be updated to be as pretty as MacOSX. Anyone who’s interested in QNX is interested in it for it’s reliable realtime nature. If it didn’t have that, it would be just another POSIX system. If all you want is a POSIX system, install Linux or BSD.

It’s usually enterprises that are interested in QNX, and usually interested in the Neutrino kernel and some low level services. The entire UI is usually provided by the customer. In addition, most enterprises that license the kernel and core services also perform custom modifications to optimize for the specific task they’re performing. This, for example, is what Cisco does with it’s iOS to provide ultra-low latency routers. The combination of microkernel and extremely modular design allows for great flexibility that even linux can’t provide (and remember, QNX does it at runtime, linux usually needs to do this at compile time).

The person who gave the Toyota example is simply trying to make the following analogy: using QNX for Flash or gaming is like using a Toyota for racing or transporting bulk goods. It simply wasn’t designed for that, and neither was QNX. Ofcourse, QNX CAN do those things (it provides a POSIX interface, after all). You just won’t get it out of the box from QNX. You’d have to use a QNX-based 3rd party system, such as PlayBook’s BBX.

Another error in your comparison is comparing QNX to Linux. Linux is just a kernel. For that comparison to make sense, you should compare Linux to Neutrino. If, instead, you want to compare the two operating systems, you should compare QNX OS to a Linux-based OS (e.g. Ubuntu). That’s a better comparison, but still not fair, since Ubuntu is just “packaged” by Canonical, but developed by thousands of people. Expecting QNX to implement ALL the things that the open-source community has developed for Linux-based OSs just isn’t realistic.

You should also keep in mind, that, when considering the speed of QNX, “process priority” is a much more important factor than it is on, say, Linux or Windows. In Linux, if you have process A, which is fully using the CPU and is 9 times more important than process B, then process A will get 90% of the CPU’s time, and process B will use 10%. On QNX, with the same two processes and priorities, process A will get “100%” of the CPU’s time, and process B won’t run at all. It’s not a FAIR scheduler (like linux), it’s a REALTIME scheduler. Trying to use and compare QNX as a normal desktop is just silly.

Personally, I have extensive experience with both linux-based OSs and QNX/Neutrino. In the general out-of-the-box case, Linux is “snappier” (pretty much snappier than any OS i’ve ever encountered). If you’re willing to learn, tweak and customize a QNX system, you can get a ridiculously optimized OS for your VERY specific needs.