• בלוג
  • עמוד 114
  • מצב שינה בחלונות: קצת יותר ממה שרציתם לדעת

מצב שינה בחלונות: קצת יותר ממה שרציתם לדעת

16/10/2021

מצב שינה הוא מהפיצ'רים הכי משעממים שיש במחשב. כל מה שאתה רוצה זה שהוא יעבוד כמו שצריך, כלומר שכשהמחשב לא מחובר לחשמל ואני לא עובד איתו שגם לא יבזבז סוללה. מפה מתכנתים מתחילים לגזור כל מיני תנאים כמו:

  1. אם הלפטופ עובד על סוללה וסוגרים את הכיסוי יש להקפיא יישומים שלוקחים הרבה סוללה.

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

  3. אם המחשב לא בשימוש אפשר לסגור את התצוגה.

ועוד אינסוף דברים קטנים שיחד מרכיבים את הפיצ'ר שנקרא מצב שינה. ב Windows הפיצ'ר הזה עבד לי מספיק גרוע כדי שאצטרך לחקור אותו ולנסות לתקן, אלה הדברים שגיליתי:

1. מצבי שינה קלאסיים: S1, S2, S3

מהר מאוד מתכנני מערכות הפעלה הבינו שכדאי שיהיה "מצב עבודה" מיוחד שיצרוך פחות סוללה. אנחנו קוראים לזה מצב שינה, ולמעשה יש מספר מצבים שמסמנים מספר דרגות של חיסכון בחשמל. מצבי השינה מסומנים ב S ואחריו מספר, וככל שהמספר יותר גבוה כך המצב יותר חוסך בסוללה. כך מצב שינה S3 הוא יותר חסכוני ממצב S2, והוא יותר חסכוני ממצב S1.

בשביל לגלות איזה מצבי שינה נתמכים במערכת שלכם אתם יכולים לכתוב מ cmd:

powercfg /a

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

2. מצב שנת חורף (Hibernation)

מצב השינה הרביעי מסומן ב S4 וקיבל את הכינוי המיוחד Hibernation. בשלושת מצבי השינה הרגילים המחשב ממשיך לספק חשמל לזיכרון ולכן כל מצב המערכת נשמר שם. במצב S4 המחשב סוגר את החשמל גם לרכיבי הזיכרון. כדי להתעורר ממצב S4 המחשב כותב קובץ מיוחד לדיסק לפני הכניסה למצב זה והיציאה ממצב Hibernation היא כמעט כמו הדלקה מחדש של המחשב - רק שבמקום לחזור למצב זיכרון "נקי" מערכת ההפעלה קוראת את הקובץ ומאתחלת את ה State ממנו.

במצב שנת חורף החיסכון בחיי סוללה הוא הגדול ביותר, אבל גם זמן ההתעוררות ממצב זה הוא הארוך ביותר.

3. מצב Fast Startup

אחרי שאנחנו מבינים מה זה Hibernation קל להבין עוד הגדרה שמופיעה בהרבה מסכי ניהול צריכת חשמל ונקראת Fast Startup. הרעיון פה הוא שאפשר להשתמש ב Hibernation כדי לקצר את זמן ההדלקה של המחשב אחרי כיבוי: במקום לכבות לגמרי את המחשב ה Windows בסך הכל סוגר את כל היישומים ומנתק את המשתמש הנוכחי, ואז נכנס ל Hibernation. ההדלקה הבאה כבר לא תהיה הדלקה מאפס אלא רק יציאה מ Hibernation ולכן תהיה מהירה יותר.

החיסרון היחיד של הפיצ'ר הזה הוא שיש דברים ש Windows עושה רק בהדלקה מחדש - למשל התקנת עידכונים. אם אתם עובדים קבוע עם Fast Startup ותמיד מכבים את המחשב אז לא תהיה לו הזדמנות להתקין את העדכונים. אני לא חושב שזה מצב ריאלי כי Windows ממילא דורש ממני לעשות Restart משהו כמו 3 פעמים בשעה ו Restart אינו מושפע ממצב זה.

4. מצב שינה מודרני S0

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

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

5. איך להחזיר את מצב השינה הקלאסי במערכת Windows 10

אחרי שלמדתי הרבה יותר ממה שרציתי לדעת על מצבי שינה של מערכת ההפעלה הבנתי שאני מעדיף לוותר על Modern Standby, לחסוך את ההדלקה המיידית ולחזור למצבי השינה הקלאסיים כדי לחסוך בסוללה בזמן שהמחשב לא בשימוש.

ברמה הטכנית השינוי לא מופיע במסכי ההגדרות של חלונות. הצלחתי למצוא את הטריק ברדיט כאן: https://www.reddit.com/r/Dell/comments/h0r56s/gettingbacks3sleepanddisablingmodern/

בקצרה מה שעושים זה להוסיף מפתח ל Registry באמצעות הרצת הפקודה:

reg add HKLM\System\CurrentControlSet\Control\Power /v PlatformAoAcOverride /t REG_DWORD /d 0

6. מה עושים כשזה לא עובד

אחרי ששיכנענו את המחשב לוותר על Modern Standby ולחזור להשתמש במצב שינה קלאסי נשארה רק בעיה אחת - זה לא עבד. לפחות אצלי על המכונה. מה שקרה שעכשיו בחלק מהפעמים שהמחשב נכנס למצב שינה הוא התרסק מיד בכניסה למצב שינה וכשניסיתי להעיר אותו גיליתי מחשב תקוע. בחיפוש באינטרנט הדבר היחיד שהצלחתי למצוא היה אנשים שמקטרים על משהו שנקרא BSOD, ואחרי עוד חיפושים למדתי שזה ראשי תיבות של Blue Screen Of Death שזאת הדרך של אנשים לדבר על התרסקויות של Windows (למרות שבהתרסקות הספציפית אצלי לא היה שום מסך כחול כי זה היה בכניסה למצב שינה).

הפיתרון בכל מקרה היה להיכנס ל Event Viewer ושם למצוא את ההודעה על אותה התרסקות. ההודעה היתה מסוג Bugcheck ולוותה בטקסט הסבר קצר שאומר שמצב הזיכרון שגרם להתרסקות נשמר בקובץ C:\Windows\memory.dmp. את הקובץ הזה אפשר לפתוח באמצעות תוכנה בשם windbg שאותה אפשר להוריד מכאן: https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

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