将 GLIBC malloc() M_MMAP_THRESHOLD 增加到 1GB 的影响
Impact of Increasing GLIBC malloc() M_MMAP_THRESHOLD to 1GB
我正在使用 glibc(版本 2.21) 用于页面大小(2MB 和 64MB)的系统。但是对于这个非常大的页面大小,会有更多的碎片。所以我使用 mallopt() 将 M_MMAP_THRESHOLD 增加到 32MB,但仍然存在碎片。所以我想将 M_MMAP_THRESHOLD 增加到 1 GB。这对 bin 索引计算有什么影响吗?
这个问题是 answered on the libc-help list:
如果增加 M_MMAP_THRESHOLD
,您还必须将堆大小增加到大约 32 GiB(malloc/arena.c 中的 HEAP_MAX_SIZE
)。 2 * DEFAULT_MMAP_THRESHOLD_MAX
的默认值可能太小(假设 DEFAULT_MMAP_THRESHOLD_MAX
将为 2 GiB)。否则,对于 2 GiB 和 HEAP_MAX_SIZE
.
之间的分配请求,您将有大量碎片
我正在使用 glibc(版本 2.21) 用于页面大小(2MB 和 64MB)的系统。但是对于这个非常大的页面大小,会有更多的碎片。所以我使用 mallopt() 将 M_MMAP_THRESHOLD 增加到 32MB,但仍然存在碎片。所以我想将 M_MMAP_THRESHOLD 增加到 1 GB。这对 bin 索引计算有什么影响吗?
这个问题是 answered on the libc-help list:
如果增加 M_MMAP_THRESHOLD
,您还必须将堆大小增加到大约 32 GiB(malloc/arena.c 中的 HEAP_MAX_SIZE
)。 2 * DEFAULT_MMAP_THRESHOLD_MAX
的默认值可能太小(假设 DEFAULT_MMAP_THRESHOLD_MAX
将为 2 GiB)。否则,对于 2 GiB 和 HEAP_MAX_SIZE
.