32
Paul R. Wilson & Mark S. Paul R. Wilson & Mark S. Johnstone Johnstone University of Austine University of Austine Texas Texas 1993 1993 Real Time Non-Copying GC לללל ל”ל לל ללללל

Real Time Non-Copying GC

  • Upload
    ossie

  • View
    38

  • Download
    0

Embed Size (px)

DESCRIPTION

Real Time Non-Copying GC. Paul R. Wilson & Mark S. Johnstone University of Austine Texas 1993. מוגש ע”י רם נתנאל. הקדמה. - PowerPoint PPT Presentation

Citation preview

Page 1: Real Time Non-Copying GC

Paul R. Wilson & Mark S. JohnstonePaul R. Wilson & Mark S. Johnstone

University of Austine TexasUniversity of Austine Texas

19931993

Real Time Non-Copying GC

” נתנאל רם י ע מוגש

Page 2: Real Time Non-Copying GC

הקדמה

Garbage Collectionעד היום לא שולב בהצלחה . הדבר גרם לכך ששפות Real Timeבמערכות

לא חדרו לתחומים רבים GCשמשתמשות ב בהם שילוב בתוך חומרה ומערכות הפעלה

ובקרה של מכשירים.

Page 3: Real Time Non-Copying GC

RT בסביבת GCדרישות מ

הבטחת יחס ביצועים קבוע לכל התכניתהבטחת יחס ביצועים קבוע לכל התכניתהבטחת יחס ביצועים קבוע באופן נקודתי בתכניתהבטחת יחס ביצועים קבוע באופן נקודתי בתכניתOverHeadOverHeadקטן ככל האפשר קטן ככל האפשר

Page 4: Real Time Non-Copying GC

תנאים הכרחייםGC שפועל בסביבת RT – חייב להיות אינקרימנטלי

מסוגל לבצע פעולות קטנות בזמן ריצתה של התכנית במקום לעצור את התכנית לזמן ארוך בכל

פעם. )הבטחת יחס ביצועים לטווח קצר(לא מספיק למצוא חסם על אורך פעולות העדכון, צריך למצוא חסם על התדירות שבה יש עדכונים.

)הבטחת יחס ביצועים גלובלית(בכל זמן שהוא מוקצה אחוז מסוים מפעולת ה

CPU לטובת התכנית. )הבטחת יחס ביצועים נקודתית(

Page 5: Real Time Non-Copying GC

מסקנה

שה עדיף במקביל Collectorלכן שרצה תכנית יהיהלריצה Mutatorל להפריע מבלי זיכרון ואוספת

ה של .Mutatorהשוטפת

Page 6: Real Time Non-Copying GC

Write Barrier לעומת Read Barrier

Read Barrierשה פעם פוינטר Mutatorבכל של לקריאה ניגש

שה שהמידע לכך שידאג נוסף קוד Mutatorיתבצע . ה את להפנות למשל עדכני הוא לקרוא עומד

Mutator. אחר למקום

Write Barrierשה פעם אחד Mutatorבכל את לשנות מנסה

, לכך שידאג נוסף קוד יתבצע בתכנית הפוינטרים.Collectorשה בהתאם ונערך השנוי על יודע

Page 7: Real Time Non-Copying GC

Read Barrier

בין Read Barrierבהפעלת סנכרון בעצם ישה שרואה ה Mutatorהתמונה פעולות לבין

Collector ה שרואה שמה פעם שבכל Mutatorבכךה פעולות עם עקבי ישנה Mutatorה Collectorאינו

. ה שלו העולם תמונת מבחינתו Collectorאתשה כמו בדיוק ה Mutatorמתנהג לצורך .GCנעצר

Page 8: Real Time Non-Copying GC

Write Barrier

הוא שקובע וה Mutator ה Write Barrierבהפעלת Collector מעדכן את תמונת העולם שלו לפי

יאלץ Collector כך שיתכן שה Mutatorפעולות ה לבצע יותר פעולות מאשר יהי מבצע אילו ש

Mutator היה עוצר בזמן ה GC.

Page 9: Real Time Non-Copying GC

ה של להיות חייבת הסנכרון על Mutatorהאחריות. פעולותיו את לצפות ניתן לא כי

Page 10: Real Time Non-Copying GC

Read Barrier:תכונות

.עלות גבוהה.עלות גבוהה לא צפוי – יתכן שבפרוש ביטוי אחד יש שימוש לא צפוי – יתכן שבפרוש ביטוי אחד יש שימוש

בהרבה ערכי פוינטרים ולכן קשה לקבוע עלות בהרבה ערכי פוינטרים ולכן קשה לקבוע עלות ..OverHeadOverHeadממוצעת של ממוצעת של

Page 11: Real Time Non-Copying GC

Write Barrier :תכונות

. נמוכה .עלות נמוכה עלות – ב גם יותר טוב ביצועים יחס קיים צפוי ב – יותר גם יותר טוב ביצועים יחס קיים צפוי . . Worst CaseWorst Caseיותר

לסביבת יותר מתאים לסביבת לכן יותר מתאים ..RTRTלכן ה הMutatorMutator ה עכשיו עד שעשה בעבודה תלוי ה אינו עכשיו עד שעשה בעבודה תלוי CollectorCollectorאינו

ה ה ולכן .CollectorCollectorולכן התכנית התקדמות את לעקב יכול .לא התכנית התקדמות את לעקב יכול לא

Write Barrier לאפליקציות יותר כי Real Timeמתאיםה יעשה עבודה כמה חשוב ממש עוד Collectorלא כל

ה לפעולת מפריע .Mutatorאינו

Page 12: Real Time Non-Copying GC

Bakerאלגוריתם Copying Garbage Collectionהאלגוריתם מבצע

Collector וה Mutatorבצורה אינקרימנטלית. ה מדברים ביניהם ע"י העברת הודעות באופן שוטף.

לשם שמירה על עקביות Read Barrierיש שימוש ב לעומת גרף Mutatorשל מה שרואה ה

האובייקטים.

Page 13: Real Time Non-Copying GC

בעיות:

היא Collector וה Mutatorהעברת מידע בין ה כי קיימת הפרעה RTבעקרון בעיה במערכות

נבדקת בתדירות MailBoxלריצת התכנית. אם ה העלות גדולה. אם Mutatorמסוימת ע"י ה יש הפרעה לריצת ה Interruptמשתמשים ב

Mutator.שעלולה להגיע ברגעים קריטיים אשר אמנם כל עדכון בו Read Barrierיש שימוש ב

נעדה מהר יחסית אבל יתכן שעדכונים נעשים בתדירות גבוהה וגורמים לתכנית לא להספיק

למועד הסיום.

Page 14: Real Time Non-Copying GC

לדוגמא:ריצה על רשימה מקושרת

for i=1 to list.size p=p.nextend

אם הרשימה עדיין לא הועתקה ע”י ה Collector היא תועתק איבר איבר בגלל ה

Read Barrier.

אמנם העתקת איבר היא לא ארוכה אבל סך כל העבודה המצטברת תגרום לכך שהתכנית

לא תסיים הזמן.

Page 15: Real Time Non-Copying GC

תגובת האלגוריתם:

ה צעד ל Mutatorבכל את Collectorיורה להביא. ברשימה הבא האיבר

כל לאורך קטן זמן לוקח צעד כל שביצוע למרותה התכנית של את Collectorהרימה מאד יעקב

ב נעמוד שלא ויתכן .deadlineהתכנית

Page 16: Real Time Non-Copying GC

הרחבות:קיימים אלגוריתמים שניסו לשפר את האלגוריתם

שלם Page ע"י פעולות ברמה של Bakerשל ואיטרציות יותר גדולות ופחות תכופות. התוצאה

היא שהתנהגות התכנית עוד פחות ניתנת לצפייה מראש.

Page 17: Real Time Non-Copying GC

הגישה לפתרון

בתכנית אפשרי מסלול שבכל נבטיח לא אנחנוחסם מאשר ליותר יצטבר לא העבודה סך תמידיקרו, לא שהעדכונים להבטיח ננסה אבל קבוע

. מידי גבוהה בתדירותה בין הדוק פחות קשר דורשת כזו Mutatorהבטחה

ה .Collectorלביןב , Write Barrierנשתמש ב GarbageבלבדCollection מבצע .Copyingשאינו

Page 18: Real Time Non-Copying GC

יישום: צבעים בשלושה האובייקטים את לצבוע ניתן

הבנים – כל ואת אותו סרקנו אשר אובייקט שחורשלו.

לא – אבל בסריקה אליו הגענו אשר אובייקט אפור. שכניו כל על עברנו בהכרח

. נסרק – לא שעדיין אובייקט לבן

פוינטרים של עדכון שבכל לכך לגרום צריכים אנוה" י שחור Mutatorע אובייקט שבו למצב נגיע לא

. המצביע וזה יתכן אחרת לבן אובייקט על מצביעיישאר ואז הלבן האובייקט אל Danglingהיחידי

Pointer

Page 19: Real Time Non-Copying GC

לדוגמא:

הלבנים : האובייקטים כל חוקי במצב מתחילנגישים

Page 20: Real Time Non-Copying GC

לדוגמא:

חוקי מצב עדיין

Page 21: Real Time Non-Copying GC

לדוגמא:

לעולם יסרק לא אשר אובייקט קיים

Page 22: Real Time Non-Copying GC

דרכים לפתרוןSnapShot at beginningSnapShot at beginning . יעלם – לא פוינטר . אף יעלם – לא פוינטר אף

דמי משתנה ניצור ערך ישנה שפוינטר פעם דמי בכל משתנה ניצור ערך ישנה שפוינטר פעם בכל. הישן הערך על .שיצביע הישן הערך על שיצביע

Incremental UpdateIncremental Update – פוינטר שישתנה פעם פוינטר – בכל שישתנה פעם בכלל כך על נודיע שחור באובייקט ל שנמצא כך על נודיע שחור באובייקט CollectorCollectorשנמצא

את ישנה או החדש האובייקט את שיסרוק את כדי ישנה או החדש האובייקט את שיסרוק כדי. לאפור .הצבע לאפור הצבע

Page 23: Real Time Non-Copying GC

SnapShot-at-Beginning

: מסלול שנשבר פעם בכל מבטיחה השיטה. לאובייקט חדש מסלול נוצר לאובייקט

ה אשר אובייקט שקיים יתכן לא יכול Mutatorלכןה אך אליו .Collectorלהגיע לא

Page 24: Real Time Non-Copying GC

בעיות אופטימיזציה:

המחסנית על במשתנים שונה טיפול לבנות המחסנית קשה על במשתנים שונה טיפול לבנות קשה על במידע להשתמש ניתן על לא במידע להשתמש ניתן של של LivenessLivenessלא

משתנים.משתנים. של טכניקות עם לשילוב של קשה טכניקות עם לשילוב ו ו GenerationalGenerationalקשה

hierarchical Garbage Collectionhierarchical Garbage Collection.. קשה הזיכרון את שיחרר המתכנת אם קשה גם הזיכרון את שיחרר המתכנת אם גם

. הזה במידע .להשתמש הזה במידע להשתמש

Page 25: Real Time Non-Copying GC

Incremental Update

שומר על התכונה המקומית שלא יווצר מצב שבו יש פוינטר מאובייקט שחור לאובייקט לבן. אם ה

Mutator יוצר פוינטר כזה אז נודיע על כך ל Collector.כדי שיהפוך אחד מהם לאפור

Page 26: Real Time Non-Copying GC

יתרונות אופטימיזציה

פחות קונסרבטיבי - שנוי של פוינטר מאובייקט פחות קונסרבטיבי - שנוי של פוינטר מאובייקטלבן לא מפריע.לבן לא מפריע.

לא ניגע במחסנית עד סוף הסריקה - עוזר לא ניגע במחסנית עד סוף הסריקה - עוזר..Floating GarbageFloating Garbageלהפטר מהרבה להפטר מהרבה

קל יותר להסבה ל קל יותר להסבה לGenerational GCGenerational GC..)ניתן לשלב מידע מהמתכנת )כגון שחרור זכרון(ניתן לשלב מידע מהמתכנת )כגון שחרור זכרון

Page 27: Real Time Non-Copying GC

ניקוי הזכרון

לבצע נרצה . Copyingלא את נשמור לכן מלא - כיווניות דו מקושרות רשימות בתוך האובייקטים

העברתו יהיה שחרורו או אובייקט של צבע ושינוי. לרשימה מרשימה

של חזקות שהם בגדלים רק אובייקטים 2נקצה. פרגמנטציה למנוע נקווה ובכך

Page 28: Real Time Non-Copying GC

יתרונות:

של המחיר לכן אובייקטים של ממשית העתקה אין. בהרבה קטן האלגוריתם יישום

לא התכנית במהלך זזים לא שהאובייקטים מכיווןה את .Mutatorמבלבלים

Page 29: Real Time Non-Copying GC

חסרונות:

תתכן פרגמנטציה גדולה מאד של הזיכרון.

במקרה הגרוע ביותר: אם בכל איטרציה נקצה זיכרון בגודל אחר עד שנגמר ואז נשחרר הכל,

נקצה לכל אובייקט זיכרון מחדש.

למעשה במקרה הממוצע העלות הייתה סבירה.

Page 30: Real Time Non-Copying GC

ישום

Operator ע”י C++האלגוריתם יושם בשפת Overloading ונבחן על מספר תכניות. זמני ריצה

, כנראה בגלל חוסר 10-90הראו פגיעה של % תמיכה מהקומפיילר.

Page 31: Real Time Non-Copying GC

לסיכום:בסביבת Garbage Collectorראינו RealשפועלTime ,של טכניקות במספר לשילוב , GCניתן

לאורך קבוע ביצועים יחס להבטיח בפועל ומסוגל. התכנית ריצת

כולל הוא Write Barrierהאלגוריתם ולכן בלבד , או מיוחדת חומרה דורש ואינו למימוש זול יחסית

. ההפעלה ממערכת מיוחדת תמיכה

Page 32: Real Time Non-Copying GC

תכניות לעתיד

להפעיל בצורה מבוזרתלהפעיל בצורה מבוזרת לשלב לשלבGenerational GCGenerational GC להפעיל מספר להפעיל מספרCollectorsCollectors.בו זמנית. בו זמנית לשכלל את ניהול הזכרון להתמודד עם לשכלל את ניהול הזכרון להתמודד עם

פרגמנטציה.פרגמנטציה.