[20191204]hugepage相关参数含义.txt

来源:这里教程网 时间:2026-03-03 14:40:37 作者:

[20191204]hugepage相关参数含义.txt --//别人问题的问题,就是grep -i pages /proc/meminfo输出的HugePages_Total,HugePages_Free,HugePages_Rsvd,HugePages_Surp含义. #  grep -i pages /proc/meminfo AnonPages:      31476112 kB HugePages_Total:   78600 HugePages_Free:     3092 HugePages_Rsvd:     3085 HugePages_Surp:        0 Hugepagesize:       2048 kB --//为了更好说明,我修改脚本加入asm实例分析: #  cat huge.sh #! /bin/bash total_shmsize=0 total_hugepagesize=0 for pid in `ps -ef | egrep "ora_pmon_|asm_pmon" |egrep -v "grep"|  awk '{print $2}'` do         echo         echo "-----------------------------------------------------------"         echo #       ps -ef | grep $pid | grep -v grep         ps v $pid         echo         shmsize=`grep -A 1 'SYSV00000000' /proc/$pid/smaps | grep "^Size:" | awk 'BEGIN{sum=0}{sum+=$2}END{print sum/1024}' |  awk -F"." '{print $1}'`         hugepagesize=`grep -B 11 'KernelPageSize:     2048 kB' /proc/$pid/smaps | grep "^Size:" | awk 'BEGIN{sum=0}{sum+=$2}END{print sum/1024}' | awk -F"." '{print $1}'`         echo "INSTANCE SGA (SMALL/HUGE page)"  : $shmsize "MB"         echo "INSTANCE SGA (HUGE PAGE)" $hugepagesize "MB"         echo "Percent Huge page :"  $(( $hugepagesize *100 / $shmsize  )) "%"         total_shmsize=$(( $shmsize + $total_shmsize ))         total_hugepagesize=$(( $total_hugepagesize + $hugepagesize )) done echo echo "-----------------------------------------------------------" echo "-----------------------------------------------------------" echo echo "SGA TOTAL (SMALL/HUGE page)"  : $total_shmsize "MB" echo "SGA TOTAL (HUGE PAGE)" $total_hugepagesize "MB" echo "Percent Huge page :"  $(( $total_hugepagesize *100 / $total_shmsize  )) "%" #  . /usr/local/bin/huge.sh -----------------------------------------------------------    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND  21310 ?        Ss   419:59      4 168518 2147781 13812  0.0 asm_pmon_+ASM1 INSTANCE SGA (SMALL/HUGE page) : 2044 MB INSTANCE SGA (HUGE PAGE) 2046 MB Percent Huge page : 100 % -----------------------------------------------------------    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND  23988 ?        Ss   2304:27     7 189443 79487228 26248  0.0 ora_pmon_dbcn1 INSTANCE SGA (SMALL/HUGE page) : 77568 MB INSTANCE SGA (HUGE PAGE) 77570 MB Percent Huge page : 100 % -----------------------------------------------------------    PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND  27535 ?        Ss   579:31      0 189443 79485216 18832  0.0 ora_pmon_dben1 INSTANCE SGA (SMALL/HUGE page) : 77568 MB INSTANCE SGA (HUGE PAGE) 77570 MB Percent Huge page : 100 % ----------------------------------------------------------- ----------------------------------------------------------- SGA TOTAL (SMALL/HUGE page) : 157180 MB SGA TOTAL (HUGE PAGE) 157186 MB Percent Huge page : 100 % --//3个实例使用HUGEpages内存157186,157186/2 = 78593. #  grep -i pages /proc/meminfo AnonPages:      30329756 kB HugePages_Total:   78600 HugePages_Free:     3092 HugePages_Rsvd:     3085 HugePages_Surp:        0 Hugepagesize:       2048 kB --//我的理解 --//HugePages_Total表示总量. --//HugePages_Free表示没有使用的数量. --//HugePages_Rsvd表示reserved,保留未用的数量 --//HugePages_Surp表示surplus剩余; 盈余; 结余的数量. --//HugePages_Total-HugePages_Free+HugePages_Rsvd=78600-3092+3085 = 78593 ,就是当前全部实例使用hugepages的数量. --//HugePages_Surp表示surplus剩余; 盈余; 结余的数量.实际上设置vm.nr_overcommit_hugepages参数就可以看到. --//并且vm.nr_hugepages不足的情况下就可以看到.注意测试这样的情况必须设置use_large_pages=only. --//看我的测试环境: $ grep "^vm.nr" /etc/sysctl.conf vm.nr_hugepages = 104 vm.nr_overcommit_hugepages = 1000 SYS@book> show parameter use_large NAME            TYPE   VALUE --------------- ------ ----- use_large_pages string ONLY $ grep -i pages /proc/meminfo AnonPages:        236260 kB AnonHugePages:         0 kB HugePages_Total:     309 HugePages_Free:       68 HugePages_Rsvd:       68 HugePages_Surp:      205 Hugepagesize:       2048 kB --//我设置vm.nr_hugepages = 104,而实际需求总量是309.这样需要从vm.nr_overcommit_hugepages借用 --//HugePages_Total-vm.nr_hugepages  309-104 = 205.HugePages_Surp表示就是这个含义. $ . huge.sh ----------------------------------------------------------- oracle   19367     1  0 15:59 ?        00:00:00 ora_pmon_book INSTANCE SGA (SMALL/HUGE page) : 616 MB INSTANCE SGA (HUGE PAGE) 618 MB Percent Huge page : 100 % ----------------------------------------------------------- SGA TOTAL (SMALL/HUGE page) : 616 MB SGA TOTAL (HUGE PAGE) 618 MB Percent Huge page : 100 % --//表达能力有限,但愿通过前面的例子能理解这些参数的含义.

相关推荐