نحوه پیکربندی عملکرد حافظه x86 برای پایگاه های داده بزرگ

  • 2021-02-10

تنظیم عملکرد سیستم های پایگاه داده بزرگ می تواند یک چالش باشد. بسته به سیستم عامل (OS) و سخت‌افزار، ممکن است مشکلات عملکردی وجود داشته باشد که با استفاده از روش‌های تحلیل معمولی مانند گزارش‌های AWR و ابزارهای سیستم‌عامل مانند sar، top و iostat به راحتی قابل تشخیص نباشند.

استفاده از حافظه در محیط های x86 یکی از مسائلی است که به راحتی قابل شناسایی نیست، اما در صورت تجزیه و تحلیل و پیکربندی مناسب می تواند منجر به بهبود عملکرد قابل توجهی شود.

در حال حاضر بیش از هر زمان دیگری، با سیستم هایی که حجم بیشتری از حافظه دارند، استفاده از حافظه موضوعی حیاتی است که باید به آن پرداخته شود. این مقاله نحوه بهترین پیکربندی عملکرد حافظه سیستم x86 را برای پایگاه داده های بزرگ شرح می دهد.

معماری حافظه مجازی برای پلتفرم های x86

معماری حافظه چیپست های x86 و x86-64 از زمان آغاز به کار به طور قابل توجهی تغییر کرده است. با این حال، اندازه صفحه حافظه پیش فرض تغییر نکرده است. این امر می تواند منجر به ناکارآمدی و سربار بیش از حد شود که مقادیر زیادی از حافظه برای برنامه های کاربردی بزرگ مانند پایگاه های داده استفاده می شود.

معماری x86 یک معماری حافظه مجازی است که اجازه می دهد تا حافظه بیشتری نسبت به آنچه که به صورت فیزیکی در سخت افزار موجود است آدرس دهی شود. این کار با اجازه دادن به هر فرآیند برای داشتن حافظه خاص خود انجام می شود که بتواند به آن رسیدگی کند. فرآیند معتقد است که این حافظه برای استفاده در دسترس آن است. این به عنوان حافظه مجازی فرآیند شناخته می شود. در واقع، این حافظه می تواند یا حافظه فیزیکی باشد که در واقع بر روی تراشه های RAM قرار دارد، یا می تواند در یک منطقه اختصاصی روی دیسک فیزیکی ذخیره شود، که به عنوان منطقه مبادله یا صفحه بندی شناخته می شود.

فرآیند نمی داند که آیا حافظه مجازی در RAM یا روی دیسک ذخیره می شود. حافظه توسط سیستم عامل مدیریت می شود. اگر حافظه بیشتری نسبت به مقدار موجود فیزیکی مورد نیاز باشد، سیستم عامل مقداری از حافظه را به منطقه صفحه‌بندی منتقل می‌کند. این فعالیت بسیار ناکارآمد است و یکی از دلایل رایج مشکلات عملکرد است. از آنجایی که دیسک چندین برابر کندتر از RAM است، فرآیندی که "پیجینگ" است، مشکلات عملکردی قابل توجهی را تجربه خواهد کرد.

پایگاه داده اوراکل و مدیریت حافظه لینوکس

هرچه حافظه بیشتری در سیستم استفاده شود، منابع بیشتری برای مدیریت آن حافظه مورد نیاز است. با سیستم عامل لینوکس، مدیریت حافظه از طریق فرآیند لینوکس kswapd و ساختار حافظه Page Tables انجام می شود که شامل یک رکورد برای هر فرآیندی است که در سیستم وجود دارد. هر رکورد شامل هر صفحه حافظه مجازی استفاده شده توسط فرآیند و آدرس فیزیکی آن (رم یا دیسک) است. این فرآیند از طریق استفاده از حافظه پنهان ترجمه پردازنده (TLB)، یک حافظه پنهان کوچک کمک می کند.

هنگام استفاده از مقادیر زیادی حافظه برای پایگاه داده Oracle، سیستم عامل منابع قابل توجهی را برای مدیریت ترجمه مجازی به فیزیکی مصرف می کند که اغلب منجر به ساختار بسیار بزرگ جدول صفحه می شود. از آنجایی که هر ورودی جداول صفحه حاوی ترجمه مجازی به فیزیکی تمام صفحات حافظه است که توسط فرآیند استفاده می شود، برای یک منطقه جهانی بسیار بزرگ سیستم (SGA)، ورودی جداول صفحه می تواند برای هر فرآیند بسیار بزرگ باشد. به عنوان مثال، یک فرآیند پایگاه داده اوراکل که از 8 گیگابایت حافظه استفاده می کند، ورودی جدول صفحه 8 گیگابایت/4 کیلوبایت یا 2, 097, 152 رکورد یا صفحه خواهد داشت. اگر صد جلسه/فرآیند پایگاه داده Oracle وجود دارد، تعداد صفحات را در 100 ضرب کنید. همانطور که می بینید، این تعداد صفحات زیادی برای مدیریت است.

مجدداً، ورودی های Page Tables توسط سیستم عامل برای مدیریت حافظه استفاده شده توسط فرآیندهای موجود در سیستم استفاده می شود. در لینوکس، فرآیند سیستم عاملی که این مدیریت را انجام می دهد kswapd نامیده می شود و توسط ابزارهای سیستم عامل قابل مشاهده است.

حافظه پنهان TLB ورودی‌های Page Tables را به منظور بهبود عملکرد ذخیره می‌کند. کش معمولی TLB بین 4 تا 4096 ورودی را در خود جای می دهد. با میلیون ها یا میلیاردها ورودی جداول صفحه، این حافظه پنهان کافی نیست.

همانطور که قبلا ذکر شد، برای سیستم هایی که از SGA های بزرگ استفاده می کنند، ساختار Page Tables می تواند بسیار بزرگ شود. نمونه خروجی سیستم لینوکس در فهرست 1 ورودی های جدول صفحه را نشان می دهد که 766 مگابایت RAM اشغال می کند. این می تواند سربار قابل توجهی برای سیستم باشد. من شخصا ورودی های Page Tables را در گیگابایت دیده ام.

در سیستم عامل های لینوکس، HugePages یک ویژگی هسته است که به سیستم عامل اجازه می دهد تا از قابلیت های اندازه صفحه بزرگ معماری های سخت افزاری مدرن پشتیبانی کند. برای پایگاه داده اوراکل، فعال کردن HugePages و استفاده از اندازه صفحه بزرگ، حفظ سیستم عامل حالت های صفحه را کاهش می دهد و نسبت ضربه کش TLB را با مدیریت حافظه بیشتر با یک ورودی جدول تک صفحه ای برای یک صفحه بزرگ، به جای ورودی های زیاد برای یک صفحه کوچکتر، افزایش می دهد. صفحهدر لینوکس، حجم صفحه بزرگ 2 مگابایت است.

در Oracle Linux 6 یا Red Hat Enterprise Linux 6 (RHEL 6) ، تعداد صفحات اختصاص یافته در /Proc /Meminfo موجود است ، همانطور که در لیست 1 نشان داده شده است:

لیست 1

در Oracle Linux 6 ، تعداد زیادی از اختصاص داده شده کمی متفاوت هستند ، همانطور که در لیست 2 نشان داده شده است:

لیست 2

مقادیر بزرگ Oracle Linux 6 به شرح زیر است:

  • صفحات آنوژو. تعداد صفحات ناشناس. این پیشخوان در Oracle Linux 6. 5 حذف شده است. مربوط به صفحات شفاف.(برای کسب اطلاعات بیشتر در مورد صفحات شفاف ، به بخش "Place Popsages و Databases Oracle" مراجعه کنید.)
  • PUPAGES_TOTAL. تعداد صفحات عظیممیزان فضا تعداد تعداد زیادی از زمان های 2M است.
  • PUPAGES_FREE. تعداد صفحات عظیم در استخر که هنوز اختصاص داده نشده است.
  • PUPAGES_RSVD. کوتاه برای "محفوظ" ، و تعداد زیادی از صفحات است که تعهد به آن از استخر اختصاص داده شده است ، اما هنوز هیچ تخصیصی انجام نشده است. صفحات بزرگ محفوظ تضمین می کند که یک برنامه در زمان درخواست آنها می تواند صفحات عظیمی را از مجموعه عظیم صفحات اختصاص دهد ، حتی اگر این سیستم برای مدتی بالا رفته باشد.
  • PUPAGES_SURP. کوتاه برای "مازاد" ، و تعداد صفحات عظیم در استخر بالاتر از مقدار در/proc/sys/vm/nr_hugepages است. حداکثر تعداد صفحه های اضافی توسط/proc/sys/vm/nr_overcommit_hugepages کنترل می شود. برای این 0 غیر معمول نیست.
  • Papagesize. اندازه صفحه بزرگ. این در حال حاضر 2048 یا 2 مگابایت است.

راه حل

با فعال کردن صفحات عظیم در لینوکس ، با افزایش اندازه صفحه می توان تعداد ورودی های TLB را کاهش داد. با لینوکس ، اندازه بزرگان 2 مگابایت است. با استفاده از صفحات بزرگتر برای پایگاه داده Oracle SGA ، تعداد صفحات برای مدیریت بسیار کاهش می یابد.

در مثال نشان داده شده در لیست 1 ، تعداد ترجمه های مجازی به فیزیکی برای یک رکورد واحد از 2،097152 به 4،096 کاهش می یابد. با این کار باعث کاهش اندازه ساختار جداول صفحه ، بهبود نسبت HIT Cache TLB و کاهش استفاده از KSWAPD می شود.

توجه: بهبود عملکرد هنگام فعال کردن صفحات بزرگ می تواند چشمگیر باشد.

فعال کردن صفحات عظیم در لینوکس

در لینوکس ، با تنظیم پارامتر اولیه سازی لینوکس VM. NR_HUGEPAGES به تعداد 2 صفحه MB که می خواهید برای پایگاه داده Oracle SGA در دسترس قرار دهید ، قابلیت های HugePages پیکربندی شده است. تنظیم این پارامتر می تواند با بزرگتر کردن آنها تعداد صفحات را کاهش دهد.

توجه: ویژگی مدیریت حافظه خودکار پایگاه داده Oracle که در پایگاه داده Oracle 11 G معرفی شده است ، با Pugegages Linux سازگار نیست. بهبود عملکردی که توسط عظیم ارائه می شود از سهولت استفاده ارائه شده توسط مدیریت خودکار حافظه بیشتر است.

جزئیات مربوط به اجرای پیکربندی PuGepages را می توان در اسناد پشتیبانی Oracle My یافت شده در جدول 1 یافت.

جدول 1. اسناد پشتیبانی اوراکل من

شناسه سند پشتیبانی اوراکل من نام سند
1557478. 1 "هشدار: عظیم شفاف را در هسته های SLES11 ، RHEL6 ، OEL6 و UEK2 غیرفعال کنید"
361323. 1 "صفحات عظیم در لینوکس: چه چیزی است ... و آنچه نیست"
361468. 1 "صفحات عظیم در Oracle Linux 64 بیتی"
749851. 1 "عظیم و پایگاه داده Oracle 11g مدیریت حافظه خودکار (AMM) در لینوکس"
1134002. 1 "Asmm و Linux x86-64 پشتیبانی از صفحات"
401749. 1 "اسکریپت پوسته برای محاسبه مقادیر توصیه شده Linux عظیم / پیکربندی HUGETLB"

علاوه بر پیکربندی VM. NR_HUGEPAGES ، پارامتر اختیاری VM. HUGETLB_SHM_GROUP را می توان با گروه سیستم عامل تنظیم کرد که دارای مجوز برای استفاده از صفحات بزرگ است. این پارامتر به طور پیش فرض روی 0 تنظیم می شود ، بنابراین به همه گروه ها اجازه می دهد تا از صفحات عظیم استفاده کنند. این پارامتر را می توان روی یک گروه سیستم عامل تنظیم کرد که فرآیند پایگاه داده اوراکل بخشی از آن مانند Oinstall است.

تأیید اینکه صفحات بزرگ برای نمونه پایگاه داده Oracle شما فعال شده است

می توانید با بررسی ورود به سیستم هشدار ، صفحات بزرگ را برای نمونه پایگاه داده خود فعال کنید. در هنگام راه اندازی نمونه ، باید قبل از لیست پارامتر ، ورودی هایی مانند موارد زیر را در ورود به سیستم هشدار خود مشاهده کنید:

پایگاه داده های شفاف و پایگاه داده های اوراکل

به تازگی ، در Rhel 6 ، Oracle Linux 6 و Suse Linux Enterprise Server 11 یک ویژگی جدید ، بزرگان شفاف معرفی شد. Plasparent Pubsages تلاشی برای استفاده از صفحات به صورت اتوماتیک و پویا است. متأسفانه استفاده از صفحات شفاف در رابطه با استفاده از صفحات سنتی در حال حاضر مشکلاتی را ایجاد می کند که می تواند منجر به مشکلات عملکرد و راه اندازی مجدد سیستم شود. در یادداشت پشتیبانی اوراکل من 1557478. 1 ، اوراکل توصیه می کند که در رابطه با پایگاه داده های اوراکل از صفحات شفاف استفاده نکنید.

توجه: در Oracle Linux نسخه 6. 5 بزرگان شفاف حذف شده اند.

نتیجه

با استفاده از صفحات بزرگتر ، تعداد ورودی های جداول صفحه کاهش می یابد و بنابراین ، سربار قابل توجهی به حداقل می رسد. پیشرفت حاصل از استفاده از صفحات بسیار قابل توجه است و با میزان حافظه در سیستم و اندازه SGA افزایش می یابد.

همچنین ببینید

درباره نویسنده

ادوارد والن یک اوراکل آس و تکنسین اصلی شرکت تنظیم عملکرد ، یک شرکت مشاوره ای است که متخصص در عملکرد پایگاه داده ، مدیریت ، مهاجرت ، مجازی سازی و بازیابی فاجعه با بیش از 25 سال تجربه است. وی برای عملکرد بهینه تجربه گسترده ای در طراحی معماری سیستم دارد. حرفه وی شامل سخت افزار ، سیستم عامل ، بانک اطلاعاتی و پروژه های مجازی سازی برای بسیاری از شرکت های مختلف است. ادوارد شش کتاب در مورد محصولات اوراکل و پنج کتاب در Microsoft SQL Server نوشت ، و او فقط کتاب Oracle Enterprise Manager Cloud Control 12C Deep Dive Book را برای Oracle Press تکمیل کرد. او همچنین روی معیارهای متعدد و پروژه های تنظیم عملکرد با Oracle Products و Microsoft SQL Server کار کرده است.

ادوارد دارای تجربه معماری گسترده ای است که شامل تمام لایه های پشته ابر/برنامه از ذخیره و سخت افزار ، Hypervisor و سیستم عامل و بانک اطلاعاتی است. این تجربه پایه و اساس کار معماری سیستم را که در گذشته انجام داده بود فراهم کرد.

ادوارد در کالج به عنوان یک فیزیکدان آزمایشی که در فیزیک انرژی بالا در پروژه ها در آزمایشگاه Fermi و مرکز شتاب دهنده خطی استنفورد کار می کند ، شروع به کار کرد. وی پس از کار به طور خلاصه روی ابررسانا Super Collider ، به نرم افزار رایانه و سپس به سخت افزار رایانه و توسعه سیستم عامل منتقل شد که به مهندسی عملکرد پایگاه داده تبدیل شد.

برچسب ها

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.