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

לחץ על יודע תוספי מזון כדי לשפר את הזיכרון
3.1. מוֹטִיבָצִיָה
כפי שנדון קודם לכן, מנגנון העתק-על-כתיבה ממלא תפקיד מפתח ביישום תכונות זיכרון וירטואלי במערכות הפעלה מודרניות. עם זאת, היתרונות שלו מבחינת שטח הצטמצמו בסביבות מחשוב מודרניות ועומסי עבודה עתירי כתיבה, הנפוצים במרכזי נתונים [21,22].
טכנולוגיות זיכרון מתפתחות כגון זיכרון אחסון (SCM) וזיכרון מתמשך מאפשרות צפיפות נתונים מוגברת עבור מודולי זיכרון תוך הפחתת העלות ליחידת נתונים.
כיום בניית צומת עם כמות עצומה של זיכרון בסולם הטרה-בייט הפכה לזולה יותר מאי פעם. בנוסף, ספקי שירותי ענן דיווחו שהצמתים במרכזי הנתונים סובלים מניצול נמוך של זיכרון, מה שמותיר 40-50% מהזיכרון ללא שימוש [23-26]. במצב זה, זה הופך להיות אפשרי להחליף שטח זיכרון עבור ביצועים במערכות קריטיות לביצועים [27]. היתרונות במונחים של ביצועים פחתו גם כן.
היתרון הביצועי של העתקה על כתיבה יכול להתאפיין בתדירות ובביצועים של טיפול בתקלות עמוד. בזמן שהוליד תהליך ילד, הרשאת הכתיבה לכל הדפים ירדה. מנקודת המבט של הנכונות, זה בלתי נמנע; עם זאת, זה מוביל לתקלות דפים תכופות לאחר המזלג, במתן כל בקשת כתיבה. הסערה הזו של תקלות דף לא קורית רק לתהליכים של ילדים אלא גם לתהליך האב.
כדי להחמיר את המצב, זמן הטיפול בתקלות הדף לא השתפר לאחרונה, אך נוטה להתארך מסיבות אבטחה. בעבר, כל מרחב הכתובות של הליבה מוופה בהתמדה לחלק ממרחב הכתובות של תהליך המשתמש.
עם זאת, פריסת מרחב כתובות זו מאפשרת לתהליכי משתמש זדוניים לקרוא בעקיפין את הנתונים הקריטיים במרחב הכתובות של הליבה על ידי ניצול הביצוע הספקולטיבי במעבדים [28,29].
כדי לצמצם פגיעות כזו של אבטחה קריטית, מערכת הפעלה מודרנית משתמשת בבידוד טבלת דפי ליבה (KPTI). באופן כללי, רק חלק מוגבל ממרחב הכתובות של הליבה ממופה למרחב הכתובות של התהליך, ושאר מרחב הכתובות של הליבה ממופה באופן דינמי ולא ממופה במהלך ההפרעה וטיפול בשיחות המערכת. זה חייב להיות מלווה בשטיפת TLB, שעלולה לפגוע משמעותית בביצועי המערכת.
בעבודה זו, אנו שואפים לצמצם את התקורה של העתקה על כתיבה על ידי מינוף המיקום המרחבי של הפניות לזיכרון. נכון לעכשיו, ההעתקה על הכתיבה מתבצעת בכל עמוד, ובכל פעם שמתרחשת תקלת עמוד, מערכת ההפעלה צריכה להיות מעורבת. הרעיון המרכזי שלנו הוא להפחית את התדירות של מעורבות מערכת ההפעלה על ידי מינוף המיקום המרחבי של גישה לזיכרון. אם ניגשים לדף לכתיבה, סביר להניח שגם דפים סמוכים ייכנסו לכתיבה בקרוב.
לפיכך, אם נבצע את ההעתקה על כתיבה לא רק עבור הדף הפגום אלא גם עבור דפים קרובים יחד (כלומר, העתקה מוקדמת של דפים סמוכים), נוכל להפחית את התקורה עבור ההעתקה על הכתיבה במהלך הטיפול בתקלות הדף. עם זאת, עלינו להיזהר, לא להעתיק תמיד באופן עיוור את כל הדפים הסמוכים.
אם העמודים המועתקים נכתבים מאוחר יותר, התקורה שנגרמה עבור ההעתקה המוקדמת תוחזר. עם זאת, אם הדפים המועתקים לא נכתבים לאחר מכן, ההעתקה המוקדמת גורמת רק לתקורה נוספת מבחינת זמן ומרחב.

לפיכך, חיוני לזהות את דפי היעד הנכונים להעתקה. גישות דומות הופעלו כדי למזער את התקורה לטיפול בתקלות בדף. לינוקס משתמשת בתכונה המכונה 'תקלות סביב'. בזמן הטיפול בתקלת עמוד, לינוקס יוזמת את הטיפול בתקלות הדף עבור הדפים שנמצאים סביב הדף הפגום [2]. עם זאת, תכונה זו מיושמת רק על תקלות עמוד הקריאה עבור אזורי זיכרון מגובי קבצים.
בהתחשב בכך שהרעיון המוצע מתמקד בכתיבת תקלות דפים עבור דפים אנונימיים, אנו יכולים לטעון שהגישה שלנו שונה מתכונת ה-Fault Around. עיצובים חדישים רבים [12-17] הוצעו כדי לייעל את השימוש ב- עמודי ענק במערכת ההפעלה.
מערכות אלו, במשותף, מציגות סכימה לזהות את הדפים המועמדים הטובים ביותר להמרה לדפי ענק ולקדם ביעילות (כלומר, להמיר דפי בסיס לעמוד ענק) או להוריד מהם (כלומר, להמיר עמוד ענק לדפי בסיס) דפים ענקיים.
עם זאת, ללא קשר לסכימות המוצעות, העתקה-על-כתיבה מתבצעת בגרעיני העמוד הבסיסי בלבד, לאחר פירוק העמוד הענק לדפי בסיס במידת הצורך. לפיכך, מאפייני הביצועים של העתקה-על-כתיבה זהים למערכת ברירת המחדל של לינוקס עם מנגנון העמוד הענק השקוף (THP). לעומת זאת, הסכימה המוצעת שלנו היא ייחודית בכך שהיא מבצעת העתקה-על-כתיבה בפירוט שונה בהתאם לדרגת היישוב בגישה לזיכרון.
3.2. זיהוי היישוב המרחבי
כדי לממש את התוכנית המוצעת, עלינו לשקול שני נושאים מאתגרים. ראשית, יש לזהות את דפי היעד במדויק ובזמן, כך שהתועלת של העותק המוקדמות תהיה מקסימלית בעוד התקורה עבור העותק המוקדמות ממוזערת.
לאחר בדיקת דף על ידי כותב, הדף לא יפעיל תקלות נוספות בעמוד. המשמעות היא למעשה שהמערכת איבדה את ההזדמנות לייעל את גישת הכתיבה. לפיכך, המערכת צריכה להיות מסוגלת לחזות שימוש עתידי בדפים כדי לקבוע אילו דפים יש להעתיק ואילו לא. שנית, זיהוי דפי היעד צריך להיות בעל תקורה נמוכה מכיוון ש-OS אינה יכולה להרשות לעצמה עיבוד גוזל זמן בתת-מערכת ניהול הזיכרון הקריטי לביצועים.
כפי שנדון בסעיף 2, תכונות זיכרון וירטואלי רבות במערכות הפעלה מודרניות מבוססות על מנגנון העתק-על-כתיבה. לפיכך, התקורה יכולה בקלות לגבור על התועלת של ההעתקה-על-כתיבה האופטימלית אם היישום הכולל אינו יעיל מספיק.
כדי לחזות את העתיד של דף, אנו אוספים תחילה את ההיסטוריה של מזלגות עבור תהליכי משתמש. באופן ספציפי, מערכת ההפעלה עוקבת אחר מספר המזלגות שכל תהליך מפעיל. ספירה נמוכה לתהליך מרמזת שיש מעט הזדמנויות לנצל את התהליך, ומערכת ההפעלה אינה צריכה לעקוב באופן מלא אחר תקלות הכתיבה עבור תהליך זה.
לעומת זאת, כאשר תהליך מעורר את קריאת מערכת המזלג יותר מסף, המערכת יכולה לצפות להזדמנות האופטימיזציה. זה קורה עם Redis, שמזעיקה מעת לעת מזלגות כדי לצלם תמונות בזיכרון, או עם סקריפט המעטפת שמזלג מספר פקודות שורת פקודה. בתגובה, המערכת מתחילה לעקוב אחר תקלות הדף עבור התהליך.

לאחר מכן, אנו מציעים שיטה לחזות את הזדמנות האופטימיזציה מההיסטוריה, בהנחה שההתנהגות הכוללת של יישומים לא משתנה באופן משמעותי. לשם כך, אנו מחלקים את מרחב הכתובות של התהליך לאזורים בגודל קבוע. כל אזור שומר על מפת סיביות, כאשר כל סיביות מתאימה לדף באזור. תהליך נוצר כאשר כל מפות הסיביות מנוקים, כמו עבור אזורי זיכרון וירטואלי שאוכלסו לאחרונה (VMAs). כאשר חלק VMA שלם אינו ממופה, גם מפות הסיביות בטווח הכתובות המתאים משתחררות.
מפת הסיביות מוקצית רק לחלקים של VMA המאוכלסים, ופרטי עמוד של 4 KB מסוכמים לסיבית אחת. לפיכך, השטח התקורה עבור מפת הסיביות הוא בערך 0.003% ממרחב הכתובות המאוכלס. בתחילה, הכתיבה מעובדת באמצעות העתק-על-כתיבה כפי שהוא.
גישת כתיבה נלכדת במטפל בתקלות הדף, לפיו מוגדר ערך מפת הסיביות המתאימה. עם הזמן, מפת הסיביות לוכדת ביעילות את הגישה לאזור, ואנחנו יכולים לכמת את מידת הכיסוי. הכיסוי של אזור מחושב כאחוז העתק על דפים כתובים מתוך כל הדפים באזור, באופן הבא:
![]()
נניח שמערכת משתמשת בדפים של 4 KB ומרחב הכתובות מחולק לאזורים של 2 MB.
אז לכל אזור יש 512 4 KB דפים. אם 300 עמודים מועתקים בכתבים, הכיסוי של האזור הוא 300/512 × 100=58.6%. ככל שהכיסוי של אזור גבוה יותר, כך האזור יכול להפיק תועלת רבה יותר מהזדמנות האופטימיזציה של העותק המקדים. מידע כיסוי זה נישא על המזלג ומשמש כמדד לקביעת היתרון של העתקת דפים קרובים.
באופן ספציפי, אם לאזור הזיכרון יש כיסוי גבוה, סביר להניח שהדפים באזור יועברו להעתקה-על-כתוב בסופו של דבר. לפיכך, זה יהיה מועיל להעתיק דפים אחרים באזור תוך עיבוד תקלת דף כתיבה עבור דף. בעוד שהזדמנות אופטימיזציה בהעתקה מוקדמת של דפים קטנה אם הכיסוי נמוך. לפיכך, רק הדף הפגום נכתב על ידי המטפל ב-pagefault.
מעתה והלאה, נתייחס לתכנית זו כאל העתקה-על-כתיבה מבוססת כיסוי או CCoW עבור שאר המאמר. איור 1 ממחיש את הרעיון של CCoW. ישנם שני אזורים, אזורים 0 ו-1, שכל אחד מהם כולל שישה דפים.
הדפים עם גוון ירוק מאוכלסים ב-Copy-on-write.כאשר התהליך מפעיל את קריאת מערכת המזלג, כתוב הרשאת ביטול של כל הדפים, כולל הירוקים, במהלך ההתפצלות. הבה נניח שהסף לקביעת אזור היישוב הגבוה הוא 60%. באזור 0, ארבעה עמודים (עמודים 1, 2, 3 ו-4) הועתקו לכתיבה לפני המזלג, מה שמספק כיסוי של 4/6=66%.
לפיכך, אזור זה נחשב לבעל מיקום מרחבי גבוה, וכל הדפים מועתקים כדי לטפל בתקלת הדף עבור עמוד 3, כמוצל באדום. בעוד שהאזור התחתון מספק כיסוי של 33% שכן שניים מתוך שישה עמודים נכתבו לפני ההעתקה.
לכן, לאזור זה יש כיסוי נמוך יותר מהסף, מה שמרמז על היישוב המרחבי הנמוך באזור. לפיכך, כאשר עמוד 9 נגיש לכתיבה, רק העמוד הפגום מועתק בכתיבה במטפל בתקלות העמוד, בדיוק כמו הליך העתקה-על-כתיבה הרגיל.

For more information:1950477648nn@gmail.com






