Login
Newsletter
Werbung

Mo, 24. Oktober 2011, 15:32

Software::Systemverwaltung

Linux Suspend Daemon vorgestellt

Kernel-Hacker Neil Brown hat die erste Version eines Daemons entwickelt, der das System schlafen legt, wenn es nichts zu tun hat, und dem Benutzer weitreichende Kontrolle über den Vorgang gibt. Damit demonstrierte er, dass die Behandlung dieses Problems vollständig außerhalb des Kernels erfolgen kann.

Um möglichst wenig Energie zu verbrauchen, muss ein Rechnersystem so oft wie möglich ganz oder teilweise in einen energiesparenden Schlafzustand gehen. Der Linux-Kernel bietet seit Jahren mit pm_qos einen Mechanismus dafür. Als Google Android entwickelte, fand es diesen Mechanismus jedoch unzureichend und entwickelte einen eigenen, die sogenannten »wakelocks«: Ein Wake Lock ist in der Android-Welt ein Mechanismus, der das System davon abhält, sich in einen Stromspar-Zustand zu begeben - etwa weil sich dadurch die Latenzzeiten bei der Verarbeitung von Ereignissen erhöhen können.

Wakelocks wurden 2009 zur Aufnahme in den Kernel vorgeschlagen, stießen aber auf erhebliche Kritik, auch wegen grober Fehler in der Implementierung, und wurden Ende 2009 wieder aus dem Kernel entfernt, nachdem Google keine Anstalten machte, die Patches zu verbessern. Die Kernel-Entwickler stimmten allerdings zu, dass es ein reales Problem zu lösen galt, und es wurden verschiedene Lösungen vorgeschlagen, von denen sich aber keine durchsetzen konnte. Die meisten hätten Änderungen an vielen Treibern erfordert und wurden als zu intrusiv angesehen.

Zuletzt war es Rafael Wysocki, der einen Patch für diese Funktionalität vorschlug, doch aus dieser hielt der Begutachtung nicht stand. Als Reaktion darauf entwarf Neil Brown ein neues Konzept, das lediglich auf Daemonen beruht und ganz ohne Kernel-Änderungen auskommt. Eine Woche später meldete er sich mit einer Implementierung dieses Konzepts zurück, die er eigentlich gar nicht machen wollte. Aber offenbar hatte er gerade Lust darauf; der Linux Suspend Daemon (lsusd) war geboren.

Tatsächlich nutzt die Implementierung drei Daemonen und weitere Tools. Ihr Konzept ist sehr einfach und nutzt vorhandene Mechanismen, inbesondere Dateisperren und Named Pipes. Die Aufgabe von lsusd ist es, das System ins RAM zu suspendieren, wann immer es möglich ist. Programme wie die Sitzungsverwaltung des Benutzers und andere Anwendungen können Einfluss darauf nehmen, was darunter genau zu verstehen ist. So kann eine Anwendung anfordern, dass das System nicht suspendiert, solange sie eine Sperre auf die Datei /var/run/lsusd/disabled hält. Es könnte sich beispielsweise um ein Präsentationsprogramm handeln, das verhindern will, dass während der Präsentation der Bildschirm dunkel geschaltet wird. Verschiedene andere Dateien dienen zur Anforderung eines sofortigen Suspend-Versuchs und zur Kommunikation mit den Clients.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung