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 پرداخته میشود.
- بررسی وضعیت کنونی THP (فعال)
[root@node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
- اصلاح پارامتر مربوطه در تنظیمات هسته لینوکس (افزودن عبارت 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
- ۹۶/۱۰/۲۶
- ۷۹۱ نمایش
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.