لپتاپم را پس از مسیر رفتوآمدی کمی بیش از یک ساعت از کیفم بیرون کشیدم و گرم بود. نه گرمیِ «تازه از روی میز آمده»، بلکه گرمای درون کیف؛ همراه با ۱۸٪ باتریِ ازدسترفته از دستگاهی که ظاهراً تمام آن مدت در خواب بود.
سالها Modern Standby را مقصر میدانستم و هر بار که لپتاپم گرمتر و باتریاش کمتر از انتظارم از کیف بیرون میآمد، زیر لب میگفتم «خوابِ ویندوز بد است». این توضیح آنقدر راحت و دمدست بود که هیچوقت مکث نکردم بررسی کنم اصلاً لپتاپم از Modern Standby استفاده میکند یا نه.
وقتی بالاخره از ویندوز خواستم نشانم دهد چه اتفاقی افتاده است، تقریباً بلافاصله تشخیصی را که داده بودم برهم زد. لپتاپم از حالت خواب سنتی S3 استفاده میکرد و در نشست متناظرِ یک ساعت و بیستویک دقیقهای، هرگز وارد آن حالت نشده بود.
نوع اشتباهی از حالت خواب را مقصر میدانستم
این لپتاپ حتی از Modern Standby پشتیبانی نمیکند

ابتدا ترمینال ویندوز را باز کردم تا حالتهای انرژی پشتیبانیشدهی لپتاپم را بررسی کنم:
powercfg /a
این دستور همهی حالتهای خواب موجود در رایانهی ویندوزی را، همراه با دلایل دردسترسنبودن حالتهای دیگر، فهرست میکند. در لپتاپ من، حالت خواب (S3) و خواب زمستانی در فهرست حالتهای موجود دیده میشدند. حالت آمادهبهکار متصل با شبکه (S0 Low Power Idle) نیز پایینتر و در فهرست حالتهای دردسترسنبودنی قرار داشت، زیرا فیرمویر سیستم از آن پشتیبانی نمیکرد. بنابراین، پیش از آنکه حتی گزارشی تولید کنم، Modern Standby از فهرست مظنونان کنار رفت.
Modern Standby ویندوز از حالت S0 Low Power Idle استفاده میکند و به رایانه اجازه میدهد، بدون خروج از S0، میان فعالیت کم و فعالیت بیشتر جابهجا شود. خواب سنتی S3 رفتاری متفاوت دارد: پردازنده و بخشی از سختافزارهای دیگر خاموش میشوند، پردازش عادی متوقف میشود و فقط حافظهی سیستم روشن میماند تا ویندوز بتواند پس از بیدار شدن رایانه، نشست را بازگرداند.
بنابراین لپتاپم از مدل خواب قدیمیتری استفاده میکرد که بهاشتباه تصور کرده بودم ویندوز آن را کنار گذاشته است. اگر با بستن درِ لپتاپ وارد S3 میشد، برنامهها نباید در طول مسیر رفتوآمد به کار ادامه میدادند. دیگر پرسش این نبود که چرا لپتاپ در Modern Standby اینقدر انرژی مصرف کرده است؛ باید میفهمیدم اصلاً وارد حالت خواب شده یا نه.
ویندوز تفاوت میان صفحهی تاریک و حالت خواب را ثبت کرده بود
نمایشگر خاموش شد، اما رایانه بیوقفه مشغول ماند

ابزاری که نیاز داشتم، از پیش در ویندوز وجود داشت. ترمینال ویندوز را با دسترسی مدیر باز کردم و این فرمان را اجرا کردم:
powercfg /sleepstudy /output "C:\sleepstudy-report.html"
در چند ثانیه، ویندوز فایل HTML را در ریشهی درایو C ذخیره کرد. با وجود نام فرمان، سند با عنوان System Power Report باز شد و سرتیتر آن همان چیزی را تأیید میکرد که powercfg /a پیشتر آشکار کرده بود:
MODERN STANDBY ENABLED No

مایکروسافت هر دو فرمان /sleepstudy و /systempowerreport را ابزارهایی برای تولید گزارشهای تشخیصی دربارهی گذارهای انرژی سیستم معرفی میکند. گزارش حاصل میتواند برای رایانههایی که از مدل انرژی سنتی S3 پیروی میکنند نیز اطلاعات مفیدی فراهم کند. زیر سرتیتر، جدولی زمانی قرار داشت که نشان میداد لپتاپم چگونه میان حالتهای فعال، صفحه خاموش، خواب، خواب زمستانی و خاموش جابهجا شده است.
خاموش شدن نمایشگر لزوماً به این معنا نیست که رایانه وارد S3 شده است. ویندوز میتواند صفحه را تاریک کند، در حالی که بقیهی سیستم فعال میماند و به برنامهها و سختافزار اجازه میدهد همچنان انرژی مصرف کنند.

زمان آغاز گزارش را با لحظهای که در ابتدای مسیر درِ لپتاپ را بستم، تطبیق دادم. ویندوز یک ساعت، ۲۱ دقیقه و ۴۲ ثانیهی بعد را بهجای حالت خواب، با عنوان Screen Off ثبت کرده بود. در آن بازه، لپتاپ ۹٬۹۶۸ میلیواتساعت انرژی مصرف کرد، ۱۸٪ از باتریاش را از دست داد و میانگین نرخ تخلیهی ۷٬۳۲۰ میلیوات داشت.
نشستهای خواب واقعی در بخش دیگری از همان جدول، بهصورت ورودیهای جداگانهی Standby ظاهر شده بودند. ویندوز نمیگفت لپتاپ در طول مسیر بهشکلی ناکارآمد خوابیده است؛ نشان میداد دستگاه در آن مدت هرگز وارد S3 نشده بود. بستن در، نمایشگر را خاموش کرده بود، اما سیستم زیرین بیدار مانده بود. این موضوع گرمای داخل کیف و افت باتری را، بینیاز از هر نظریهای دربارهی رفتار معیوب Modern Standby، توضیح میداد.

این موضوع همچنین توضیح میداد چرا ستون «زمان حالت کممصرف» در گزارش فقط خط تیره داشت. این معیار به رفتار کممصرف سیستمهای Modern Standby مربوط است. لپتاپم از S0 Low Power Idle استفاده نمیکرد؛ بنابراین درصدی از DRIPS برای بررسی وجود نداشت. مستندات مایکروسافت نیز میان مرحلههای Screen Off و Sleep در گزارشهای Modern Standby و مدل سنتی S3 تفاوت میگذارد؛ مدلی که در آن، با رسیدن دستگاه به S3، فعالیت نرمافزاری متوقف میشود.
گزارش، مسئله را بدون حدسزدنِ مقصر دقیقتر کرد
ویندوز پاسخ داد، اما پاسخ مرتبی نبود





در ابتدا انتظار داشتم برنامهای با رفتاری نامناسب پیدا کنم که رایانه را بیدار نگه میدارد. برای بررسی، فرمان داخلی دیگری اجرا کردم:
powercfg /requests
این فرمان درخواستهای فعال مربوط به توان را که برنامهها و درایورها در آن لحظه نگه داشتهاند فهرست میکند و یکی از مفیدترین فرمانها برای عیبیابی مشکلات حالت خواب ویندوز است. برای نمونه، درخواست SYSTEM میتواند به ویندوز بگوید بهجای ورود به حالت خواب پس از مدتی بیکاری، روشن بماند. نتیجه چشمگیر نبود: DISPLAY، SYSTEM، AWAYMODE و EXECUTION همگی None را برگرداندند. تنها مورد فهرستشده، یک Legacy Kernel Caller زیر PERFBOOST بود، نه برنامهای که درخواست SYSTEM مورد انتظارم را نگه داشته باشد.
این موضوع ثابت نمیکرد که هیچ درخواستی با گذار قبلی به حالت خواب تداخل نداشته است. powercfg /requests فقط درخواستهای فعال در لحظهی اجرای فرمان را ثبت میکند؛ بنابراین هر چیزی که پیشتر درخواستش را آزاد کرده بود، تا زمانی که درِ لپتاپ را باز کردم و بررسی را انجام دادم، دیگر دیده نمیشد. مایکروسافت برای موقعیتهایی که باید درخواستها هنگام ظاهر و ناپدید شدن ثبت شوند، ابزارهای تشخیصی بلندمدتتری نیز ارائه میدهد.
با این حال، گزارش برق سیستم مسیر بررسی را تغییر داده بود. دیگر دنبال برنامهای نبودم که هنگام خواب رایانه باتری را تخلیه میکرد؛ دنبال چیزی بودم که مانع رسیدن لپتاپ به S3 شده بود.

نخستین جایی که باید در تنظیمات خواب ویندوز بررسی شود، عملکرد درِ لپتاپ است: Control Panel -> Hardware and Sound -> Power Options -> Choose what closing the lid does. گزینهی On battery باید روی Sleep تنظیم شده باشد، نه Do nothing. سپس بهتر است سطح باتری را یادداشت کنید، لپتاپ را از برق بکشید، در آن را دستکم یک ساعت ببندید و پس از باز کردن، گزارش دیگری تولید کنید.
نتیجهی مهم فقط تخلیهی کمتر باتری نیست. نشست متناظر باید بهشکل Standby ظاهر شود و نشان دهد ویندوز گذار به S3 را کامل کرده است، نه اینکه در Screen Off متوقف مانده باشد.
مشکل خواب بد نبود؛ اصلاً خوابی در کار نبود.
ویندوز ثابت نکرد که لپتاپم در خوابیدن بد عمل میکند. نشان داد که پس از بستن در، دستگاه در سراسر نشست ۸۱ دقیقهای، بهجای ورود به S3، در Screen Off باقی مانده است. این پاسخ بهاندازهی مقصر دانستن Modern Standby راحت نبود، اما چیزی بسیار مفیدتر به من داد: مسئلهای دقیق برای حل کردن.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Oluwademilade Afolabi است. مشاهده مقاله اصلی