Page 149 - DCAP108_DIGITAL_CIRCUITS_AND_LOGIC_DESIGNS
P. 149
Digital Circuits and Logic Design
Notes
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 do not 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 1 thread 2 threads 3 4 threads 10 threads 50 threads
(expected performance (+100%) threads (+300%) (+300%) (+300%)
growth) (+200%)
Our Memory Manager 33.9 m/sec 6 7 . 8 m / 101.6 131.5 m/ 132.0 m/ 134.5 m/
sec m/sec sec sec sec
(actual performance (+100%) (+199%) (+287%) (+289%) (+296%)
growth)
Microsoft .NET 2.0 (*) 15.2 m/sec 2 7 . 8 m / 37.2 m/ 4 5 . 7 m / 4 2 . 6 m / 39.3m/
(actual performance sec sec sec sec sec
growth) (+82%) (+144%) (+200%) (+180%) (+158%)
Borland Delphi 2006 23.5 m/sec 21.0 m/ 20.7 m/ 2 0 . 5 m / 1 9 . 7 m / 19.3m/
(actual performance sec sec sec sec sec
growth) (–11%) (–12%) (–13%) (–16%) (–18%)
Contd...
144 LOVELY PROFESSIONAL UNIVERSITY