Optimizing dynamic memory management in a multithreaded application executing on a multiprocessor

Optimizing dynamic memory management in a multithreaded application executing on a multiprocessor
复制标题

优化在多处理器上执行的多线程应用程序中的动态内存管理

DOI:
--
复制
发表时间:
1998
期刊:
Proceedings of the International Conference on Parallel Processing
影响因子:
--
通讯作者:
L. Lundberg
L. Lundberg
中科院分区:
--
文献类型:
--
作者:
Daniel Häggander;L. Lundberg

文献摘要

被引文献

相似文献

Billing Gateway (BGw)是一个运行在Sun Solaris上的大型多线程面向对象的c++应用程序。由于动态内存的频繁分配和回收,该系统的初始实现在多处理器上执行时性能很差。我们比较了两种改进BGw性能的方法。首先,我们用并行堆替换标准Solaris堆。在第二种方法中,我们通过删除大量堆分配/回收来优化应用程序代码。为了做到这一点,我们为常用的对象类型引入了内存池,并用堆栈变量替换了一些堆变量。并行堆方法带来了显著的加速改进。应用程序代码的优化也带来了显著的加速改进。对于这种方法,使用单处理器计算机的性能也提高了8倍。优化大约花了一周的时间来实现。
The Billing Gateway (BGw) is a large multithreaded object oriented C++ application running on Sun Solaris. Due to frequent allocation and deallocation of dynamic memory, the initial implementation of this system suffered from poor performance when executed on a multiprocessor. We compare two approaches for improving the performance of BGw. First we replace the standard Solaris heap with a parallel heap. In the second approach we optimize the application code by removing a number of heap allocations/deallocations. In order to do this, we introduce memory pools for commonly used object types and replace some heap variables with stack variables. The parallel heap approach resulted in a dramatic speedup improvement. The optimization of the application code did also result in a dramatic speedup improvement. For this approach the performance using a single processor computer was also increased by a factor of eight. The optimizations took approximately one week to implement.