Huge Pages
המאמר היום יהיה על נושא מעניין במערכת ההפעלה Linux.
אני מניח שרובכם לא שמעתם על Huge Pages, לכן היום לאחר המדריך הזה תבינו מה זה ואיך מקנפגים את הערכים שלו כך שהם יהיו אופטימליים לצרכים שלכם.
בקצרה.
ה – Huge Pages הם דפי זיכרון גדולים יותר מהדפים הדיפולטיים.
מערכת ההפעלה מחלקת את הזיכרון בצורת ברירת מחדל לדפים בגודל 4KB (קטנים יחסית).
את ה Huge Pages נוכל להגדיר עד 1GB (שוב אני מזכיר שמדובר בזיכרון – RAM).
כאשר המערכת עולה, במידה והגדרנו Huge Pages היא תשמור לנו בצד את הדפים לטובת אפליקציה ספציפית. החלק הזה ששמור לאפליקציה לא יועבר לדפים רגילים במידה ולא הגדרנו לו.
למה להשתמש ב – Huge Pages?
ב – kernel ישנה טבלה אשר מכילה את המיקום של דפי הזיכרון, לכן כאשר נשתמש בדפים גדולים יותר כך יהיו פחות “חילופים” ותזוזות של דפי הזיכרון וכך הכל יעבוד מהר יותר.
בדרך כלל נשתמש ב – Huge Pages לאפליקציות ספציפיות כמו Oracle Database, אשר דורשות זיכרון רב ובדרך כלל לא יצטרכו דפי זיכרון קטנים. כאשר נגדיר Huge Pages אולי נבזבז פה ושם זיכרון כי החלוקה תהיה פחות מדויקת (דפים יותר קטנים = גמישות בחלוקה) אך היתרון פה יתעלה על החיסרון, כמובן כל Database וה – “Best Practice” שלו.
נו… איך מגדירים את הפלא הזה?!
שמח ששאלתם.
כאשר נריץ את הפקודה:
grep Hugepagesize /proc/meminfo
יצא לנו הפלט הבא:
HUGEPAGESIZE: 2048 KB
כאן ניראה שהגודל של כל Huge Page הוא 2MB (הדיפולט הוא 4kb).
על מנת לדעת כמה huge pages נצטרך להגדיר נוכל להריץ לדוגמא script ייעודי מאתר oracle והוא יעשה את החישובים עבורנו. לא אכנס לפרטים פה.
לאחר שהסקריפט הוציא לנו מספר מסוים נשנה את הגדרות ה huge pages בקובץ הבא:
/etc/sysctl.conf
נשנה את השורה הבאה: (המספר 421 יצא כפלט בסקריפט)
VM.NR_HUGEPAGES=421
על מנת לטעון את הקובץ מחדש נשתמש בפקודה:
sysctl -p
דבר אחרון.
לאחר שהכל קונפג והוגדר נצטרך להגיד לאפליקציה להשתמש בhuge pages, כאן כל אפליקציה מתנהגת שונה אבל הכל מאוד אינטואיטיבי בסופו של יום.