ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
https://blog.csdn.net/u012450329/article/details/53939976 Linux对大页面内存的引入对减少TLB的失效效果不错,特别是内存大而密集型的程序,比如说在数据库中的使用。innodb引擎就支持大页面内存,具体使用可参见 这里。 大页面更详细的资料可以参考: Documentation/vm/hugetlbpage.txt 过去使用大页面内存主要透过hugetlbfs需要mount文件系统到某个点去,部署起来很不方便,我们只想要点匿名页面,要搞的那么麻烦吗? 新的2.6.32内核通过支持MAP_HUGETLB方式来使用内存,避免了烦琐的mount操作,对用户更友好。 参见man mmap: MAP_HUGETLB (since Linux 2.6.32) Allocate the mapping using “huge pages.” See the kernel source file Documentation/vm/hugetlbpage.txt for further information. 这样明显会方便些,但是大内存页面预留的操作还是要做的,我们来演示下,先来准备环境: # uname -a Linux dr4000 2.6.32-131.17.1.el6.x86_64 #1 SMP Wed Oct 5 17:19:54 CDT 2011 x86_64 x86_64 x86_64 GNU/Linux   # cat /proc/meminfo |grep -i huge AnonHugePages:      2048 kB HugePages_Total:       0 HugePages_Free:        0 HugePages_Rsvd:        0 HugePages_Surp:        0 Hugepagesize:       2048 kB   # sysctl vm.nr_hugepages=192 vm.nr_hugepages = 192   # cat /proc/meminfo |grep -i huge AnonHugePages:      2048 kB HugePages_Total:     192 HugePages_Free:      192 HugePages_Rsvd:        0 HugePages_Surp:        0 Hugepagesize:       2048 kB 从上面输出可以看到我们的内核是2.6.32, 我用的是RHEL 6U2发行版本,同时保留了192*2M页面。 再来看演示代码如下: # cat huge.c #include <sys/mman.h> #include <stdio.h> #include <memory.h>   int main(int argc, char *argv[]) {   char *m;   size_t s = (8UL * 1024 * 1024);     m = mmap(NULL, s, PROT_READ | PROT_WRITE,                     MAP_PRIVATE | MAP_ANONYMOUS | 0x40000 /*MAP_HUGETLB*/, -1, 0);   if (m == MAP_FAILED) {     perror("map mem");     m = NULL;     return 1;   }     memset(m, 0, s);     printf("map_hugetlb ok, press ENTER to quit!\n");   getchar();     munmap(m, s);   return 0; } # gcc huge.c # ./a.out map_hugetlb ok, press ENTER to quit! 我们成功用大页面申请了8M内存,4个大页面,同时进行清零操作成功,再munmap之前,我们需要确认内存确实是被我们使用了。 好,切换到另外一个窗口来看下: # cat /proc/meminfo |grep -i huge AnonHugePages:      2048 kB HugePages_Total:     192 HugePages_Free:      188 HugePages_Rsvd:        0 HugePages_Surp:        0 Hugepagesize:       2048 kB 是不是不费吹灰之力就成功了,这也说明内核天天在进步。 祝玩得开心! --------------------- 作者:terry01203 来源:CSDN 原文:https://blog.csdn.net/u012450329/article/details/53939976 版权声明:本文为博主原创文章,转载请附上博文链接!