老树发新枝:利用 ExGen-Malloc 优化单线程应用程序

《IEEE Computer Architecture Letters》:Old is Gold: Optimizing Single-Threaded Applications With ExGen-Malloc

【字体: 时间:2025年11月13日 来源:IEEE Computer Architecture Letters 1.4

编辑推荐:

  内存分配器对应用性能有显著影响,尤其在多线程环境下需优化分配速度和内存碎片。本文提出ExGen-Malloc专为单线程设计,在SPEC CPU2017基准测试中较dlmalloc提升1.19倍,较mimalloc提升1.03倍,通过简化复杂元数据管理降低开销。

  

摘要:

尽管内存分配器在程序代码中所占比例很小,但它们通过影响缓存行为等全局因素,可以显著影响应用程序的性能。此外,内存分配器通常被视为所有程序中固有的“数据中心开销”。即使性能提升1%,在整个人数据中心范围内应用时也能带来显著的成本和能源节省。现代内存分配器旨在优化多线程环境中的分配速度和内存碎片化,依靠复杂的元数据和控制逻辑来实现高性能。然而,这种复杂性带来的开销促使人们重新评估分配器的设计。值得注意的是,在仍然被广泛用于各种应用领域的单线程场景中,可以避免这种开销。在本文中,我们介绍了专门为单线程应用程序优化的内存分配器ExGen-Malloc。我们在真实系统上对ExGen-Malloc进行了原型测试,并证明其在SPEC CPU2017基准测试套件中的性能提升幅度超过了dlmalloc的1.19,以及微软开发的现代多线程分配器mimalloc的1.03

引言

随着利用并行性来提升性能的多线程应用程序的日益普及,现代内存分配器通常被设计为支持多个线程之间的并发分配和释放请求,以最小化竞争并最大化可扩展性。为了满足多线程应用程序的需求,内存分配器本身也从单线程库设计演变为多线程库设计。图1展示了内存分配器的发展历程。在20世纪90年代中期,像Win32分配器和dlmalloc [1]、[2]、[3](也称为Windows XP内存分配器和Lea分配器)这样的单线程内存分配器占主导地位,这反映了当时单核处理器的广泛使用。到了20世纪90年代末和21世纪初,随着多核处理器的兴起,LKMalloc [4]成为第一个多线程内存分配器。后续的发展引入了分层元数据等技术以及更好的元数据管理机制和控制流程优化,最终催生了Google的Hoard [5]、Meta的tcalloc [6]和微软的mimalloc [8]等分配器的诞生。

相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号