C 对文本和数据段使用hugepages
我正在探索是否有可能按照中的指南使用hugepages支持文本和数据段 我已经按照建议重新链接了应用程序,添加了“-B/usr/share/libhugetlbfs-Wl,--hugetlbfs-align”,并使用“hugetl--text--data--heap--bss/path/to/my/application”启动了应用程序 但我不太确定如何验证数据和文本段是否确实复制到hugetlbfs文件系统上的文件中 通过检查/proc/{pid}/maps,可以看到hugepages用于堆,但不用于文本和数据段,因为前两个地址范围映射到应用程序,而不映射到hugepage文件系统 我的理解正确吗?实际上,我怀疑我的结论,即hugepages用于/proc/{pid}/maps中的heap也是不正确的 如何验证hugepages中的数据段和文本段是否已备份?我知道如果成功,数据和文本段将被复制到hugetlbfs文件系统,但如何验证呢 谢谢 /proc/{pid}/maps的输出C 对文本和数据段使用hugepages,c,linux-kernel,elf,huge-pages,C,Linux Kernel,Elf,Huge Pages,我正在探索是否有可能按照中的指南使用hugepages支持文本和数据段 我已经按照建议重新链接了应用程序,添加了“-B/usr/share/libhugetlbfs-Wl,--hugetlbfs-align”,并使用“hugetl--text--data--heap--bss/path/to/my/application”启动了应用程序 但我不太确定如何验证数据和文本段是否确实复制到hugetlbfs文件系统上的文件中 通过检查/proc/{pid}/maps,可以看到hugepages用于堆,
00400000-00d2c000 r-xp 00000000 fd:02 46153351 /path/to/my/application
00f2b000-00fa3000 rw-p 0092b000 fd:02 46153351 /path/to/my/application
00fa3000-00fbb000 rw-p 00000000 00:00 0
02a0c000-02a2d000 rw-p 00000000 00:00 0 [heap]
40000000-80000000 rw-p 00000000 00:15 2476090 /dev/hugepages-1G/libhugetlbfs.tmp.nS7exn (deleted)
检查
包含关于给定进程使用的每个内存区域的信息,其中包括允许确定哪些节点用于页面的信息
对于formar,请参见如果设置HUGETLB_DEBUG=1变量,它将告诉您大量有用的信息。其中之一是: 信息:段2的对齐memsz太小:0x864<0xFFFFFFFFFFFFFF 如果成功,它看起来像: libhugetlbfs[zupa:154297]:信息:段0(phdr 2):0x400000-0x400864(filesz=0x864)(prot=0x5) libhugetlbfs[zupa:154297]:信息:段1(phdr 3):0x600868-0x600af8(filesz=0x27c)(prot=0x3) libhugetlbfs[zupa:154297]:DEBUG:Total memsz=0xaf4,最大段的memsz=0x864 libhugetlbfs[zupa:154297]:信息:libhugetlbfs版本:2.16(已修改) libhugetlbfs[zupa:154951]:信息:映射到0x2aac0000处的hugeseg。正在从0x400000复制0x864字节和0个额外字节…完成 libhugetlbfs[zupa:154297]:信息:准备成功 libhugetlbfs[zupa:154952]:信息:映射到0x2aac0000处的hugeseg。正在从0x600868复制0x27c字节和0个额外字节…完成 libhugetlbfs[zupa:154297]:信息:准备成功
有关每个映射的详细信息,请参见/proc/$pid/smap,包括匿名hugepages。BSS是一种与堆类似的匿名映射,它将使用透明的hugemages进行充分对齐的映射。
/proc/$pid/numa_maps