[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 %
--//表达能力有限,但愿通过前面的例子能理解这些参数的含义.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2667178/ ,如需转载,请注明出处,否则将追究法律责任。