jemalloc 5.0.0 全新版本发布,内存分配管理

简介:

jemalloc 发布了全新的 5.0.0 版本。与以前所有的版本不同,新版本不使用自然对齐的“chunks”进行虚拟内存管理,而是使用页面对齐的“extents”。

jemalloc 是一个通用的 malloc(3)实现,它强调了分段回避和可伸缩并发支持。jemalloc 在 2005 年首次作为 FreeBSD libc 分配器使用,2010年,jemalloc 的功能延伸到如堆分析和监控/调优等。现代的 jemalloc 版本依然集成在 FreeBSD 中。

开发团队表示,持续集成现在是开发的重点,后续倾向于保持在各个平台(Linux、FreeBSD、macOS 和 Windows)上的稳定性。因此,后续发版频率可能会逐渐降低。

部分更新内容:

新增 C ++ 新建/删除 operator bindings。

将衰减时间分辨率从秒增加到毫秒。

将 MALLCTL_ARENAS_ALL 添加为固定索引,用于通过 mallctl 访问合并/销毁的 arena 统计信息。

新增互斥量分析,用于收集各种有助于诊断开销/争用问题的统计信息。

在初始化期间检测到无效的配置选项时,可以选择中止 opt.abort_conf。

新增 --with-version = VERSION,以将 jemalloc 嵌入到另一个项目的 git 仓库中使用。

新增 --disable-thp 来支持交叉编译。

新增 --with-lg-hugepage 以支持交叉编译。

新增 mallctl 接口:

    background_thread

    opt.abort_conf

    opt.retain

    opt.percpu_arena

    opt.background_thread

    opt.{dirty,muzzy}_decay_ms

    opt.stats_print_opts

    arena.<i>.initialized

    arena.<i>.destroy

    arena.<i>.{dirty,muzzy}_decay_ms

    arena.<i>.extent_hooks

    arenas.{dirty,muzzy}_decay_ms

    arenas.bin.<i>.slab_size

    arenas.nlextents

    arenas.lextent.<i>.size

    arenas.create

    stats.background_thread.{num_threads,num_runs,run_interval}

    stats.mutexes.{ctl,background_thread,prof,reset}.{num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,num_owner_switch}

    stats.arenas.<i>.{dirty,muzzy}_decay_ms

    stats.arenas.<i>.uptime

    stats.arenas.<i>.{pmuzzy,base,internal,resident}

    stats.arenas.<i>.{dirty,muzzy}_{npurge,nmadvise,purged}

    stats.arenas.<i>.bins.<j>.{nslabs,reslabs,curslabs}

    stats.arenas.<i>.bins.<j>.mutex.{num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,num_owner_switch}

    stats.arenas.<i>.lextents.<j>.{nmalloc,ndalloc,nrequests,curlextents}

    stats.arenas.i.mutexes.{large,extent_avail,extents_dirty,extents_muzzy,extents_retained,decay_dirty,decay_muzzy,base,tcache_list}.{num_ops,num_spin_acq,num_wait,max_wait_time,total_wait_time,max_num_thds,num_owner_switch}

移除--disable-tcache

移除--disable-tls

移除--enable-ivsalloc

移除--with-lg-size-class-group

移除--with-lg-tiny-min

移除--disable-munmap

移除 redzone 支持

……

文章转载自 开源中国社区[https://www.oschina.net]

相关文章
|
Unix 关系型数据库 MySQL
|
关系型数据库 MySQL
MySQl优化:使用 jemalloc 分配内存
MySQl优化:使用 jemalloc 分配内存
|
6月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
1968 0
|
6月前
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
620 1
|
6月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
565 0
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
968 0
|
存储
共用体在内存中如何存储数据
共用体(Union)在内存中为所有成员分配同一段内存空间,大小等于最大成员所需的空间。这意味着所有成员共享同一块内存,但同一时间只能存储其中一个成员的数据,无法同时保存多个成员的值。
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
1052 1