تفاوتهای Transparent Huge Page با standard Huge Page

Transparent Huge Page سعی می کند بصورت خودکار و با کمترین مداخله ادمین سیستم عامل وهمچنین صرف نظر از applicationای که در سرور در حال اجرا است، Huge Page را مدیریت کند.

این ویژگی(THP) برخلاف standard Huge Page به صورت پیش فرض در بسیاری از توزیع های لینوکس فعال است.

THP صرفا از صفحات با سایز 2MB را پشتیبانی می کند و برخلاف standard Huge Page، قابلیت swap شدن هم دارد.

البته قابلیت THP با باگهایی هم همراه بود و به طور کلی، Red Hat فعال ماندن این قابلیت(Transparent Huge Page) را برای محیطهایی که دیتابیسها در حال اجرا هستند، توصیه نمی کند.

“THP is not recommended for database workloads.”

اوراکل هم در MOS Note:361323.1، توصیه به غیرفعال کردن این ویژگی در محیطی که دیتابیس اوراکل درآن در حال اجرا است دارد. بر طبق این توصیه اوراکل، فعال بودن THP در محیط RAC ممکن است سبب reboot شدن غیرمنتظره نودهای کلاستر هم شود:

MOS Note:361323.1

“Because Transparent HugePages are known to cause unexpected node reboots and performance problems with RAC, Oracle strongly advises to disable the use of Transparent HugePages.In addition, Transparent Hugepages may cause problems even in a single-instance database environment with unexpected performance problems or delays. As such, Oracle recommends disabling Transparent HugePages on all Database servers running Oracle. This ONLY applies to the new feature Transparent HugePages, Oracle highly recommends the use of standard HugePages that were recommended for previous releases of Linux.”

علاوه بر این نکته، بررسی های تیم اوراکل لینوکس نشان می دهد که فعال بودن THP می تواند تا حدود 30 درصد به پرفورمنس دیتابیس لطمه وارد می کند.

 

غیرفعالسازی Transparent Huge Page

برای غیر فعال کردن این ویژگی، در ابتدا بررسی می کنیم که این ویژگی فعال است یا خیر؟

 [root@myhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

عبارت [always] بیانگر فعال بودن این قابلیت است و عبارت [never] هم به غیرفعال بودن آن اشار دارد. با در نظر داشتن این مسئله، قابلیت THP در سیستم جاری فعال می باشد. همچنین دستور زیر حجم anonymous transparent huge page را نمایش می دهد:

 [root@myhost ~]# cat /proc/meminfo | grep AnonHugePages

AnonHugePages:     73728 kB

علاوه بر دو روش فوق، با کمک دستور زیر هم می توان فعال بودن THP را با جزییات بیشتری مشاهده کرد:

[root@myhost ~]# egrep ‘trans|thp’ /proc/vmstat

nr_anon_transparent_hugepages 36

thp_fault_alloc 242

thp_fault_fallback 0

thp_collapse_alloc 27

thp_collapse_alloc_failed 0

thp_split 3

thp_zero_page_alloc 0

thp_zero_page_alloc_failed 0

برای غیرفعال کردن THP، باید عبارت transparent_hugepage=never را به فایل grub و پارامتر GRUB_CMDLINE_LINUX اضافه کنیم:

 [root@myhost ~]# vi /etc/default/grub

GRUB_CMDLINE_LINUX=”crashkernel=auto rhgb quiet numa=off  transparent_hugepage=never

برای اعمال کردن این پارامتر، نیاز به بازسازی مجدد grub هست. با دستور زیر این بازسازی را انجام می دهیم:

[root@myhost ~]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Generating grub configuration file …

Found linux image: /boot/vmlinuz-4.1.12-94.3.9.el7uek.x86_64

Found initrd image: /boot/initramfs-4.1.12-94.3.9.el7uek.x86_64.img

Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64

Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img

Found linux image: /boot/vmlinuz-0-rescue-d3f957112e484e61890c1e849a44b850

Found initrd image: /boot/initramfs-0-rescue-d3f957112e484e61890c1e849a44b850.img

done

در انتها سیستم را reboot می کنیم. با اجرای دستورات زیر، خواهیم دید که این قابلیت غیرفعال شده است:

 [oracle@myhost ~]$ cat /proc/cmdline

BOOT_IMAGE=/vmlinuz-4.1.12-94.3.9.el7uek.x86_64 root=UUID=3fb8ff10-01d8-4bd5-a363-5aaf4e78bcae ro crashkernel=auto rhgb quiet numa=off transparent_hugepage=never

 [oracle@myhost ~]$ cat /proc/meminfo | grep AnonHugePages

AnonHugePages:         0 kB

 [oracle@myhost ~]$ cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

[oracle@myhost ~]$ egrep ‘trans|thp’ /proc/vmstat

nr_anon_transparent_hugepages 0

thp_fault_alloc 0

thp_fault_fallback 0

thp_collapse_alloc 0

thp_collapse_alloc_failed 0

thp_split 0

thp_zero_page_alloc 0

thp_zero_page_alloc_failed 0

 

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

Comments (2)

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

نشانی ایمیل شما منتشر نخواهد شد.