sysdba.ir

وبلاگی برای انتشار تجربیات شخصی راهبر پارسی اوراکل

sysdba.ir

وبلاگی برای انتشار تجربیات شخصی راهبر پارسی اوراکل

Transparent Huge Page

سه شنبه, ۲۶ دی ۱۳۹۶، ۰۲:۵۹ ب.ظ

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

در این مستند به دو سازوکار Transparent Huge Page و Huge Page در نگارش هفتم سیستم‌عامل لینوکس به منظور میزبانی نگارش ۱۲.۲ پایگاه‌داده اوراکل پرداخته می‌شود.

در سازوکار Transparent Huge Page به صورت پویا میزان حافظه بکار گرفته شده برای بلوک‌های بزرگ‌تر را تنظیم می‌شود. این عملیات از طریق kernel khugepaged thread انجام می‌شود و به صورت پیش‌فرض فعال می‌باشد. در صورتی که در سازوکار Standard Huge Page میزان حافظه بکار گرفته شده برای بلوک‌های بزرگ‌تر در زمان Startup منظور شده و متغیر نمی‌باشد. سازوکار Standard Huge Page به صورت پیش‌فرض غیرفعال می‌باشد.

اوراکل بدلیل تاخیر ذاتی Transparent Huge Page پیشنهاد می‌کند از این سازوکار استفاده نشود. همچنین راه‌اندازی Standard Huge Page از طرف اوراکل توصیه می‌گردد. نحوه راه‌اندازی Standard Huge Page پیش‌تر تشریح شده است. در ادامه به غیر فعال کردن Transparent Huge Page پرداخته می‌شود.

  1. بررسی وضعیت کنونی THP (فعال)
[root@node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never
  1. اصلاح پارامتر مربوطه در تنظیمات هسته لینوکس (افزودن عبارت transparent_hugepage=never به انتهای خط GRUB_CMDLINE_LINUX در فایل //etc/default/grub

 

[root@node1 ~]# cat /etc/default/grub

GRUB_TIMEOUT=5

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL_OUTPUT="console"

GRUB_CMDLINE_LINUX="nomodeset crashkernel=auto rd.lvm.lv=vg_os/lv_root rd.lvm.lv=vg_os/lv_swap rhgb quiet transparent_hugepage=never"

GRUB_DISABLE_RECOVERY="true"

3. ایجاد فایل تنظیمات اصلی هسته از نمونه فایل اصلاح شده

  • سیستم‌های مبتنی بر BIOS
[root@node1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
  • سیستم‌های مبتنی بر UEFI
[root@node1 ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

4. راه‌اندازی مجدد سرور

[root@node1 ~]# systemctl reboot

5. احراز وضعیت

[root@node1 ~]# cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.10.0-514.10.2.el7.x86_64 root=/dev/mapper/vg_os-lv_root ro nomodeset crashkernel=auto rd.lvm.lv=vg_os/lv_root rd.lvm.lv=vg_os/lv_swap rhgb quiet transparent_hugepage=never LANG=en_US.UTF-8

 

  • محمدحسین چهاردولی

نظرات (۰)

هیچ نظری هنوز ثبت نشده است
کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
تجدید کد امنیتی