Czy mogę mieć silniejszy tryb laptopa w systemie Linux?
Chcę obrócić dysk twardy i uniemożliwić jego uruchomienie, nawet jeśli coś chce przeczytać coś, co nie jest w pamięci podręcznej. Ogólnie chcę mieć te tryby:
- Normalna
- Aktualny tryb laptopa
- Silniejszy tryb laptopa: włącza się tylko wtedy, gdy trzeba przeczytać coś, co nie jest buforowane (i buforować). Żadnych spinów, żeby coś napisać, chyba że naprawdę pamięć pamięci (wyjątek: wyraźne polecenie „synchronizacji” w konsoli). Jądro może w tym celu utrzymywać procesy w trybie uśpienia D przez 10 sekund.
- Wymuszony tryb laptopa: nie obracaj się, kropka. Nadal obrażaj procesy w trybie uśpienia, chyba że wyłączę ten tryb. Jakby zamiast dysku twardego była bomba.
Chcę również mieć śledzone czasy dostępu (mount -o atime), ale nie chcę, aby dysk twardy był rozpinany tylko w celu ich aktualizacji.
Czy są jakieś ustawienia lub łatki jądra, które mogą się do tego zbliżyć?
Może powinienem napisać specjalny harmonogram IO dla „trybu wymuszonego laptopa”? Np. W echo suspend > /sys/block/sda/queue/scheduler
celu zablokowania napędu i echo cfq > /sys/block/sda/queue/scheduler
odblokowania go ponownie?
Odpowiedzi:
Szybko zakodowano „tryb wymuszonego laptopa” jako programista io. Testowane najpierw w UML, a następnie na moim laptopie, nawet bez restartu.
http://vi-server.org/vi/0001-block-Introduce-hung-iosched.patch
Kiedy wydać
echo hung > /sys/block/sda/queue/scheduler
, a następniehdparm -y /dev/sda
twardych dysków i przystanków nie odezwie.Kiedy muszę coś przeczytać, po prostu to robię ”
echo cfq > /sys/block/sda/queue/scheduler
.Widzę też, jakie procesy chcą powodować spinup (są one uśpione). reiserfs i pdflush zostają zawieszone. Następnie syslogd.
Aby zapobiec próbom synchronizacji, tymczasowo wyłączam synchronizacje
echo 0 > /proc/sys/fs/sync-enable
. Powinno być mniej lub bardziej bezpieczne, ponieważ dysk twardy jest już zamknięty. Zapewnia to http://vi-server.org/vi/0001-fs-Introduce-sync-enable-flag.patch .źródło