auto_only Large Page در اوراکل 19c

خرید بک لینک

در مطلب پیکربندی Huge Page برای دیتابیس اوراکل در مورد مقادیری که برای پارامتر USE_LARGE_PAGES قابل تنظیم است، نکاتی را مطرح کردیم و توضیح دادیم که برای این پارامتر می توان یکی از مقادیر FALSE, ONLY, TRUE را تنظیم کرد(مقدار AUTO در نسخه های جدید قابل تنظیم نیست.)

Coected to Oracle Database 18c Enterprise Edition Release 18.0.0.0.0

SQL> select value from v$parameter_valid_values p where upper(name)= ‘USE_LARGE_PAGES’;

VALUE

————–

TRUE

AUTO

ONLY

FALSE

در اوراکل نسخه 19c، مقدار AUTO_ONLY هم به این مجموعه مقادیر اضافه شده است که در این متن به بررسی این مقدار خواهیم پرداخت.

Coected to Oracle Database 19c Enterprise Edition Release 19.0.0.0.0

SQL> select value from v$parameter_valid_values p where upper(name)= ‘USE_LARGE_PAGES’;

VALUE

————–

TRUE

AUTO

ONLY

FALSE

AUTO_ONLY

زمانی که پارامتر USE_LARGE_PAGES را به مقدار AUTO_ONLY تنظیم می کنیم، محاسبه و تنظیم تعداد large pageها بر عهده دیتابیس اوراکل خواهد بود. مثال زیر را ببینید.

در محیط تستی که در آن قرار داریم، Huge Page قبلا پیکربندی نشده است:

[root@RAC2 ~]# grep ^Huge /proc/meminfo

HugePages_Total: 0

HugePages_Free: 0

HugePages_Rsvd: 0

HugePages_Surp: 0

Hugepagesize: 2048 kB

همچنین مقدار در نظر گرفته شده برای instanceای که در حال اجرا است، برابر با 37GB می باشد:

SQL> show parameter sga

NAME TYPE VALUE

———————————— ———– ——————————

sga_max_size big integer 37G

sga_target big integer 37G

در این شرایط تصمیم داریم تا با کمک new feature اوراکل 19c، قابلیت Huge Page را پیکربندی کنیم:

SQL> alter system set use_large_pages=AUTO_ONLY scope=spfile sid=‘instance2’ ;

بعد از تنظیم پارامتر use_large_pages به مقدار AUTO_ONLYء، instance را restart می کنیم:

SQL> startup nomount force;

ORACLE instance started.

Total System Global Area 3.9728E+10 bytes

Fixed Size 30383136 bytes

Variable Size 6039797760 bytes

Database Buffers 3.3554E+10 bytes

Redo Buffers 103833600 bytes

بعد از restart کردن instance، خواهیم دید که تعداد Huage Pageها از 0 به 18946 رسیده است:

[root@RAC2 ~]# grep ^Huge /proc/meminfo

HugePages_Total: 18946

HugePages_Free: 111

HugePages_Rsvd: 111

HugePages_Surp: 0

Hugepagesize: 2048 kB

همچنین در پیامهای Alert Log می بینیم که اوراکل برای shared memory از Huge Page استفاده کرده است:

Dump of system resources acquired for SHARED GLOBAL AREA (SGA)

2021-03-30T13:54:12.777120+04:30

Per process system memlock (soft) limit = 40G

Expected per process system memlock (soft) limit to lock

instance MAX SHARED GLOBAL AREA (SGA) into memory: 37G

PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s)

2021-03-30T13:54:12.777662+04:30

2048K 18946 18946 18946 NONE

**********************************************************************

البته اگر به اندازه مقدار محاسبه شده، large page قابل تخصیص موجود نباشد، دستور startup با خطا متوقف خواهد شد عدم قابلیت تخصیص large page می تواند به تنظیمات محیطی، نظیر memlock (soft) limit برگردد به عنوان یک نمونه از این محدودیتها، large page هیچگاه نمی تواند بیشتر از اندازه در نظر گرفته شده برای memlock (soft) limit باشد:

SQL> alter system set sga_max_size=50g scope=spfile sid=‘instance2’ ;

System altered.

SQL> alter system set sga_target=50g scope=spfile sid=‘instance2’ ;

System altered.

SQL> startup nomount force;

ORA-27125: unable to create shared memory segment

Linux-x86_64 Error: 1: Operation not permitted

Additional information: 4549

Additional information: 134217728

SQL>

در alert log هم می بینیم که memlock (soft) limit برابر با 40G می باشد بنابرین نمی توان 50G از حافظه را برای large page کنار گذاشت:

Per process system memlock (soft) limit = 40G

2021-03-30T13:56:37.061802+04:30

Expected per process system memlock (soft) limit to lock

instance MAX SHARED GLOBAL AREA (SGA) into memory: 50G

PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s)

2021-03-30T13:56:37.062428+04:30

2048K 25551 25602 20559 ORA-27125

Reason for not supporting certain system pagesizes:

RECOMMENDATION:

2021-03-30T13:56:37.062744+04:30

  1. Configure system with expected number of pages for every

supported system pagesize prior to the next instance restart operation.

2021-03-30T13:56:37.065750+04:30

  1. Increase per process memlock (soft) limit to at least 50GB

to lock 100% of SHARED GLOBAL AREA (SGA) pages into physical memory

**********************************************************************

Oradism deallocated 6605 large pages of size 2097152 bytes.

SGA: Realm creation failed

بنابرین با افزایش مقدار memlock (soft) limit، از خطای فوق جلوگیری خواهد شد:

[root@RAC2 ~]# vi /etc/security/limits.conf

oracle soft memlock 52214400

oracle hard memlock 52214400

SQL> startup nomount force;

ORACLE instance started.

Total System Global Area 5.3687E+10 bytes

Fixed Size 30388144 bytes

Variable Size 6308233216 bytes

Database Buffers 4.7245E+10 bytes

Redo Buffers 103829504 bytes

SQL>

–alert log:

**********************************************************************

Per process system memlock (soft) limit = 53G

Expected per process system memlock (soft) limit to lock

instance MAX SHARED GLOBAL AREA (SGA) into memory: 50G

Supported system pagesize(s):

2021-03-30T14:35:24.158541+04:30

PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES ERROR(s)

2021-03-30T14:35:24.158688+04:30

2048K 25602 25602 25602 NONE

**********************************************************************

همچنین اگر مقدار memlock (soft) limit و SGA را بیشتر از فضای ram در نظر بگیریم، instance استارت نخواهد شد:

[root@RAC2 ~]# free -g

total used free shared buff/cache available

Mem: 62 52 8 0 2 9

Swap: 17 0 17

[root@RAC2 ~]# vi /etc/security/limits.conf

oracle soft memlock 75214400

oracle hard memlock 75214400

SQL> alter system set sga_max_size=70g scope=spfile sid=‘instance2’ ;

System altered.

SQL> alter system set sga_target=70g scope=spfile sid=‘instance2’ ;

System altered.

SQL> startup nomount force;

ORA-27104: system-defined limits for shared memory was misconfigured

–alert log:

2021-03-30T14:40:10.354881+04:30

Starting ORACLE instance (normal) (OS id: 17671)

System caot support SGA size of 70 GB.

Total system memory configured is 63 GB.

2021-03-30T14:40:10.551027+04:30

Instance maximum shared memory size should be less than 57 GB.

توجه: در صورت عدم تنظیم memlock (soft) limit، مقدار 64K برای آن در نظر گرفته خواهد شد:

Per process system memlock (soft) limit = 64K

تالار های تخصصی...

ما را در سایت تالار های تخصصی دنبال می‌کنید

برچسب: نویسنده: خنجی بازدید: 253 تاريخ: سه شنبه 31 فروردين 1400 ساعت: 5:07

صفحه بندی