私はoracle AMMからASMMの巨大なページに切り替えようとしてきました。 RHEL 6で次のように変更しました。
/etc/sysctl.confに次のエントリを追加しました(Hugepages_setting.shで提案されているように)。
vm.nr_hugepages=777
/etc/security/limits.confに次のエントリを追加しました。
oracle soft memlock 2831155
oracle hard memlock 2831155
サーバーを再起動し、oracleパラメータmemory_target、memory_max_target、sga_target、sga_max_target、use_large_pagesを特定の値に変更します。
データベースが再起動すると、次の情報が表示されます。
[root@rheloracle ~]# grep -i huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 777
HugePages_Free: 8
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
データベースを閉じると、HugePages_FreeがHugePages_Totalのようなものを見ることができます。
[root@rheloracle ~]# grep -i huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 777
HugePages_Free: 777
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
データベースレベルとオペレーティングシステムレベルのHugePage設定が同期して使用されているようです。しかし、私が引用したすべての例とドキュメントは、hugepagesが有効な場合、HugePages_Rsvdにゼロ以外の値を持たなければならないことを示しています。しかし、同じ状況は私には起こりませんでした。欠けているものがある場合、またはHugePages_Rsvd 0が正常な場合は、提案できますか?
(RHEL6でoracle 18c xpressバージョンを実行しています)
答え1
PRE_PAGE_SGA
OracleパラメータがFALSE
(Oracle 11より前のデフォルト値のようです)に設定されている場合は、「Keep Huge Pages」の値のみが表示されます。
Oracle 12以降、デフォルトでは次のものが表示されます。
SQL> show parameter PRE_PAGE_SGA
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pre_page_sga boolean TRUE
$ grep HugePages_Rsvd /proc/meminfo
HugePages_Rsvd: 0