מפתחים קנוניים שוחררו באמצעות רשימת תפוצה של ליבת לינוקס, סט טלאים ל ההטמעה של ניקוי זיכרון אופורטוניסטי, שמטרתו להפחית משמעותית את זמן השינה של המערכת.
אופטימיזציה מושגת על ידי קריאה יזומה של שחרור מבני זיכרון ילדים שאינם מכילים מידע ייחודי וניתנים לשחזור דינמי לאחר חזרתם ממצב שינה (למשל, אזורי זיכרון אנונימיים ושמורי עמוד זיכרון מרובים).
על הטלאים
הרעיון המרכזי האם לאחר מחיקת נתונים מיותרים, גודל תמונת הזיכרון מצטמצם לשמורr לפני שעוברים למצב שינה וכתוצאה מכך נדרש פחות זמן לכתיבה ולקריאה ממדיום איטי.
בְּרִירַת מֶחדָל, בעת שמירת dump זיכרון במצב שינה, הליבה חוסכת זיכרון איך זה עם כל המטמונים, אבל קיימת אפשרות סטנדרטית לשחרור מבנים מיותרים המדמים תנאי משאבים לא מספיקים בשלב הראשוני של המעבר למצב שינה.
תכונה זו ניתן להפעיל באמצעות הפרמטר "/ sys / power / image_size" ומוביל להפחתה ניכרת בזמן לעבור למצב שינה.
Canonical מציעה להוסיף שני פרמטרים נוספים, שיאפשר שחרור של מבנים מיותרים מראש, כך שהמעבר בפועל למצב שינה יושלם במהירות האפשרית והחזרה ממצב שינה לקחה בערך אותו זמן כמו בהחלת הפרמטר.
בדיקות ותוצאות
בדיקה במערכת עם 8 GB של זיכרון RAM ומחיצת החלפה של 8 ג'יגה-בתים תוך שימוש ב 85% מהזיכרון הוצג בהגדרות ברירת המחדל (image_size = ברירת מחדל) ירידה בזמן לעבור למצב שינה 51.56 של 4.19 שניות כאשר תהליך ניקוי הזיכרון העודף החל 60 שניות לפני המעבר למצב שינה.
בשל צמצום גודל תמונת הזיכרון השמורה, זמן ההתאוששות פחת מ -26.34 ל -5 שניות.
הנה הניסיון הראשון לספק ממשק המאפשר למשימות שטח המשתמשים לעורר טיוב זיכרון אופורטוניסטי לפני שינה במצב.
זיכרון זיכרון מראש (למשל, כאשר המערכת אינה פעילה) מאפשר זאת
צמצמו את גודל תמונת המצב של תרדמה והאיצו משמעותית את מצב השינה והתחדשו זמן.
במצב ניקוי רגיל לזיכרון עודף (image_size = 0) הופעל במערכת, הזמן לעבור למצב שינה ירד מ 73.22 ל 5.36 שניות והזמן לחזור ממצב שינה לא השתנה (ירד בשבריר שנייה בלבד, מ -5.32 ל -5.26 שניות).
מקרה השימוש האופייני לתכונה זו הוא לאפשר למופעי ענן בעדיפות גבוהה לעקוף מופעים בעלי עדיפות נמוכה (למשל, מופעים ספוטים [1]) על ידי מצב שינה.
השבת זיכרון אופורטוניסטי יעילה מאוד למקרי תרדמה מהירים המקצים כמות גדולה של זיכרון ונותרים חסרי תועלת ברוב הזמן, תוך שימוש בסט עבודה מינימלי בלבד.
להשתמש
ניתן לבקש את השיטה המוצעת במצבים בהם יש צורך לעבור במהירות למצב שינה וניתן לצפות מראש את הצורך במעבר שכזה.
לדוגמא, במערכות ענן, סביבות וירטואליות בעדיפות נמוכה (סביבות נקודה ב- Amazon EC2) יכולות לעבור באופן דינמי למצב תרדמה ולפנות זיכרון תפוס ככל שצריכת המשאבים העיקריים גדלה.
כאשר העומס מצטמצם בהגדרות ראשוניות, סביבות בעדיפות נמוכה חוזרות ממצב שינה. בתנאים אלה, כדי לשמור על איכות נאותה של השירות, חשוב למזער את זמן הכניסה ויציאה ממצב שינה.
שלב הניקוי המונע יכול להתחיל כאשר מגיעים לרמה מסוימת של העומס העיקרי, שקודמת לרמה שמובילה להקפאת סביבות בעדיפות נמוכה.
מקור: https://lkml.org