Home Company Services How We Work Projects Careers Contact Us



 

Fine Soft Studio developed one of the most efficient Memory Manager in the world. Applications that use our Memory Manager show striking improvement of runtime performance, especially on multiprocessor platforms.

Business Description

Existing hardware is constantly improving. Multiprocessors and CPUs with more then one core becoming usual things. From new applications are expected to use efficiently the possibilities of coming hardware. One of the most important system components is Memory Manager - the part of the system that manages program memory so that the program can run most efficiently. Modern programs have object-oriented, multithreaded architectures which put a lot of pressure on memory manager. For web applications hit processing time is measured in milliseconds, so it is very important to have optimized each component of the system.

About 20% of CPU time is spent for managing memory. The application memory manager must keep it up with minimum of CPU overhead, and the total memory used.

But existing memory managers have not cope with this goals adequately especially when running on multi CPU ore multi-core modern hardware.

Existing memory managers are not able to get most of computer hardware and substantially limit hardware scalability. When we add new processor, or additional core to CPU programs slow down. Instead of expected linear increase runtime performance decreases because memory managers have memory locking problems.

If two threads request a memory at the same time, the memory manager must enqueue the requests before processing them. One thread must wait for another thread's request to be processed. This serialization step is a large performance barrier, resulting in scaling problems.

The challenge was to build own memory manager which ensures increasing of application runtime performance when new CPU is added and which must be memory space efficient and very fast.

Solution and key benefits

We developed our own Memory Manager. It uses advanced memory management algorithm. The key benefits of our Memory Manager are:
it does not use critical sections (uses no-blocking algorithm)
it does not require CPU context switching
Memory Manager 100% effectively consumes all CPUs which are in system
Memory Manager does not have performance degradation when CPU count increases (performance of other memory managers either do not increase or even decrease when CPU count increase)
optimized work with memory blocks of any size
even after long time of work memory is not fragmented.
It is very important for web applications, or for applications which should run for long time without restart - like database servers, operation systems, etc
Memory Manager has built-in logic to capture memory leaks and do memory dumps to see memory disposition/reallocations during application execution
You don't need to make any changes in your existing code to use our Memory Manager

Test application

Application creates a specified number of threads. Each thread executes same actions (emulating memory manager real usage): randomly selects pointer from an array and allocates block of memory if pointer is not assigned or frees memory if pointer is assigned. Size of the memory block is random within defined margins. Application calculates total number of memory block allocations and releases in millions per sec. Resulting value is the maximum value achieved during specified period (higher is better).

Test system configuration: CPU - Inter Core 2 Quad (4 cores), OS - Windows Server 2003

Testing Results

Memory Manager
(expected perfomance growth)
1 thread
 
2 threads
(+100%)
3 threads
(+200%)
4 threads
(+300%)
10 threads
(+300%)
50 threads
(+300%)
Our Memory Manager
(actual perfomance growth)
33.9m/sec
 
67.8m/sec
(+100%)
101.6m/sec
(+199%)
131.5m/sec
(+287%)
132.0m/sec
(+289%)
134.5m/sec
(+296%)
Microsoft .NET 2.0 (*)
(actual perfomance growth)
15.2m/sec
 
27.8m/sec
(+82%)
37.2m/sec
(+144%)
45.7m/sec
(+200%)
42.6m/sec
(+180%)
39.3m/sec
(+158%)
Borland Delphi 2006
(actual perfomance growth)
23.5m/sec
 
21.0m/sec
(-11%)
20.7m/sec
(-12%)
20.5m/sec
(-13%)
19.7m/sec
(-16%)
19.3m/sec
(-18%)
Microsoft Visual C++ 2003
(actual perfomance growth)
8.1m/sec
 
3.0m/sec
(-63%)
1.4m/sec
(-83%)
1.3m/sec
(-84%)
1.2m/sec
(-85%)
1.1m/sec
(-86%)
Borland Delphi 5
(actual perfomance growth)
9.5m/sec
 
3.6m/sec
(-62%)
1.7m/sec
(-82%)
1.7m/sec
(-82%)
1.6m/sec
(-83%)
1.4m/sec
(-85%)

* - memory manager in .NET by default initializes allocated memory block to zeros. In diagram we showed extrapolated values to eliminate this factor. Real values are about 25% less.



Testing Results Analysis

As you may see from the table above our Memory Manager shows dramatic performance increase even for single threaded mode and perfect scalability for multithreaded mode on multiprocessor/multicore system. The closest competitor MS NET 2.0 shows 2 times less performance even for single threaded mode and much less scalability. Other memory managers shows even performance degradation when running in multithreaded mode.

Testing Results on 16 Cores system

As a Partner in IntelĀ® Software Partner Program we got access to latest hardware platforms and tested our Memory Manager on 16 Cores system (4 CPU Intel Xeon, 4 Cores each). Perfomance increase of our application running on such system reached unbelievable 15.5 times!


Conclusion

It is just not acceptable to lose so much of hardware power just because of imperfect software. We pay much attention to optimization of each system level component, and this allows us to reach high level of perfomance and speed.




Home | Company | Services | How We Work | Projects | Careers | Contact Us
Copyright © 1999-2010 Fine Soft Studio. All rights reserved.