[20221212]关于pre_page_sga参数的问题.txt

来源:这里教程网 时间:2026-03-03 18:13:30 作者:

[20221212]关于pre_page_sga参数的问题.txt --//别人遇到的问题,无法演示链接http://blog.itpub.net/267265/viewspace-2133260/=>[20170209]理解pre_page_sga参数.txt --//我当时的测试设置pre_page_sga=true的情况,HugePages_Rsvd是0. --//我看了一下实际上是对方sga_target设置问题导致的.通过例子说明: 1.环境: $ cat initxxxx.ora db_name=xxxx instance_name=xxxx sga_target=0G sga_max_size=50G shared_pool_size=2G pre_page_sga=true --//注意设置sga_target=0G # grep "^vm.nr" /etc/sysctl.conf vm.nr_hugepages = 26000 vm.nr_overcommit_hugepages = 1300 # sysctl -p # sysctl vm.nr_hugepages vm.nr_hugepages = 26000 # grep "^oracle" /etc/cur': grep "^oracle" /etc/security/limits.conf | grep memlock oracle   soft  memlock  unlimited oracle   hard  memlock  unlimited $ egrep "Max locked memory|Limit" /proc/self/limits Limit                     Soft Limit           Hard Limit           Units Max locked memory         unlimited            unlimited            bytes 2.测试: --//测试前: # grep -i pages /proc/meminfo AnonPages:        226424 kB AnonHugePages:     57344 kB HugePages_Total:   26000 HugePages_Free:    26000 HugePages_Rsvd:        0 HugePages_Surp:        0 Hugepagesize:       2048 kB --//没有任何程序使用hugepages. $ export ORACLE_SID=xxxx SYS@xxxx> startup  nomount ORACLE instance started. Total System Global Area 5.3447E+10 bytes Fixed Size                  2265864 bytes Variable Size            5.3284E+10 bytes Database Buffers          134217728 bytes Redo Buffers               26480640 bytes # grep -i pages /proc/meminfo AnonPages:        286296 kB AnonHugePages:     69632 kB HugePages_Total:   26000 HugePages_Free:    24601 HugePages_Rsvd:    24202 HugePages_Surp:        0 Hugepagesize:       2048 kB --//可以发现当前仅仅使用了26000-24601 = 1399 ,相当于现在sga_target=1399 * 2M . --//该实例如果全部使用应该是 26000-24601+24202 = 25601,相当于 50G+2M. 3.继续: $ cat initxxxx.ora db_name=xxxx instance_name=xxxx sga_target=50G sga_max_size=50G shared_pool_size=2G pre_page_sga=true --//注意设置sga_target=50G --//关闭数据库实例xxxx. --//测试前: # grep -i pages /proc/meminfo AnonPages:        217752 kB AnonHugePages:     59392 kB HugePages_Total:   26000 HugePages_Free:    26000 HugePages_Rsvd:        0 HugePages_Surp:        0 Hugepagesize:       2048 kB --//启动数据库实例xxxx.实际上这样启动比前面的启动慢许多. --//启动实例后: # grep -i pages /proc/meminfo AnonPages:        286328 kB AnonHugePages:     69632 kB HugePages_Total:   26000 HugePages_Free:      473 HugePages_Rsvd:       74 HugePages_Surp:        0 Hugepagesize:       2048 kB --//我不知道为什么HugePages_Rsvd=74. --//我测试前以为HugePages_Free=399,HugePages_Rsvd=0. --//还是可以说明pre_page_sga=true的情况加载大部分sga到内存的hugepages中. $ ipcs ------ Shared Memory Segments -------- key        shmid      owner      perms      bytes      nattch     status 0x00000000 68288514   oracle    640        268435456  18 0x00000000 68321283   oracle    640        53418655744 18 0x4fc32208 68354052   oracle    640        2097152    18 ------ Semaphore Arrays -------- key        semid      owner      perms      nsems 0x7e7c81d8 63602688   oracle    640        1004 ------ Message Queues -------- key        msqid      owner      perms      used-bytes   messages --//(268435456  + 53418655744 + 2097152   )/2048/1024 = 25601 --//alert记录如下: ************************ Large Pages Information ******************* Per process system memlock (soft) limit = UNLIMITED Total Shared Global Region in Large Pages = 50 GB (100%) Large Pages used by this instance: 25601 (50 GB) Large Pages unused system wide = 399 (798 MB) Large Pages configured system wide = 26000 (51 GB) Large Page size = 2048 KB ******************************************************************** 4.后记: --//顺便提一下采用hugepages是大势所趋,现在服务器配置内存都很高.而且12c开始pre_page_sga缺省设置就是true. --//还采用原来的方式会导致PageTables消耗很大的内存. --//另外注意一点如果设置vm.nr_hugepages 很大,会导致内存的大量浪费,比sga_max_size大一点点就ok了. --//测试完成修改/etc/sysctl.conf里面的vm.nr_hugepages参数略.

相关推荐