Page 498 - 《软件学报》2024年第4期
P. 498

软件学报 ISSN 1000-9825, CODEN RUXUEW                                        E-mail: jos@iscas.ac.cn
                 Journal of Software,2024,35(4):2076−2098 [doi: 10.13328/j.cnki.jos.006830]  http://www.jos.org.cn
                 ©中国科学院软件研究所版权所有.                                                          Tel: +86-10-62562563



                                                                  *
                 榫卯: 一种可组合的定制化内存分配框架

                 欧阳湘臻,    朱怡安,    史先琛


                 (西北工业大学 计算机学院, 陕西 西安 710072)
                 通信作者: 欧阳湘臻, E-mail: matrixsukhoi@mail.nwpu.edu.cn

                 摘 要: 动态内存分配器是现代应用程序重要组成部分, 它负责管理空闲内存并处理用户内存请求. 现代通用动态
                 内存分配器能够提供较为平衡的性能与内存利用率, 但考虑到不同应用场景的内存使用情况和优化目标不同, 使
                 用通用内存分配器并非最优解. 针对应用场景定制的专用内存分配器通常能够更好地满足系统需要, 然而编写专
                 用内存分配器较为费时, 也容易出错. 开发者通常使用内存分配框架搭建专用动态内存分配器. 然而, 现有的内存
                 分配框架存在抽象能力较差, 组合性与定制性不足的问题. 为此, 从函数式编程视角审视动态内存分配过程, 基于
                 函数可组合性提出了一种可组合的定制化动态内存分配器框架榫卯. 榫卯框架将系统内存分配抽象为多个互不耦
                 合的内存分配层级函数的组合, 这些层级函数能够扩展出策略槽, 以提供更高的定制性和组合性. 榫卯框架基于标
                 准  C  实现, 依赖  C  预处理器的元编程特性实现层级函数组合的零性能开销. 开发者能够通过组合与定制分配器的
                 层级函数, 快速构建出适合应用场景的内存分配器. 为了证明榫卯框架的有效性, 使用榫卯框架构建了                               3  种不同的
                 内存分配器实例: tlsfcc, hslab  与  wfslab, 其中  tlsfcc 针对多核嵌入式应用场景, 通过替换同步策略优化并发吞吐率;
                 hslab  是核心感知的  slab  式分配器, 通过定制线程缓存优化在异构硬件的性能; wfslab             是低延迟的无等待/无锁分配
                 器. 为了评估这    3  种内存分配器实例, 通过运行基准测试对比现有内存分配器. 实验分别在                     8  核  x86/64  平台和  8  核
                 异构  aarch64  嵌入式平台进行. 实验表明     tlsfcc 与原始  tlsf 分配器相比, 在上述两个平台上分别取得了平均            1.76  和
                 1.59  的加速比; 对比  hslab  与类似架构的  tcmalloc, 它在两个平台的平均执行时间仅为          tcmalloc 的  69.6%  和  85.0%;
                 wfslab  则取得了参与实验对比的内存分配器中最小的最差情况内存请求延迟, 其中包括目前最先进的无锁内存分
                 配器  mimalloc 和  snmalloc.
                 关键词: 内存分配; 阻塞式同步; 异构系统; 操作系统; 函数式编程
                 中图法分类号: TP316

                 中文引用格式: 欧阳湘臻, 朱怡安, 史先琛. 榫卯: 一种可组合的定制化内存分配框架. 软件学报, 2024, 35(4): 2076–2098. http://
                 www.jos.org.cn/1000-9825/6830.htm
                 英文引用格式: Ouyang XZ, Zhu YA, Shi XC. Mortise: Composable and Customizable Memory Allocator Framework. Ruan Jian Xue
                 Bao/Journal of Software, 2024, 35(4): 2076–2098 (in Chinese). http://www.jos.org.cn/1000-9825/6830.htm

                 Mortise: Composable and Customizable Memory Allocator Framework
                 OUYANG Xiang-Zhen, ZHU Yi-An, SHI Xian-Chen
                 (School of Computer Science, Northwestern Polytechnical University, Xi’an 710072, China)
                 Abstract:  Dynamic  memory  allocators  are  fundamental  components  of  modern  applications.  They  manage  free  memory  and  handle  user
                 memory  requests.  Modern  general-purpose  dynamic  memory  allocators  ensure  the  balance  of  performance  and  memory  footprint.  However,
                 in  view  of  different  memory  footprints  and  optimization  goals  in  application  scenarios,  a  general-purpose  memory  allocator  is  not  the
                 optimal  solution.  Special-purpose  memory  allocators  for  specific  application  scenarios  usually  can  better  satisfy  system  requirements.


                 *    基金项目: 国家重点研发计划  (2021YFC2802503, 2020YFB1712201); 陕西省重点研发计划  (2021ZDLGY05-05)
                  收稿时间: 2022-04-17; 修改时间: 2022-08-02; 采用时间: 2022-11-01; jos 在线出版时间: 2023-06-28
                  CNKI 网络首发时间: 2023-06-29
   493   494   495   496   497   498   499   500   501   502   503