tcmalloc+libhugetlbfs使用

本文介绍了如何将高效的内存管理库tcmalloc与大页内存管理库libhugetlbfs结合使用,以提高TLB命中率和程序性能。通过代码层面的修改和动态库链接调整,成功实现两者的结合,最终能提升0.5-2层的性能。
摘要由CSDN通过智能技术生成

tcmalloc是内存管理的一个库,非常好用以及高效。libhugetlbfs是大页内存管理,提高tlb命中率,对程序来说也是一个非常好以及高效的一个库。

现在我们要将两个库进行结合。第一:从动态库的层面来说,两者如果单独使用只需要在编译的时候连接这两个库就OK了。但是,但是,但是,如果两者结合使用,同时连接这两个库,你会发现最终的只会是其中的某一个库在运行,或者说只有tcmalloc在运行,大页内层根本没有使用。第一失败了,那么就是第二了。第二:从代码层面说,代码是无所不能的,那么我们研究代码,发现tcmalloc其实也要分配内存,找到它分配内存的地方进行修改。还好大页内存给了代码调用的接口。

其实我们在跟踪的时候,会发现最后在中央内存分配的时候,有几种分配方式,有sbrk的,有mmap的。

在system-alloc.cc文件中

void InitSystemAllocators(void) {
  MmapSysAllocator *mmap = new (mmap_space) MmapSysAllocator();
  SbrkSysAllocator *sbrk = new (sbrk_space) SbrkSysAllocator();

  // In 64-bit debug mode, place the mmap allocator first since it
  // allocates pointers that do not fit in 32 bits and therefore gives
  // us better testing of code's 64-bit correctness.  It also leads to
  // less false negatives in heap-c
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值