Linux NetMag #3
Titel: SETI -- Search for Extraterrestrial Intelligence
URL: http://www.linuxnetmag.de/de/issue3/m3seti1.html

Tux in space
Auf der Suche nach außerirdischer Intelligenz kann jetzt jeder Computerbesitzer mithelfen,
denn die Auswertung der empfangenen Daten mehrerer  Radioteleskope wird nun über das Internet für jeden Interessierten möglich.

[ Einleitung | setiathome | Setiview | tkseti | X-Seti | Setiherder | Tips ]


 
ET schickt uns einen Peak

Weltweit empfangen riesige Radioteleskope elektromagnetische Wellen aus den Tiefen des Welltalls. In der Hoffnung, Graph von SETI-Datendaß fremde Intelligenzen mit Hilfe dieses Mediums miteinander kommunizieren, oder auch versuchen mit anderen Lebewesen Kontakt aufzunehmen, hofft man einen Beweis für die Existenz außerirdischer Intelligenz zu erhalten.

Erschwert wird die Arbeit der Astronomen dadurch, daß im Weltall durch natürliche Phänomene reichlich elektromagnetische Wellen erzeugt werden. Derartige Wellen sind zwar für die Wissenschafter auch interessant, da sie Rückschlüsse über den Aufbau der Regionen des Weltalls geben (z.B. die 21-cm-Linie, welche Informationen über die Wasserstoff-Konzentration gibt), sie sind aber bei der  Suche nach Wellen künstlichen Ursprungs störend, da sie diese überdecken. Deshalb muß dieses natürliche Hintergrundrauschen herausgefiltert werden, und die übrig bleibenden Intensitätsspitzen, sogenannte Peaks, dann hoffentlich künstlichen Ursprungs sein.  Diese Arbeit ist  jedoch sehr rechenaufwendig, und da an den Radioteleskopen stündlich neue Daten anfallen, hat sich mit der Zeit ein ständig wachsender Berg an noch nicht untersuchten Daten angesammelt.
 
 

neue Möglichgkeiten

Um nun auch diese Daten zu untersuchen, entstand die Idee, die Rechenarbeit über das Internet zu verteilen, und interessierten Benutzern die Möglichkeit zu geben, auf ihrem eigene PC die Daten zu analysieren. So entstand das Projekt [email protected]. Die Algorithmen waren recht schnell programmiert, jedoch dauert die Entwicklung der notwendigen Hardware, welche für die Verwalung und den Versand der Daten benötigt wurde, um so länger. Erreicht wurde dieses Projekt schließlich mit Hilfe öffentlicher Förschungsgelder und der Unterstützung namhafter Firmen. 
Seit einiger Zeit ist der Softwareclient nun mit der Version 1.0 aus dem Entwicklungsstadium herausgewachsen, und wurde auf viele Betriebssysteme portiert.
 
 

Seti-gif[email protected]

Das notwendige Programm zum Bearbeiten der Daten heißt "setiathome". Die verschiedenen Versionen für mehrere Betriebssysteme stehen unter  http://setiathome.ssl.berkeley.edu/ zum Download bereit. 
Nach dem Entpacken des Programms sollte man dieses nach /usr/local/ kopieren und einen symbolischen Link (ln -s) der Binärdatei setiathome nach /usr/local/bin/ setzen, so daß es für alle Benutzer erreichbar ist (Dafür muß auch die Variable $PATH dieses Verseichnis beinhalten).
Vor dem Starten sollte man in seinem Home-Verzeichnis ein Unterverzeichnis "~/setiathome/" anlegen, da dort dann die eigenen Daten abgelegt werden.
Nun sollte man sich in dieses neu erstellte Verzeichnis begeben und von dort aus setiathome aufrufen. (Man muß immer erst in das Verzeichnis wechseln, da dort die Daten abgelegt und bei Programmstart auch gesucht werden. Befindet man sich in einem anderen Verzeichnis, kann setiathome die benötigten Daten nicht finden).
Während des ersten Starts sollte man eine Verbindung ins Internet haben, da man sich ersteinmal beim Seti-Server anmelden muß. Abgefragt werden neben email-Adresse , welche später zur identifikation des Benutzers genommen wird, auch ein beliebiger Spitznahme, das Land in dem man beheimatet ist, die Postleitzahl und ob man die Berechnugen auf einem Schul, Heim oder Arbeitsplatzrechner durchführt. Sind diese Formalitäten erledigt, nimmt setiathome Kontakt zum Server auf, meldet den Benutzer an und läd das erste Datenpaket herunter. Danach startet das Programm sofort mit den Berechnungen.
Da das Programm die CPU zu 100% ausnutzt, kann dieses den Rechner schnell für andere Programme unbedienbar langsam machen. Man sollte setiathome deshalb ersteinmal beenden (Man kann das Programm überall unterbrechen, ohne daß Daten verloren gehen).
Eigentlich war setiathome als ein Bildschirmschoner geplant, der immer dann arbeitet, wenn der Rechner sowieso nicht genutzt wird. Da es unter Linux aber keinen einheitlichen Bildschirmschoner gibt, ist eine derartige Programmeinbindung nicht ohne weiteres möglich gewesen.
Stattdessen bietet Linux die Möglichkeit, einzelnen Programmen verschiedene Prioritäten zuzuordnen. Dies erfolgt mit Hilfe des Befehls "nice". Setiathome unterstützt diesen Befehl sogar als Option, so daß mit

>>setiathome -nice 20

das Programm mit niedrigster Priorität gestartet wird und somit die Arbeit des restlichen Systems nur minimal verlangsamt.
Die Option " -email >/dev/null" unterdrückt jegliche Ausgaben des Programmss und informiert den Benutzer nur in Notfällen  per e-mail.
Hat das Programm die Berechnungen beendet, nimmt es erneut Kontakt zum Setiserver auf, schickt diesem die Ergebnisse zurück und holt sich gleich eine neue Datei für weitere Berechungen. Dies klappt natürlich nur, wenn man eine Standleitung besitzt. Falls das Programm keine Verbindung zum Server aufbauen kann, versucht es alle 60 minuten die Daten loszuwerden. Effektiver ist es in einem solchen Falle, das Programm zu stoppen, und dann, wenn man eine Internetverbindug aufgebaut hat, per Hand erneut zu starten. Denn dann werden die Daten sofort ausgetauscht.
Mit der Option "-stop_after_process" kann man verhindern, daß das Programm gleich nach dem Beenden der Berechnungen versucht eine Verbindung zum Seti-Server aufzubauen. Diese Option ist folglich dann nützlich, wenn man keine Standleitung besitzt.
Wer nur einmal täglich eine Verbindung zum Internet aufbaut und einen so schnellen PC besitzt, daß er die Daten innerhalb der 24 Stunden fertig berechnet bekommt, kann sich auch mehrere "Setis" anlegen. Jedoch benötigt jede Instanz ein eigenes Verzeichnis, in der es arbeiten kann. Ansonsten kann es zu Fehlern kommen, da die Dateien gegenseitig überschrieben werden. Neuere Seti-Versionen erkennen selbstständig, ob in dem Verzichnis schon ein anderer Client arbeitet.
 
 

Setiview

Setiathome läuft unter Linux als Konsolenprogramm und erzeugt keinerlei graphische Ausgaben. Auf dem Prompt wird jeweils ausgegeben, wieviel Prozent bereits abgearbeitet wurden.
Diesen Mißstand wollen nun einige Programme beheben, und bieten graphische Oberflächen für setiathome geschrieben. Setiview ist ein derartiges Frontend, allerdings nicht für X-Windows, sondern auch für die Konsole. Neben Informationen über den Ursprung der Daten (Teleskop, Frequenzbereich, Himmelsrichtung ...) liefert das Programm einen Prozentbalken, der den bisher abgearbeiteten Anteil anzeigt.



 
 
 

TkSeti

TkSeti ist ein weiteres Frontend (Screenshot), diesmal jedoch für X-Windows, und es benutzt TCL/TK 8.0. TkSeti kann Icon TkSetiselbstständig einen Seticlient starten, jedoch auch bei einem bereits laufenden Client die Daten anzeigen. Konfigurieren läßt sich das Programm komfortabel über das Frontend selbst, keine Textdateien müssen per Hand angepaßt werden. Im ikonisierten Zustand zeigt das Programm über den Icon-Namen den bereits abgearbeiteten Prozentsatz.
Die wohl herausragendste Funktion vonTkSeti ist es, den Seti-Client so lange zu stoppen, wie auf dem Computer vom Benutzer gearbeitet wird. Das Programm überprüft dafür regelmäßig die Interrupts verschiedener Devices und erkennt somit, ob diese benutzt werden.
Sinvoll ist es hier die Interrupts der Maus (seriell) und  des Keyboards zu benutzen und ein Zeitintervall von 1 bis 10 Minuten einzustellen. Werden diese beiden Geräte dann nicht benutzt, springt der Seti-Client nach der eingestellten Zeit automatisch an und wird wieder beendet, sobald die Maus oder die Tastatur benutzt wird.

TkSeti-Konfiguration
Dies funktioniert natürlich auch zusammen mit einem bereits installierten Screensaver, der dann zusätzlich anspringt (Der Screensaver sollte dann aber nicht zuviel Rechenzeit benötigen)
Achtung: Falls man ein Programm wie tleds oder NetLED benutzt, welches auf den Keyboard-LEDs den Netzwerk-Verkehr anzeigt, sollte man nur die Interrupts des seriellen Ports einstellen, weil dann ein einzelnen verschicktes oder empfangenes Netzwerkpaket die Interruptzahl der Tastatur erhöht und der Seti-Client beendet wird.
 
 
X-Seti

Icon X-SetiEin weiteres Frontend ist X-Seti, welches sich durch seine ansprechende Oberfläche auszeichnet. Es kann auch mit dem XScreensaver als Plugin zusammenarbeiten. X-Seti bietet die Möglichkeit das Fenster soweit zu minimieren, daß es nur den Prozentbalken anzeigt, dieser ist aber für die dauernde Benutzung etwas überdimensioniert. Vorbildlich ist da schon die Eigenschaft, daß das Icon des Programms auch einen Prozentbalken beherbergt und man somit immer informiert ist, wieviel bereits abgearbeitet ist.
Wer jedoch nicht den XScreensaver benutzt, wird das Programm ständig im Hintergrund laufen lassen müssen, was trotz eines Nice-Wertes von 20 die Arbeit am PC beeinträchtigen kann.
 
 

Setiherder

Ein ganz anders ausgerichtetes Programm ist Setiherder. Dieses dient nicht als Frontend für einen Setiathome-Client, sondern kann gleich mehrere Clients bedienen, die im Netzwerk über verschiedene Rechner verteilt sind. Wer also die Möglichkeit hat, auf mehreren Rechnern gleichzeitig setiathome laufen zu lassen, muß sich nun nicht mehr bei allen Rechnern einzelnd per telnet  zum starten der Programme einloggen, sondern kann alles vom eigenen PC mit einem einzelnen Programm administrieren.
Voraussetzung dafür ist allerdings, daß man auf alle Rechner mit remote-shell (rsh) zugreifen kann, da über diese die Befehle an die Clients geschickt werden. Somit hat man dann immer Kontrolle über alle Seti-Schäfchen im Netz.
 
 

Linux kann´s alleine

In vielen Firmen, die eine Standleitung besitzen, werden die Rechner nachts nicht ausgeschaltet. Jede Nacht liegen somit tausende von Rechnern brach, ohne daß ihre Kapazitäten genutzt werden. In derartigen Fällen bietet es sich förmlich an, den Rechner über Nacht sozusagen der öffentlichen Forschung bereitzustellen und Setiathome darauf laufen zu lassen. Selbst wenn Sie einen Windowsrechner besitzen, können sie das Programm benutzen. Ein Linux-Benutzer hat es allerdings einfacher, denn hier können Sie abends nach Arbeitsende skriptgesteuert das Programm starten lassen und morgens, noch bevor Sie Ihren Arbeitsplatz erreichen, automatisch beenden lassen. Durchführbar ist dies mit Hilfe der Crontab, die zeitgesteuert Programme aufrufen kann. Diese läßt sich entweder über einen Texteditor ändern

>> crontab -e

oder komfortabler über vcron (Siehe LinuxNetMag: vcron und kcrontab).
Zusätzlich benötigen sie auch noch ein Skript, welches das Starten und Beenden des Clients übernimmt. Dieses Skript wurde den init-Skripten nachempfunden, welche dafür zuständig sind, während des Bootens Programme zu starten und beim Reset die Programme wieder zu beenden.
Das Skript liegt hier zum download bereit. (Beachten Sie, daß das Programm als ausführbare Datei gekennzeichnet ist, ansonsten ändern sie dies mit "chmod +x").
Das Skript muß zunächst noch an die eigenen Pfade angepaßt werden, dafür ändert man in den ersten Zeilen die Variable SETIDIR, die zum Verzeichnis zeigen muß, in dem die Daten gelagert werden. NICE gibt an, mit welchem Nice-Wert setiathome laufen soll und muß einen Wert zwischen 0 und 20 besitzen. Je höher der Wert ist, desto geringer ist die Priorität des Programms.
Arbeitet man nun z.B von 9.00 Uhr bis 17.00 Uhr, dann schreibt man in die crontab (nach ausführen des Befehls "crontab -e") in die geöffnete Textdatei:
 

crontab
# starte setiathome täglich um 17.00
00 17 * * * /pfad/zu/seti-script-user start
# beende setiathome täglich um 9.00
00 9 * * * /pfad/zu/seti-script-user stop

Speichern sie die Textdatei ab und beenden sie den Texteditor.
Nun wird setiathome über nacht automatisch gestartet und und morgens beendet. Der dadurch entstehende Netzwerkverkehr ist so gering, daß er keinen Netzwerkadministratator stören sollte.
Sie können mit der Crontab auch das Programm nur am Wochenende starten. Dafür genügt ein Eintrag wie
 

crontab
# starte setiathome am Freitag um 23.00
00 23 * * 5 /pfad/zu/seti-script-user start
# beende setiathome am Montag um 1.00
00 1 * * 1 /pfad/zu/seti-script-user stop

Somit wird das Programm jeden Freitag in der Nacht gestartet und Montag Morgen beendet.
Weitere Informationen über die Benutzung der Crontab erhalten Sie mit 

>> man crontab

oder falls installiert mit

>>tkman crontab