محدودیت Instance به منظور مدیریت استفاده از منابع CPU در پایگاه داده اوراکل نسخه ۱۱gr2
محدودیت Instance به منظور مدیریت استفاده از منابع CPU در پایگاه داده اوراکل نسخه ۱۱gr2
در شرایطی که چندید پایگاه داده در یک سرور وجود دارند مدیریت منابع CPU می تواند به مشکل غامضی تبدیل شود به این دلیل که در صورت دریافت تمام منابع CPU توسط یک پایگاه داده تاثیر منفی روی عملکرد دیگر پایگاه داده ها خواهد داشت.
شیوه محدود سازی Instance قابلیت نوینی در اوراکل نسخه ۱۱gr2 Enterprise است که به راحتی مدیریت منابع CPU در محیط های یگانه را فراهم میآورد.
به وسیله فعال نمودن Resource Manager و تنظیم پارامتر CPU_COUNT در هر Instance میتوان حداکثر میزان قابل استفاده از CPU/Core را برای هر Instance مشخص نمود.
فعالسازی Resource Manager
از نسخه ۸i اوراکل به طور مداوم Resource Manager انتشار یافته است. Resource Manager به طور پیش فرض فعال نیست. به همین دلیل با اختصاص یک برنامه ریزی منابع پیش از اعمال محدودیت Instance می توان آن را فعال نمود. در اوراکل تعدادی برنامه ریزی منابع از پیش آماده وجود دارد.
SELECT plan FROM dba_rsrc_plans;
PLAN
——————————
DEFAULT_PLAN
INTERNAL_QUIESCE
INTERNAL_PLAN
APPQOS_PLAN
DEFAULT_MAINTENANCE_PLAN
ETL_CRITICAL_PLAN
MIXED_WORKLOAD_PLAN
ORA$AUTOTASK_SUB_PLAN
ORA$AUTOTASK_HIGH_SUB_PLAN
DSS_PLAN
۱۰ rows selected.
SQL>
در صورتی که هیچ برنامه ریزی منابع خاصی در اختیار ندارید میتوان از برنامه پیشفرض استفاده نمود.
ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = default_plan;
به خاطر داشته باشید که حداکثر بهرهبرداری هر گروه مصرف کننده در یک برنامهریزی منابع توسط پارامتر CPU_COUNT و متناسب با تعداد CPU مختص یک Instance تعیین میشود.
اگر یک گروه مصرف کننده به میزان ۵۰٪ از کل منابع محدود شده باشد و پارامتر CPU_COUNT روی ۲ تنظیم شده باشد در این صورت گروه مصرف کننده از یک CPU استفاده خواهد نمود.
به خاطر داشته باشید زمانی از برنامه ریزی منابع استفاده نمایید که نیاز به کنترل استفاده از منابع CPU در Instance دارید.
تنظیم CPU_COUNT
با مدیریت منابع فعال باید برای هر Instance فعال روی سرور پارامتر CPU_COUNT تنظیم شود. پارامتر CPU_COUNT یک پارامتر پویا است ولی پیشنهاد به تغییر زیاد آن و یا تنظیم مقدار بالا برای آن نمیشود.
ALTER SYSTEM SET cpu_count = 2;
تنظیم پارامتر تا حدودی ساده است ولی باید مقداری در خصوص مقدار پارامتر بررسی شود. دو دیدگاه اصلی در این خصوص وجود دارد.
– تامین بیش از نیاز: در این رویکرد به هر Instance مقداری پایینتر از تعداد کل CPU های سرور اختصاص داده میشود ولی در مجموع تمام Instance ها به مقداری بیش از تعداد کل CPU های سرور خواهد رسید. در این حالت از اختصاص تمام منابع CPU به یک Instance جلوگیری خواهد شد ولی در صورتی که تمام Instance ها دارای Load بالایی باشند امکان عدم سرویسدهی به آنها وجود دارد.
– قطعهبندی: در این رویکرد مجموع مقادیر پارامتر CPU_COUNT تمامی Instance های سرور کمتر یا برابر مجموع CPU های سرور است. در این حالت هیچ Instance روی کارایی Instance دیگر تاثیری نخواهد داشت.
در تصویر زیر مثالی از دو رویکرد فوق در یک سرور با تعداد ۸ CPU آورده شد.
میزان CPU_COUNT برای هر Instance به میزان نیازهای آن متغیر خواهد بود.
نظارت بر محدودیت Instance ها
تاثیرات مدیریت منابع توسط ستونهای CONSUMED_CPU_TIME و CPU_WAIT_TIME در View های زیر قابل بررسی است:
• V$RSRC_CONSUMER_GROUP
• V$RSRCMGRMETRIC_HISTORY
ستون CONSUMED_CPU_TIME میزان CPU_COUNT مصرف شده توسط گروه مصرف کننده براساس میلی ثانیه و CPU_WAIT_TIME مقدار زمان انتظار برای منابع CPU است.
SELECT name, consumed_cpu_time, cpu_wait_time
FROM v$rsrc_consumer_group;
NAME CONSUMED_CPU_TIME CPU_WAIT_TIME
——————————– —————– ————-
SYS_GROUP 45155 226
OTHER_GROUPS 310 4
ORA$AUTOTASK_MEDIUM_GROUP 23805 864
ORA$AUTOTASK_URGENT_GROUP 3777 17
ORA$AUTOTASK_STATS_GROUP 0 0
ORA$AUTOTASK_SPACE_GROUP 0 0
ORA$AUTOTASK_SQL_GROUP 0 0
ORA$AUTOTASK_HEALTH_GROUP 0 0
ORA$DIAGNOSTICS 375 13
_ORACLE_BACKGROUND_GROUP_ 0 0
۱۰ rows selected.
SQL>
ALTER SESSION SET nls_date_format=’DD-MON-YYYY HH24:MI:SS’;
SET LINESIZE 100
SELECT begin_time,
consumer_group_name,
cpu_consumed_time,
cpu_wait_time
FROM v$rsrcmgrmetric_history
ORDER BY begin_time;
BEGIN_TIME CONSUMER_GROUP_NAME CPU_CONSUMED_TIME CPU_WAIT_TIME
——————– —————————— —————– ————-
.
.
.
۰۳-NOV-2012 14:31:20 ORA$AUTOTASK_HEALTH_GROUP 0 0
۰۳-NOV-2012 14:31:20 ORA$DIAGNOSTICS 0 0
۰۳-NOV-2012 14:31:20 ORA$AUTOTASK_STATS_GROUP 0 0
۰۳-NOV-2012 14:32:20 SYS_GROUP 515 0
۰۳-NOV-2012 14:32:20 OTHER_GROUPS 0 0
۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_MEDIUM_GROUP 0 0
۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_URGENT_GROUP 0 0
۰۳-NOV-2012 14:32:20 _ORACLE_BACKGROUND_GROUP_ 0 0
۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_SPACE_GROUP 0 0
۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_SQL_GROUP 0 0
۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_HEALTH_GROUP 0 0
۰۳-NOV-2012 14:32:20 ORA$DIAGNOSTICS 0 0
۰۳-NOV-2012 14:32:20 ORA$AUTOTASK_STATS_GROUP 0 0
۴۲۰ rows selected.
SQL>
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.