27.09.2024

Düşük güç kipleri

ACPI güç kipleri şöyle [1]:

S0 : Enerji kablosu takılı çalışma.

S0 low-power idle (modern standby): Bilgisayar düşük güç kipinden yüksek güç kipine çık hızlı geçiş yapar. Bu kipi destekleyen sistemler S1-S3 kiplerini desteklemez. Bilgisayarlardaki bu kip, aslında akıllı telefonlardaki yapıdan esinlenir. Bilgisayar düşük enerji kipinde bile ağa bağlıdır, temel bazı arka plan işlevleri (ağa bağlı mesajlaşma gibi işlemler) hala çalışır durumdadır. İşlemciye ayrılan güç kısıtlanır, RAM daha yavaş güncellenir, diğer çevre birimleri de mümkün olduğunca yavaşlar veya kapanır. Yine de S1-S3 kiplerine göre daha fazla güç kullanır.

S1-S3: Bilgisayar kapalı gibi gözükür. Bu tüketimi S1'den S3'e gittikçe düşer. Ama her sistem bu kiplerden sadece birini destekler. S0'a göre daha az güç tüketir, S4'e göre daha fazla tüketir. Bu kipte RAM'deki veriler canlı tutulur. Ayrıca klavye ve fareden açılmanın mümkün olması için bu cihazlar da enerji harcar. Eskiden kullanılan Suspend-to-RAM S3 kipi için söyleniyordu. Buna ek olarak bir de melez uyku (hybrid sleep) kipinde ise sistem hibernation dosyası oluşturarak olası bir güç kaybında kaldığı yerden devam edebilir duruma gelir.

S4: En az güç tüketen kip. Burada RAM içeriği diske yazılır. Bilgisayarın güç düğmesi haricinde de açılabilmesi için bazı sistem bileşenleri (klavye, fare vs) güç kullanır. Bu kipin eski adı Suspend-to-Disk'ti. Şu anda kullanılan terim hibernation, yani kış uykusu. Ama Türkçe'de bu şekilde kullanılmıyor. Buna hazırda bekletme deniyor.

S5: Bilgisayarın kapalı ama güç bağlantısının olduğu durum.

S6: Bilgisayar kapalı, güç bağlantısı yok.

İngilizce ve Türkçe arasındaki geçiş de önemli:

S0 low-power idle
Sleep / Standby
Uyku (Modern bekleme [3])
S1-S3Sleep
Uyku
S4    
Hibernate    
Hazırda Beklet
S5    
Soft off
Kapalı amaç gücü bağlı
S6    
Mechanical off
Kapalı

Önemli, çünkü  standby'a uyku, hibernation'a da hazırda beklet demek benim için büyük bir kafa karışıklığı. Modern bekleme kipi (İngilcesi de Modern Standby, Türkçesi de Modern Bekleme) ve S1-S3'ü de kapsayan kiplere bazen bekleme kipi/modu (Standby) da denebiliyor. Bu kiplerde güç led'i yanıp söner, bazı sistem bileşenlerinin hala güç tükettiğini ve kullanıcı girişi ile sistemin kaldığı yerden devam ettirilebileceğini göstermek için [4].

Bilgisayarımızın desteklediği kipleri görmek için

powercfg /a

Modern bekleme kipini kapatmak için [2]'dek yöntemler uygulanabilir.

Devreden çıkarmak için:

New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Power\ 
-Name PlatformAoAcOverride -Value 0 -PropertyType DWord

ya da

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

tekrar devreye almak için

Remove-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Power\ 
-Name PlatformAoAcOverride

ya da

reg delete  "HKLM\System\CurrentControlSet\Control\Power" /v PlatformAoAcOverride /f

Bu geçişleri Windows olay görüntüleyicisinden takip etmek için aşağıdaki olayları süzebiliriz:

Günlük: System
Kaynak: Microsoft-Windows-Kernel-Power
Id: 506 (Modern Bekleme kipine giriş), 507 (Modern Bekleme kipinden çıkış)

Bu kapsamda takip edilebilecek olaylar:

Ekran kilitleme/kilidini açma:

Günlük: Security
Kaynak: Microsoft-Windows-Security-Auditing
Id: 4800 (kilitlendi), 4801 (kilit açıldı)

2024-12-26: Linux'ta S0'ya benzeyen s2idle kipi var. Desteklenen düşük güç kiplerini görmek için

cat /sys/power/state

Mevcut durumda hangi modun kullanıldığını görmek için

cat /sys/power/mem_sleep 

Bu dosya

echo s2idle | sudo tee /sys/power/mem_sleep 

ile değiştirilebilir. Burada 

s2idle -> s0
freeze -> s2idle'a göre daha fazla güç tüketen linux'a özgü bir kip.
mem -> S3 (suspend-to-RAM)
disk -> S4 (suspend-to-disk) 

2025-04-06 Ek: Bir linux sistemde cat /sys/power/state komutu bana şu çıkışı verdi:

freeze mem disk

mevcut durumu cat /sys/power/mem_sleep ile kontrol ettiğimdeyse çıkış şöyle oldu:

[s2idle] deep

Buradan şu sonucu çıkardım; s2idle ve deep "mem" kipinin çeşitleri. s2idle bir çeşit modern standby eşdeğeri ama uygulama ve sürücülerin desteği yoksa fazla güç tüketebilir.  Bu durumda deep'e geçmek istersek

echo deep | sudo tee /sys/power/mem_sleep

ile geçilebilir. Ama bazı uygulamaların bu modu da desteklemeyebileceği, bazı uygulamaların sistemi uyandırabileceği belki de benim yaşadığım gibi sistemin hiç uyanamayacağı durumlar olabiliyor.

journal kayıtlarını görmek için

journalctl -k -b | grep -i suspend

Türkçe Linux'lardaki "Askıya al" mem'e karşılık gelir. mem için varsayılanı da mem_sleep içindeki [s2idle] gibi köşeli parantezin içindeki varsayılan belirler.

Türkçe Linux sistemlerdeki "Hazırda beklet" seçeneği de disk'e karşılık gelir. Yani s4/hibernation gibi belleğin içeriğinin diske yazılarak düşük güç kipine geçildiği bir durum.

sistemin komut satırından bu kiplere geçirilmesi için

systemctl suspend
systemctl hibernate

komutları kullanılabilir.

---

[1] https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby-faqs

[2] https://www.elevenforum.com/t/disable-modern-standby-in-windows-10-and-windows-11.3929/

[3] https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby

[4] https://binaryfork.com/sleep-vs-hybrid-sleep-vs-modern-standby-10050/

Hiç yorum yok: