Project Home
Project Home
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - [QNX7] Memory allocation performance problems: (1 Item)
   
[QNX7] Memory allocation performance problems  
Hi,

In porting an existing application to QNX 7, we are facing memory allocation performance problems that seem to be 
specific to QNX 7 (potentially only 64-bit). Our application heavily uses dynamic memory allocations in a multithreaded 
environment. These memory allocations do not appear a bottleneck when running on QNX 6.6 or on Linux-based platforms.

Please find attached a simple test program that showcases the problem. The test program spawns a configurable amount of 
threads and measures the amount of time it takes for each thread to allocate / deallocate a predefined simple object for
 a configurable amount of times.

I've run this test program on the following configurations:

- Qualcomm S820 ADP (aarch64) running QNX7. BSP acquired from Qualcomm.
- TI DRA746 (armv7le) running QNX6.6. BSP preinstalled.
- Intel NUC running QNX7 (x86_64). BSP built using QNX 7 SDP.
- Intel NUC running Ubuntu 14.04.

Both QNX7-based platforms perform really lousy when looking at memory allocation performance. The Intel NUC running 
Ubuntu and the TI DRA746 running QNX 6.6 show that the relation between the memory allocation performance and the number
 of threads is negligible. However, this was different for the QNX7-based platforms:

- The Qualcomm S820 ADP shows an almost linear relation between the memory allocation performance and the amount of 
threads.
- The Intel NUC running QNX7 shows dramatic results when the amount of threads exceeds the amount of CPU cores somehow.

Next to the simple test program, please find attached the raw results in text form and in a graph (I left out the QNX7 
Intel NUC results because they mess up the graph).

Conclusion for us is that QNX7 somehow performs badly when looking at memory allocation performance. Hence, some 
questions I was hoping to get some help with:

- Is this a known problem? If so, is it being fixed?
- Is this inherent to QNX7's new memory manager?

Thanks,

Rein
Attachment: Image qnx_memory_allocation_benchmarks.png 10.19 KB Text qnx_memory_allocation_benchmarks.txt 9.19 KB Text mem_alloc_benchmark.cpp 1.65 KB