[20210428]AnonHugePages与transparent hugepage.txt --//链接:http://www.itpub.net/thread-2141545-4-1.html上的讨论,对方数据库运行缓慢。 --//实际上数据库上还运行一个ES(ElasticSearch)的东西,导致整个系统IO不行。 --//我看了链接,做一些转抄: # free -m total used free shared buffers cached Mem: 128955 116** 12853 39265 123 41276 -/+ buffers/cache: 74701 54253 Swap: 20479 18439 2040 # grep -i huge /proc/meminfo AnonHugePages: 68372480 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB --//68372480/1024/1024 = 65.20G. --//明显没有使用HugePages,但是很奇怪AnonHugePages使用很大。导致这个系统内存消耗很大,这样留给数据库的内存相对很小。 --//而且还可以发现swap的used已经达到18g,也说明可能数据库的一些IO实际上访问的交换,从vmstat的输出看又看不出来si,so列。 --//我看了我们各个生产系统,发现exadata # cat /proc/version Linux version 2.6.39-400.126.1.el5uek (mockbuild@ca-build56.us.oracle.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-52)) #1 SMP Fri Sep 20 10:54:38 PDT 2013 # grep -i page /proc/meminfo AnonPages: 36422176 kB PageTables: 2596604 kB HugePages_Total: 70540 HugePages_Free: 3401 HugePages_Rsvd: 3391 HugePages_Surp: 0 Hugepagesize: 2048 kB --//36422176/1024/1024 = 34.73G. --//你可以发现没有对方显示的AnonHugePages列,很容易将这个问题与TRANSPARENT_HUGEPAGE联系起来,oracle的一些安装文档要求关闭 --//TRANSPARENT_HUGEPAGE特性的。 # grep -i hugepage config-2.6.39-400.126.1.el5uek # CONFIG_TRANSPARENT_HUGEPAGE is not set --//你可以发现exadata使用的内核连TRANSPARENT_HUGEPAGE都没有设置.grep -i page /proc/meminfo没有出现AnonHugePages也正常了. --//是否其它服务器要关闭TRANSPARENT_HUGEPAGE吗?我觉得没必要.原因如下: --//1.没有因为打开出现问题,尽管oracle有一些文档提到要关闭它,也许是早期版本它有一些问题. --//2.理论讲使用它能减少PageTables的大小,节约内存使用. --//我发现大量oracle连接进程在打开TRANSPARENT_HUGEPAGE的情况下,使用AnonHugePages.在我的测试环境测试看看. 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production # uname -a Linux xxxxdg 2.6.39-300.26.1.el5uek #1 SMP Thu Jan 3 18:31:38 PST 2013 x86_64 x86_64 x86_64 GNU/Linux # grep -i hugepage /boot/config-2.6.39-300.26.1.el5uek CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set --//可以发现我的测试环境配置了TRANSPARENT_HUGEPAGE。 # cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never --//缺省是打开的.要关闭执行如下: --//# echo never >| /sys/kernel/mm/transparent_hugepage/enabled 2.测试: --//注我做了N多尝试,不知道什么操作能激活使用transparent_hugepage,偶尔产生几次,但是无法重复,最终我放弃这样的测试。 --//尝试查看一些生产系统的情况: # ps -ef | grep oracleywdb1 | awk '{print $2}' | xargs -IQ egrep "AnonHugePages|Rss" /proc/Q/smaps | paste - - | awk '{ if($5>0) print $0} '| head Rss: 2380 kB AnonHugePages: 2048 kB Rss: 2444 kB AnonHugePages: 2048 kB Rss: 2376 kB AnonHugePages: 2048 kB Rss: 2376 kB AnonHugePages: 2048 kB Rss: 2376 kB AnonHugePages: 2048 kB Rss: 2376 kB AnonHugePages: 2048 kB Rss: 2372 kB AnonHugePages: 2048 kB Rss: 2364 kB AnonHugePages: 2048 kB Rss: 2376 kB AnonHugePages: 2048 kB Rss: 2376 kB AnonHugePages: 2048 kB --//使用head截断,不然输出太多。可以大概猜测Rss占用大于2M的情况下,自动开启AnonHugePages。 --//能力有限,只能做如上猜测。在测试环境查看: # ps -ef | grep oracleboo[k] | awk '{print $2}' | xargs -IQ egrep "AnonHugePages|Rss" /proc/Q/smaps | paste - - | awk '{ if($5>0) print $0} ' --//没有输出,也就是普通oracle用户进程没看到,实际上如何产生使用它,我不是很清楚。 # ps -ef | grep ora[_] | awk '{print $2}' | xargs -IQ egrep -H "AnonHugePages|Rss" /proc/Q/smaps | paste - - | awk '{ if($5>0) print $0} ' /proc/18047/smaps:Rss: 2076 kB /proc/18047/smaps:AnonHugePages: 2048 kB /proc/18049/smaps:Rss: 2088 kB /proc/18049/smaps:AnonHugePages: 2048 kB /proc/18051/smaps:Rss: 2076 kB /proc/18051/smaps:AnonHugePages: 2048 kB /proc/18053/smaps:Rss: 2116 kB /proc/18053/smaps:AnonHugePages: 2048 kB /proc/18055/smaps:Rss: 2188 kB /proc/18055/smaps:AnonHugePages: 2048 kB /proc/18057/smaps:Rss: 8372 kB /proc/18057/smaps:AnonHugePages: 8192 kB /proc/18059/smaps:Rss: 8080 kB /proc/18059/smaps:AnonHugePages: 6144 kB /proc/18061/smaps:Rss: 8432 kB /proc/18061/smaps:AnonHugePages: 8192 kB /proc/18063/smaps:Rss: 2088 kB /proc/18063/smaps:AnonHugePages: 2048 kB /proc/18069/smaps:Rss: 2116 kB /proc/18069/smaps:AnonHugePages: 2048 kB /proc/18073/smaps:Rss: 2116 kB /proc/18073/smaps:AnonHugePages: 2048 kB /proc/18077/smaps:Rss: 2180 kB /proc/18077/smaps:AnonHugePages: 2048 kB /proc/18085/smaps:Rss: 2116 kB /proc/18085/smaps:AnonHugePages: 2048 kB /proc/18087/smaps:Rss: 2116 kB /proc/18087/smaps:AnonHugePages: 2048 kB /proc/18104/smaps:Rss: 2104 kB /proc/18104/smaps:AnonHugePages: 2048 kB /proc/20316/smaps:Rss: 2116 kB /proc/20316/smaps:AnonHugePages: 2048 kB --//后台进程有使用。 --//看看是那些后台进程: # ps -ef | grep ora[_] | awk '{print $2}' | xargs -IQ egrep -H "AnonHugePages" /proc/Q/smaps | awk '{ if($2>0) print $0} ' | awk -F'/' '{print $3}'| paste -sd, | xargs ps -fp UID PID PPID C STIME TTY TIME CMD oracle 18047 1 0 09:05 ? 00:00:00 ora_gen0_book oracle 18049 1 0 09:05 ? 00:00:00 ora_diag_book oracle 18051 1 0 09:05 ? 00:00:00 ora_dbrm_book oracle 18053 1 0 09:05 ? 00:00:03 ora_dia0_book oracle 18055 1 0 09:05 ? 00:00:00 ora_mman_book oracle 18057 1 0 09:05 ? 00:00:00 ora_dbw0_book oracle 18059 1 0 09:05 ? 00:00:00 ora_dbw1_book oracle 18061 1 0 09:05 ? 00:00:00 ora_dbw2_book oracle 18063 1 0 09:05 ? 00:00:00 ora_lgwr_book oracle 18069 1 0 09:05 ? 00:00:00 ora_reco_book oracle 18073 1 0 09:05 ? 00:00:02 ora_mmnl_book oracle 18077 1 0 09:05 ? 00:00:00 ora_s000_book oracle 18085 1 0 09:05 ? 00:00:00 ora_arc0_book oracle 18087 1 0 09:05 ? 00:00:00 ora_arc1_book oracle 18104 1 0 09:05 ? 00:00:00 ora_cjq0_book oracle 20316 1 0 10:40 ? 00:00:00 ora_w000_book 3.关闭transparent_hugepag呢? # echo never >| /sys/kernel/mm/transparent_hugepage/enabled # cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] # ps -ef | grep ora[_] | awk '{print $2}' | xargs -IQ egrep -H "AnonHugePages" /proc/Q/smaps | awk '{ if($2>0) print $0} ' --//没有任何输出,说明没有1个oracle后台进程使用transparent_hugepage。这验证我的判断。 # egrep -H "AnonHugePages|Rss" /proc/*/smaps | paste - - | awk '{ if($5>0) print $0} ' /proc/4652/smaps:Rss: 6752 kB /proc/4652/smaps:AnonHugePages: 6144 kB /proc/8841/smaps:Rss: 17700 kB /proc/8841/smaps:AnonHugePages: 4096 kB --//有2个进程还使用,看看什么进程。*/ # ps -flp 4652,8841 F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S gdm 4652 4593 0 80 0 - 55337 poll_s Feb10 ? 00:00:00 /usr/libexec/gdmgreeter 1 R root 8841 1 0 80 0 - 10215 - Apr27 ? 00:00:33 tmux 4.总结: --//以上测试可以看出使用AnonHugePages与transparent hugepage存在相关,也就是打开transparent hugepage,一些进程可能自动会使用它。 --//至于是否需要关闭,我个人觉得没必要。我在前面已经提到: --//1.没有因为打开出现问题,尽管oracle有一些文档提到要关闭它,也许是早期版本它有一些问题. --//2.理论讲使用它能减少PageTables的大小,节约内存使用. 5.收尾: # echo always >| /sys/kernel/mm/transparent_hugepage/enabled # cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
[20210428]AnonHugePages与transparent hugepage.txt
来源:这里教程网
时间:2026-03-03 16:38:38
作者:
编辑推荐:
- [20210428]AnonHugePages与transparent hugepage.txt03-03
- 一次ODA宕机分析03-03
- [20210428]数据库连接加密.txt03-03
- Oracle创建表空间和用户03-03
- rac恢复到单机03-03
- [20210428]改进pr.sql脚本.txt03-03
- [20210429]文件头块不会缓存.txt03-03
- Oracle 11.2 DataGuard RAC To RAC搭建03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 一次ODA宕机分析
一次ODA宕机分析
26-03-03 - rac恢复到单机
rac恢复到单机
26-03-03 - [20210429]文件头块不会缓存.txt
[20210429]文件头块不会缓存.txt
26-03-03 - 【SWINGBENCH】使用SwingBench对Oracle压力测试
【SWINGBENCH】使用SwingBench对Oracle压力测试
26-03-03 - 如何用h5个人简历模板来制作自己的简历
如何用h5个人简历模板来制作自己的简历
26-03-03 - qq相册照片怎么批量下载到手机,qq相册批量下载功能
qq相册照片怎么批量下载到手机,qq相册批量下载功能
26-03-03 - 【RAT】Oracle Real Application Testing(真用应用测试)介绍
- Oracle数据库宕机案例分享
Oracle数据库宕机案例分享
26-03-03 - Oracle 11.2.0.4 本地/远程登录慢的问题
Oracle 11.2.0.4 本地/远程登录慢的问题
26-03-03 - 从Oracle 11.2.0.4 BUG到Oracle子查询展开分析
从Oracle 11.2.0.4 BUG到Oracle子查询展开分析
26-03-03
