ITPub博客

首页 > 数据库 > Oracle > [20191204]关于oracle实例是否使用hugepages问题2.txt

[20191204]关于oracle实例是否使用hugepages问题2.txt

原创 Oracle 作者:lfree 时间:2019-12-04 09:10:16 0 删除 编辑

[20191204]关于oracle实例是否使用hugepages问题2.txt

--//自己最近一段时间一直在关注这个问题,看到一个链接:
https://mahmoudhatem.wordpress.com/2019/10/25/hugepage-usage-per-instance/

--//实际上扫描/proc/$pid/smaps获得共享内存段大小.脚本如下:
--//我修改一点点.他执行ps -ef | grep $pid | grep -v grep可能有错,因为grep $pid可能查询到无关pmon的进程.
--//另外该脚本不能使用在AMM的环境.实际上脚本很简单含有KernelPageSize就是使用hugepages的段.

#! /bin/bash
total_shmsize=0
total_hugepagesize=0

for pid in `ps -ef | grep ora_pmon_|egrep -v "grep|+ASM"|  awk '{print $2}'`
do
echo
echo "-----------------------------------------------------------"
echo
# ps -ef | grep $pid | grep -v grep
ps v $pid

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 "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  )) "%"

--//测试看看:
# grep "^vm.nr" /etc/sysctl.conf
vm.nr_hugepages = 104
vm.nr_overcommit_hugepages = 1000

SYS@book> startup
ORACLE instance started.
Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes
Database mounted.
Database opened.

--//alert.log:
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = 51 GB
Total Shared Global Region in Large Pages = 208 MB (33%)
Large Pages used by this instance: 104 (208 MB)
Large Pages unused system wide = 0 (0 KB)
Large Pages configured system wide = 104 (208 MB)
Large Page size = 2048 KB

RECOMMENDATION:
  Total System Global Area size is 618 MB. For optimal performance,
  prior to the next instance restart:
  1. Increase the number of unused large pages by
 at least 205 (page size 2048 KB, total size 410 MB) system wide to
  get 100% of the System Global Area allocated with large pages
********************************************************************

--//在混合模式.
$ . huge.sh
-----------------------------------------------------------
oracle    5565     1  0 17:01 ?        00:00:00 ora_pmon_book
INSTANCE SGA (SMALL/HUGE page) : 616 MB
INSTANCE SGA (HUGE PAGE) 208 MB
Percent Huge page : 33 %
-----------------------------------------------------------
-----------------------------------------------------------
SGA TOTAL (SMALL/HUGE page) : 616 MB
SGA TOTAL (HUGE PAGE) 208 MB
Percent Huge page : 33 %

$ ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 414711809  oracle    640        12582912   25
0x00000000 414744578  oracle    640        159383552  25
0x00000000 414777347  oracle    640        33554432   25
0x00000000 414810117  oracle    640        8388608    25
0x00000000 414842886  oracle    640        4194304    25
0x00000000 414875655  oracle    640        427819008  25
0xe8a8ec10 414908424  oracle    640        2097152    25

--//key=0xe8a8ec10,大小2097152/1024/1024 = 2M.视乎这个多出2M的段比较特殊.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2666768/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969544