Rafał Wysocki wysłał bardzo ciekawy raport na temat działania mechanizmu hibernacji w systemie Linux. Niestety obsługa ACPI i mechanizmów Suspend nie jest mocną stroną Linuksa. Jeżeli problemy z ACPI można zrzucić na producentów sprzętu, którzy nie trzymają się specyfikacji, to problemy z Suspend są w pewnej mierze spowodowane przez deweloperów, którzy oferują aż trzy różne (!) implementacje tego mechanizmu (opisywany poniżej swsusp, suspend2 oraz swsusp3 – rozwiązanie dla przestrzeni użytkownika).
Problem polega na tym, że żadna z tych implementacji nie jest ukończona a ich deweloperzy nie potrafią dojść między sobą do porozumienia, żeby zacząć wspólnie pracę nad jednym, zadowalającym wszystkie strony, rozwiązaniem.
W pierwszej części raportu Rafał opisał schemat działania swsusp – podzielił go na czternaście kroków. Dziewięć pierwszych odpowiada schematowi hibernacji systemu:
1)wyłączane są wszystkie procesory, które nie muszą brać udziału w uruchamianiu systemu
2)zadania zostają zamrożone
3)w razie potrzeby część pamięci jest zwalniana
4)sterowniki urządzeń zostają zamrożone
5)wykonywany jest zrzut obrazu pamięci – niepodzielnie
6)urządzenia zostają wybudzone
7)obraz pamięci jest zapisywany na partycje swap
8)system zostaje wyłączony
Jeżeli podczas tego procesu nie wystąpił żaden błąd, to później możemy zacząć procedurę wybudzania systemu:
9)obraz pamięci zapisany w swap zostaje wczytany do pamięci RAM
10) urządzenia zostają przygotowane do wybudzenia
11) stan pamięci systemu jest przywracany
12) urządzenia zostają wybudzone
13) procesy zostają odmrożone
14) system włącza pozostałe procesory
W dalszej części raportu Rafał opisuje problemy, które występują podczas wykonywania powyższych kroków. Lista jest długa – zaczyna się od ewentualnych problemów występujących podczas wyłączania niepotrzebnych procesorów a kończy na problemach występujących już w przestrzeni użytkownika (szyfrowanie/kompresja zrzutu pamięci).
Po przeczytaniu całego raportu ludzie niezaznajomieni z problemami usypiania/wstrzymywania systemu mogą sobie uzmysłowić skalę złożoności tego procesu. Należy też mieć nadzieję, że po ostatniej ostrej dyskusji podczas OSL deweloperzy różnych mechanizmów Suspend połączą swoje siły i zaczną współpracować nad jedną dobrze działającą wersją. Czego sobie i wszystkim użytkownikom Linuksa życzę.
Archiwalny news dodany przez użytkownika: Michał Piotrowski.
Kliknij tutaj by zobaczyć archiwalne komentarze.