© chriskuddl | ZWEISAM, Photocase.com
Aussichtsreiche Würfelkandidaten unter der Lupe
Wissenstransfer
von Nils Magnus
Erschienen im Linux-Magazin
2010/12
Obwohl er einfachen Regeln gehorcht, fordert der Würfelwettbewerb Lösungen heraus, die erst einmal in ein Programm gewandelt sein wollen. Die Implementation humanoider Vorgehensweisen konkurriert dabei mit Brute-Force-Algorithmen. Doch vor dem Showdown steht erst einmal Systempflege.
121 Bots tragen die Meisterschaft im Würfeln beim in Linux-Magazin 09/10 ausgelobten Wettbewerb gegeneinander aus [1]. Was erst als einfache Aufgabe erschien, entpuppte sich als ausgewachsene Logistikfrage. Dass der Wettbewerb die Rahmenbedingungen der Teilnahme vergleichsweise locker spezifiziert, bezahlte die Jury teuer mit dem Einrichten der Turnierumgebung. Allein das Extrahieren der Bots und das Sichten der Begleitschreiben forderte einige Zeit. Anschließend ging es darum, die Bots in einer einheitlichen Umgebung zu entpacken und die notwendige Software zu installieren.
Zwar haben sich die meisten Teilnehmer an die Vorgaben gehalten, die benötigten Debian-Pakete für einen aktuellen Ubuntu-Server anzugeben, aber einzelne baten auch darum, Softwarepakete aus Quell-Repositorys herunterzuladen und zu übersetzen. Manche Sprachen wie Haskell oder Ruby setzen zudem auf eigenen Bibliotheksverwaltungen. Inklusive Abhängigkeiten fanden insgesamt 299 neue Pakete für Compiler, Interpreter und Bibliotheken gegenüber der Standardinstallation ihren Weg auf den Server.
Die meisten Teilnehmer haben ein Makefile beigelegt, mit dem sich sowohl der Code übersetzen als auch der resultierende Bot starten ließ, sofern es sich um eine Compilersprache wie C oder Java handelte. Aber auch bei PHP, Perl oder Python kann das helfen, besonders wenn alle Programme gleichermaßen skriptgesteuert starten sollen.
Kontrahenten abschirmen
Jeder Bot bekam aus Sicherheitsgründen seinen eigenen Sandkasten, wenn auch keinen Sicherheitstrakt: Pro Teilnehmer gibt es auf dem Server einen eigenen Benutzer mit passenden Schreib- und Leserechten, damit niemand über Nachbars Zaun schielen kann, um dort Würfelgeheimnisse zu stehlen. Um die einzelnen Spieler von einem zentralen Verteiler aus zu starten, bekam die Konfigurationsdatei von Sudo eine Anpassung, die die Benutzerübergänge modellierte.
Verkleideter Gameserver
Bei einer anderen Konfigurationsfrage behalf sich die Redaktion mit einem Trick: Die meisten Einsendungen hatten den Host »wettbewerb.linux-magazin.de« und Port 3333 voreingestellt. Anstatt alle diese Angaben auf den zum Turnierbetrieb auserkorenen Mehrkernrechner zu ändern, trug sie in »/etc/hosts« einfach 127.0.0.1 für diesen Hostnamen ein. Durch den Betrieb auf Localhost versprach sie sich einen schnelleren Durchsatz.
Bei näherer Betrachtung war das aber gar nicht der limitierende Faktor: Spielten in der Vorrunde alle Bots in dem Tempo, das sie für richtig hielten, galt es nun die Spielpaarungen in eine deterministische Reihenfolge zu bringen, damit auch jeder gegen jeden antritt. Diese Serialisierung erwies sich als komplizierter als erwartet, zumindest wenn es darum geht, eine größere Anzahl von Matches parallel zu absolvieren.
Der vom Magazin-Leser Roman Held entwickelte Dice-or-Die-Server ist immerhin in der Lage, rund 120 Begegnungen auf einmal zu koordinieren. Da weder der Server noch das Würfelprotokoll Synchronisationsmechanismen zwischen den einzelnen Spielen vorsehen, muss der Turnierleiter abschätzen, ob eine Paarung die virtuellen bereits Würfelbecher in die Hand genommen hat, bevor er die nächsten beiden Kandidaten an den Tisch bittet. Dazu kommt die Erkenntnis, dass zu viele Lagen an Aufrufskripten ihren Tribut zollen: Ein Steuerskript wählt die Paarungen aus, ein zweites bereitet den UID-Übergang zu den individuellen Bots vor, ein Wrapper startet Make mittels »make game«, manchmal zunächst ein Netcat-Wrapper (siehe "Bash Bashing" in dieser Ausgabe), der dann einen Interpreter aufruft, der seinerseits schließlich das eigentliche Skript ausführt. Solche Stacks belegen viele Ressourcen, wie Abbildung 1 zeigt. Viel mehr als 16 parallele Bots sind kaum handhabbar.

|
Abbildung 1: Gut ausgelasteter Wettbewerbsort: Während des Turniermodus hat der Mehrkern-Server einiges zu tun. Tiefere Einkerbungen in der Lastkurve entstehen übrigens vorrangig durch einzelne Prozesse, die hängen und damit weitere Spielpaarungen blockieren.
|
| Whitepaper |
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|