CCoW: אופטימיזציה של העתקה על כתיבה בהתחשב במיקום המרחבי בעומסי עבודה חלק 2
Apr 02, 2024
גודל העמוד הקטן יכול להיות בעייתי מכיוון שהמערכות הופכות להיות מסוגלות לטפל בכמות עצומה של זיכרון פיזי. עם ארגון טבלת העמודים ההיררכית, כל תרגום כתובת וירטואלי דורש גישה מרובת זיכרון, אחת לכל רמת טבלת עמוד, דבר שאינו מקובל.
ככל שאנשים מתבגרים, הזיכרון יורד בהדרגה. אולם זיכרון פיזי אינו אחד הגורמים המשפיעים ישירות על הזיכרון שלנו. זיכרון קשור לחוזק הקשרים בין נוירונים במוח, לבריאות המוח ולתדירות השימוש בזיכרון.
במוח שלנו, נוירונים מחוברים באמצעות סינפסות. סינפסות אלו מעודדות אותנו לאחסן ולאחזר מידע. עם זאת, ככל שאנו מתבגרים, הקשרים הסינפטיים הללו פוחתים, מה שגורם לזיכרון שלנו להידרדר. זה לא בגלל שהזיכרון הפיזי שלנו מופחת, אלא בגלל שהמוח שלנו עובר שינויים מסוימים המשפיעים על היכולות שלנו.
עם זאת, שימוש במוח שלנו יכול לעזור לנו לשמור על זיכרונות טובים. המוח צריך פעילות גופנית, בדיוק כמו הגוף, הוא צריך פנאי ופעילות גופנית כדי להישאר בריא. פיתוח הרגלי חשיבה טובים יסייע לבריאות המוח וליעילותו. לדוגמה, לימוד דברים חדשים, שימוש בטכניקות זיכרון, משחק פאזלים לוגיים וכו' יכולים לשפר את האיכות והיעילות של המוח שלך.
לכן, זיכרון פיזי הוא פשוט קיבולת האחסון הזמינה למוח. הזיכרון שלנו קשור קשר הדוק לגבולות מה שהמוח שלנו יכול להשיג. על ידי תרגול מתמיד של המוח שלנו, אנו יכולים להפוך את הזיכרון שלנו לעמיד יותר ולשמור עליו ברמה גבוהה. כדי לשפר את הזיכרון, עלינו להתמקד בפעילות גופנית במוח תוך שמירה על גישה חיובית והרגלי בריאות טובים. ניתן לראות שאנו צריכים לשפר את הזיכרון, ו-Cistanche deserticola יכולה לשפר משמעותית את הזיכרון, מכיוון של-Cistanche deserticola יש השפעות נוגדות חמצון, אנטי דלקתיות ואנטי-אייג'ינג, שיכולות לסייע בהפחתת חמצון ותגובות דלקתיות במוח, ובכך להגן על בריאות מערכת העצבים. בנוסף, Cistanche deserticola יכול גם לקדם צמיחה ותיקון של תאי עצב, ובכך לשפר את הקישוריות והתפקוד של רשתות עצביות. השפעות אלו יכולות לעזור לשפר את מהירות הזיכרון, הלמידה והחשיבה, ועשויות גם למנוע התפתחות של הפרעות בתפקוד קוגניטיבי ומחלות ניווניות.

לחץ על דע דרכים לשיפור תפקוד המוח
כדי להפחית את התקורה הגבוהה של תרגום כתובות וירטואלי לפיזי, ארכיטקטורות מודרניות רבות משלבות מטמון לתרגום כתובות. TheMMU שומר מספר תוצאות תרגום עדכניות בלוגיקת חומרה הנקראת מאגר תרגום מבט-הצד, הידוע גם בשם TLB.
בדרך כלל, ה-TLBs של ארכיטקטורות מודרניות יכולים להכיל כ-500 עד 2000 ערכים [6,7]. הערכים מתווספים לפי חומרה כך שליבת המעבד יכולה לחפש את התרגום מהר מאוד. על ידי מינוף המיקום של הפניות לזיכרון, ניתן לבצע תרגומי כתובות רבים מבלי לעבור בטבלת הדף (המכונה TLB hit).
ככל שטביעת הזיכרון עבור יישומים עתירי זיכרון גדלה במהירות, מספר מיפויי הדפים הווירטואליים לפיזיים עבור תהליך גדל גם הוא. עם זאת, עקב מגבלות החומרה, מספר כניסות ה-TLB אינו יכול לעמוד בקצב הצמיחה המהירה של טביעות זיכרון היישומים. לפיכך, שיעורי החמצה של TLB עולים, וגורמים לצווארי בקבוק בביצועים של יישומים עתירי זיכרון [8-11].
כדי להתגבר על מגבלה זו, ארכיטקטורות מסוימות תומכות בגדלים נוספים של עמודים גדולים מהגודל של דפי בסיס של 4 KB. לדוגמה, ארכיטקטורות אינטל מודרניות תומכות בגדלים של 2 MB ו-1 GB [7]. עם גודל עמוד כה עצום, תרגום כתובת אחת יכול לכסות טווח כתובות רחב יותר, ולמעשה להגדיל את הכיסוי שה-TLB יכול לספק עם אותו מספר ערכים.
לדוגמה, מערכת עם 1024 כניסות TLB וגודל עמוד בסיס של 4 KB יכולה לספק כיסוי TLB של 4 MB, בעוד שמספר זהה של ערכים עם עמודים ענקיים של 1 GB מספק כיסוי 1 TB. לינוקס מנצלת את הדף העצום בצורה של דפי ענק שקופים (THPs). כפי שהשם מרמז, לינוקס מספקת באופן מרומז לתהליכי המשתמש דפים ענקיים בכל עת שאפשר.
אםTHP אינו מופעל, לינוקס מקצה זיכרון לתהליכים ביחידת העמוד הבסיסית של 4 KB. אם THP מופעל, לינוקס מנסה להקצות עמוד ענק (2 MB בגודל) במקום עמוד הבסיס, מה שמאפשר מיפוי עמוד גס. הפירוט הגדול הזה מאפשר שיתוף יעיל של דף בין תהליכים של הורה וילד דרך המזלג. במקרה שהקצאת עמודים ענקית אינה אפשרית כרגע, לינוקס נופלת בחזרה להקצאת העמודים הבסיסית. לינוקס סורקת מעת לעת מרחבי כתובות של תהליך כדי למצוא דפי בסיס ולאחד אותם לדפים ענקיים.

היו מחקרים שניסו לקדם דפים ענקיים לביצועים תוך מיסוך עוד יותר את החסרונות שלהם. Ingens [12,13] מציע להכין דפי ענק באופן אסינכרוני מחוץ לנתיב הקריטי.
Hawkeye [14] מציגה תוכנית קידום דפים ענקית המבוססת על דפוסי גישה לזיכרון כדי למקסם את הביצועים עם מספר מינימלי של קידום דפים ענק. Zhu et al. [15] הכליל את תהליכי השימוש בדפי ענק וייעול את מחזור החיים של דפי ענק. חלק ואח'. [16] מאפשרים חורים בדפים ענקיים, ומספקים גמישות בניהול זיכרון עם דפים ענקיים.
הדף הענק, לעומת זאת, הוא חרב להב כפול. בשל גודל יחידת הניהול המוגדל, הקצאת עמודים סובלת מפיצול פנימי. אם טווח כתובות שהוקצה קטן מגודל העמוד העצום, לא ניתן לנצל את שאר העמוד ולהתבזבז. מה שנקרא נפח זיכרון זה יכול להפחית באופן משמעותי את ניצול הזיכרון במערכות עם עמודים ענקיים [12-17].
גודל העמוד המוגדל יכול להשפיע לרעה גם על ביצועי התוכנית. מערכת הפעלה מודרנית מאמצת את ערכת העתק-על-כתיבה באופן נרחב לשיתוף זיכרון יעיל בין תהליכים. עם זאת, ה-CoW מעובד רק לפי גרעיני העמוד הבסיסי.
לפיכך, כדי לטפל בפרה בעמוד ענק, הדף הענק מחולק לדפי בסיס, ורק הדף הפגום מועתק. שבירת דפים ענקיים לוקחת זמן לא מבוטל, וכתוצאה מכך טיפול בתקלות עמוד ארוך לסירוגין. במובן זה, יישומים מסוימים, אפילו עתירי זיכרון, אינם ממליצים להשתמש בדפים ענקיים לביצועים יציבים וניצול זיכרון [4,18].
באופן כללי, ישנם טווחים של מרחב כתובות במרחב הכתובות בתהליך שבו לכל הדפים בטווח יש את אותם הרשאות ומאפיינים. לניהול, מערכות הפעלה מודרניות בדרך כלל מאמצות את הרעיון של 'אזור זיכרון וירטואלי (VMA)' כדי לייצג טווחים כאלה של מרחב כתובות. אנו יכולים לסווג את הדפים במרחב הכתובות של התהליך לפי מקורם.

ניתן לטעון דפים מסוימים מקובץ גיבוי באחסון המשני, המכונה 'עמודים מגובי קבצים'. בעוד שחלק מהדפים מאוכלסים באופן דינמי ללא כל נתוני גיבוי. הדפים עבור מחסנית וערימה הם במקרה זה, מה שנקרא 'דפים אנונימיים'.
2.2. מזלג והעתקה-על-כתיבה
Fork היא אחת מקריאות המערכת הסטנדרטיות של POSIX ליצירת תהליך חדש. כאשר תהליך מפעיל את קריאת מערכת המזלג, נוצר תהליך חדש בתור הבן של תהליך הקריאה.
מתחת למכסה המנוע, מערכת ההפעלה יוצרת את תהליך הילד על ידי שכפול כל מרחב הכתובות של תהליך ההתקשרות. זה מרמז שתהליך הילד צריך להתחיל עם אותם נתונים כמו תהליך האב.
כדי לטפל ביעילות בשכפול מרחב הכתובות, רוב מערכות ההפעלה המודרניות משתמשות בטכניקת העתק-על-כתיבה (CoW). כדי לשכפל את מרחב הכתובות של האב, מערכת ההפעלה אינה מעתיקה כל עמוד. במקום זאת, טבלת הדפים של תהליך הצאצא נבנית על ידי העתקת טבלת הדפים של תהליך האב.
זה הופך למעשה מיפוי משותף למרחב הכתובות של ההורה. בזמן ביצוע המיפוי המשותף, הרשאת הכתיבה לכל עמוד נשמטת על ידי ניקוי סיבית ההרשאה ב-PTE המתאים.
לאחר העתקת המיפוי, ההורים והילדים יכולים לקרוא את הדפים המשותפים בתור הדפים שלהם. כאשר אחד מהתהליכים עושה גישת כתיבה לעמוד, ה-MMU, עקב היעדר הרשאת כתיבה, מפעיל תקלת עמוד. במטפל בתקלות עמוד, מערכת ההפעלה מקצה עמוד חדש, מעתיקה את העמוד המקורי ומעדכנת את מיפוי העמודים המתאים של התהליך שגורם לתקלות בהרשאה בכתב.
בשלב זה, להורה ולילד יכולים להיות נתונים שונים על אותה כתובת וירטואלית. מנגנון העתקה-על-כתיבה זה נמצא בשימוש נרחב כמנגנון המפתח הבסיסי למימוש תכונות זיכרון וירטואלי רבות. באופן ספציפי, קריאות של אזורי ערימה לא מאותחלים מטופלות בדרך כלל באמצעות מיפוי משותף לעמוד אפס, שהוא דף מיוחד המכיל את כל האפסים.
Kernel same-page merging (KSM) היא הטכניקה של ביטול כפילויות של אותם דפים במערכת. מערכת ההפעלה סורקת את הדפים במערכת כדי לזהות דפים עם נתונים זהים. כאשר דפים כאלה נמצאים, מערכת ההפעלה תובעת מחדש את כל העמודים מלבד אחד ומעדכנת את טבלאות הדפים המתאימות כדי לשתף את הדף הנותר.
בעיבוד, הרשאת הכתיבה נשמטת כך שגישת כתיבה שלאחר מכן לדף מזוהה ומועתקת. עם היעילות הגבוהה של העתק-על-כתיבה, יצירת התהליך הופכת יעילה, ואפליקציות עתירות נתונים ממנפות יתרון זה ליצירת עותק נתונים .
ה-Redis, אחד משירותי חנות מפתח-ערך בזיכרון הפופולריים [4], הוא מקרה כזה [19]. ה-Redisis תוכנן לשמור בעיקר את הנתונים בזיכרון כדי לספק תפוקה גבוהה והשהייה נמוכה.
עם זאת, יישומים מסוימים דורשים את התמדה של נתונים מאוחסנים, ומשלים מחדש את העיצוב בזיכרון עם מזלג. ה-Redis מחיל בקשות נכנסות על אינדקס הזיכרון ועל מבני הנתונים בלבד ומפעיל מעת לעת את קריאת מערכת המזלג. זה יוצר ביעילות תהליך צאצא עם תוכן זיכרון משוכפל של ה-Redisprocess המקורי, ותהליך הקריאה (כלומר, התהליך המקורי) ממשיך לעבד בקשות נכנסות.
תהליך הילד מסיט את ביצועו; באמצעות תוכן הזיכרון הנוכחי כתמונת מצב, הוא מסדר מבני נתונים בזיכרון לקבצים, ובכך מבטיח את התמדה של תמונת המצב בזיכרון. לאחר שטיפת תמונת המצב, תהליך הילד מסתיים.
התהליך המקורי יכול ליצור תמונת מצב נוספת באותו אופן, ובקריסת מערכת, ניתן לשחזר את Redis על ידי קריאת תמונת המצב האחרונה. למרות שהמזלג הוא קריאת מערכת שלא יסולא בפז, התקורה שלו ספגה ביקורת.

באומן וחב'. [20] ניתח את המזלג ומצא שהמזלג גורם לירידה בביצועים ביישומים מודרניים. לדוגמה, ככל שיישומים מודרניים הופכים מורכבים יותר, מערכת ההפעלה צריכה לשקול כ-25 מקרים מיוחדים כדי להתחיל לעבד את קריאת מערכת המזלג כדי להתאים למפרט POSIX. הם סיכמו את הבעיות של קריאת forksystem והציעו את התכונות שצריכות להיות לקריאת מערכת המזלג עבור המחשב המודרני.
הם גם מספקים דרכים חלופיות להחלפת המזלג. Zhao et al. [19] הצביע על כך שהטמעת המזלג במערכות הנוכחיות אינה יעילה מכיוון שיישומים עם טביעת זיכרון גדולה דורשים זמן רב כדי להגדיר את טבלת הדפים. כפתרון, הם הכלילו את טכניקת העתק-על-כתיבה כך שטבלת הדפים מועתקת על כתובות כמו גם על דפים רגילים.
For more information:1950477648nn@gmail.com






