Memkind 概述

memkind是一个建立在jemalloc之上的可扩展内存管理器,它提供了统一的内存分配接口,并能控制不同内存特性。针对各种系统和环境的内存需求,memkind通过memkind_create_pmem()等API实现内存分区。此外,它还支持高带宽内存接口hbwmalloc。安装memkind需要安装pthread和numactl依赖,并从GitHub克隆源码进行编译安装。
摘要由CSDN通过智能技术生成

memkind使用介绍

Introduction:memkind是用户可扩展堆管理器,构建在jemalloc之上,它可以控制内存特性和各种内存之间的堆分区。
Problem:由于在各种系统、环境中都需要分配内存,并且没有统一的标准,所以memkind为了实现统一的函数分配而诞生:http://memkind.github.io/memkind/memkind_arch_20150318.pdf

memkind githubhttps://github.com/memkind/memkind
memkind 官网教程http://memkind.github.io/memkind/

memkind API说明http://memkind.github.io/memkind/man_pages/memkind.html
PS:memkind_create_pmem()采用tmpfile函数创建,在创建的目录中不会显示,并且当程序退出后创建的文件也会释放/删除。并且memkind_create_pmem()函数调用后,并不会立即创建文件,而是在memkind_pmem_mmap()函数调用后才会创建。

#include <memkind.h>  # 头文件

Link with -lmemkind  # 链接库

ERROR HANDLING:  # 用于获取错误消息
void memkind_error_message(int err, char *msg, size_t size);

HEAP MANAGEMENT:  # 创建和释放内存
void *memkind_malloc(memkind_t kind, size_t size); 
void *memkind_calloc(memkind_t kind, size_t num, size_t size); 
void *memkind_realloc(memkind_t kind, void *ptr, size_t size); 
int memkind_posix_memalign(memkind_t kind, void **memptr, size_t alignment, size_t size); 
void memkind_free(memkind_t kind, void *ptr);

KIND MANAGMENT:  # 用于为memkind_malloc等函数创建memkind_t数据结构
int memkind_create_pmem(const char *dir, size_t max_size, memkind_t *kind); 
int memkind_check_available(memkind_t kind);

DECORATORS:  # 当memkind_malloc函数调用之前和调用之后,调用_pre和_post两函数
void memkind_malloc_pre(memkind_t *kind, size_t *size); 
void memkind_malloc_post(memkind_t kind, size_t size, void **result); 
void memkind_calloc_pre(memkind_t *kind, size_t *nmemb, size_t *size); 
void memkind_calloc_post(memkind_t kind, size_t nmemb, size_t size, void **result); 
void memkind_posix_memalign_pre(memkind_t *kind, void **memptr, size_t *alignment, size_t *size); 
void memkind_posix_memalign_pos
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值