Hacking, Spiele, Physik und Politik

MIDI-Eingabe in openSUSE 12.1

Da kommt man nach langer Zeit endlich mal wieder dazu seine Hercules DJ Console MK2 anzuschließen, und dann findet Mixxx kein MIDI-Gerät. Die Lösung ist einfach. In aktuellen Versionen von openSUSE sind die Geräte unter /dev/snd nur noch für den Nutzer root und die Gruppe audio verfügbar. Die Lösung: Den eigenen Nutzer der Gruppe audio hinzufügen, neu anmelden und schon geht es wieder. :)

OpenCL-Tracing mit Tau

Um OpenCL-Anwendungen auf der NVIDIA Platform zu tracen gibt es den NVIDIA Visual Profiler. Um sie auf der AMD Platform zu tracen gibt es den AMD APP Profiler. Problem gelöst – oder? Leider gibt es ein paar spezielle Situationen in denen das nicht reicht.

Um OpenCL-Anwendungen auf der NVIDIA Platform zu tracen gibt es den NVIDIA Visual Profiler. Um sie auf der AMD Platform zu tracen gibt es den AMD APP Profiler. Problem gelöst – oder? Leider gibt es ein paar spezielle Situationen in denen das nicht reicht. Der AMD APP Debugger kann zwar auf der Kommandozeile tracen und funktioniert unter Linux, seine Visualisierung ist allerdings als Plugin für Visual Studio implementiert. Die Express-Versionen von Visual Studio unterstützen leider keine Plugins, und Visual Studio kaufen nur um ein Plugin auszuführen? Der inzwischen kostenlose gDEBugger kann zwar unter Linux visualisieren, kann aber nicht auf der Kommandozeile messen. Tau, eigentlich zum Profilen und Tracen von großen Clusteranwendungen gedacht, löst das Problem. Aufgrund seines eigentlichen Anwendungszieles ist es zwar etwas komplexer zu verwenden, aber weniger Aufwand als die Visualisierung der Tracingdaten komplett selbst zu schreiben, wie es mein erster Versuch war. Tau installieren Tau ist für eine Anwendung ihrer Größe recht leicht zu installieren. Zunächst sind die Quellen von http://www.cs.uoregon.edu/Research/tau/downloads.php herunterzuladen. Trotz des Formulars ist hierzu keine Anmeldung notwendig. Anschließend lässt sich Tau mit dem üblichen Zweisatz installieren. Wenn es nur um OpenCL geht ist hierbei keine große Konfiguration notwendig. ./configure -opencl=<pfad zu opencl>make install Tau installiert sich übrigens in ein nach der Architektur benanntes Unterverzeichnis des Build-Verzeichnisses…. Soll es woanders lassen müsste man configure den passenden Pfad via -prefix mitgeben. Man beachte, das es hier nur einen Minus gibt…. Anschließend müssen noch PATH und LD_LIBRARY_PATH angepasst werden, also z.B.: export PATH=$HOME/tau-2.21.1/x86_64/bin/:$PATHexport LD_LIBRARY_PATH=$HOME/tau-2.21.1/x86_64/lib/:$LD_LIBRARY_PATH Trace erstellen Um ein Trace zu erstellen verwendet man tau_exec wie folgt: TAU_TRACE=1 tau_exec -T PROFILE,SERIAL -opencl <anwendung> <argumente der anwendung> TAU_TRACE=1 ist notwendig damit Tau auch Tracing und nicht nur Profiling betreibt. SERIAL ist notwendig damit tau_exec die Anwendung direkt und nicht via mpirun startet. Anschließend existieren mehrere tautrace.0.0.?.trc-Dateien. Da Jumpshot mit slog2-Dateien arbeitet müssen diese noch konvertiert werden: tau_treemerge.pltau2slog2 tau.trc tau.edf -o <egal>.slog2 Trace analysieren Die slog2-Datei kann anschließend mit Jumpshot analysiert werden. Jumpshot ist in Tau enthalten, muss also nicht extra installiert werden. Die slog2-Datei enthält alle Trace-Informationen, kann also problemlos zur analyse auf andere Rechner verschoben werden. Für eine sinnvolle Analyse in Jumpshot empfiehlt es sich die Node aufzuklappen um die einzelnen OpenCL devices und den Host-Thread als einzelne Lanes zu sehen. Leider ist Jumpshot kein besonders nutzerfreundliches Programm, sondern versucht sämtliche Java-Vorurteile zu erfüllen. Deshalb sollte man nach jeder Einstellungsändern – ob ausklappen der Lanes oder An- bzw. Abwahl von einzelnen Ereignissen – den Refresh-Knopf nutzen.

ACLs – Dann klappt auch das Inotify bei Mediatomb

Die traditionellen Unix-Dateiberechtigungen stoßen öfter mal an ihre Grenzen. Zum Beispiel bei meinem Versuch Mediatomb auf meinem Homeserver Inotify verwenden zu lassen. Die Lösung für diese Limitierung sind ACLs. Hier zeige ich, wie man diese für Mediatomb sinnvoll setzen kann.

Die traditionellen Unix-Dateiberechtigungen stoßen öfter mal an ihre Grenzen. Zum Beispiel bei meinem Versuch Mediatomb auf meinem Homeserver Inotify verwenden zu lassen. Die Lösung für diese Limitierung sind ACLs. Hier zeige ich, wie man diese für Mediatomb sinnvoll setzen kann. Den Inotify-Modus möchte ich in Mediatomb aus zwei Gründen verwenden. Ersten muss man dann nicht warten bis der nächste Scan nach neuen Dateien abgeschlossen ist, denn meistens möchte man die Datei ja sofort anschauen. Zweitens muss Mediatomb dann nicht immer wieder den Verzeichnisbaum ablaufen wenn sich gar nichts geändert hat. Im Idealfall können die Festplatten also deutlich länger schlafen. Das Problem mit dem Inotify-Modus besteht darin, dass Mediatomb hierfür Schreibberechtigung auf den Verzeichnissen benötigt, welche es auf Änderungen überwachen soll. Klassisch kann man aber ja nur die drei Berechtigungen – Eigentümer, Gruppe und den Rest – setzen. Prinzipiell kann man natürlich immer wenn man ein Verzeichnis anlegt anschließend Eigentümer oder Gruppe passend umsetzen, dann ist Mediatomb aber schon gescheitert. Eine bessere Lösung sind ACLs, mit denen man beliebig viele Berechtigungen vergeben kann. Außerdem ist es mit ACLs auch einfach Default-Werte zu setzen welche anschließend für alle im Verzeichnis angelegten Dateien und Unterverzeichnisse übernommen werden. Meine ACL für das oberste Verzeichnis sieht aus wie folgt: user::rwxuser:mediatomb:rwxgroup::rwxmask::rwxother::r-xdefault:user::rwxdefault:user:mediatomb:rwxdefault:group::rwxdefault:mask::rwxdefault:other::r-x Der Nutzer und die Gruppe können im Verzeichnis lesen und schreiben, dadurch kann zum Beispiel meine Frau auch die Fotos umsortieren. Alle anderen können das Verzeichnis lesen. Dies könnte man auch restriktiver handhaben, aber da Mediatomb den Inhalt dieser Verzeichnisse aller Welt verfügbar macht hat eine weitere Einschränkung wenig Sinn. Der Benutzer mediatomb bekommt explizit Lese- und Schreibberechtigung für dieses Verzeichnis. Dadurch kann Mediatomb dann Inotify verwenden um das Verzeichnis auf Veränderungen zu überwachen. Besonders wichtig sind die mit default: beginnenden Einträge. Diese legen wiederum die ACL fest welche in diesem Verzeichnis neu angelegte Dateien und Unterverzeichnisse bekommen. Bei Unterverzeichnissen werden diese außerdem wieder als Default übernommen. Das hier ein x in den Berechtigungen steht macht übrigens nicht jeden Datei ausführbar. Diese Berechtigungen werden immer mit dem vom anlegenden Programm angegebenen Berechtigungen kombiniert. So sind Verzeichnissen dann automatisch ausführbar (sonst könnte man ihre Inhalte nicht sehen), und normale Dateien nicht – es sei denn sie werden explizit als ausführbar angelegt. Um diese ACL auf einen bestehenden Dateibaum anzuwenden packt man sie am besten in eine Datei, in meinem Fall habe ich sie einfach acl genannt, und wendet sie mit setfacl rekursiv an. setfacl -R --set-file acl /OberstesVerzeichnis/ Hierbei gibt es noch einen kleinen Trick. Die Berechtigung X, anstelle von x macht eine Datei nur ausführbar wenn sie Verzeichnis oder bereits ausführbar ist. So verhindert man mit folgender ACL, dass alle Dateien ausführbar werden, stellt aber sicher, dass Verzeichnisse angezeigt werden können. user::rwXgroup::rwXother::r-Xmask::rwXuser:mediatomb:rwXdefault:user::rwxdefault:group::rwxdefault:other::r-xdefault:mask::rwxdefault:user:mediatomb:rwx

Bessere D3-Startlinks für http://d3.descent.cx/

Das hier vorgestellte Skript baut die Seite http://d3.descent.cx/ so um, dass die Links zu den Spielen durch Links mit dem Protokoll d3 ersetzt werden. Hat man z.B. Vortex installiert, so kann man durch den Klick auf den Link direkt Descent 3 starten, welches dann mit dem korrekten Server verbindet.

Seiten

Sollten dir die Artikel auf dieser Seite gefallen und du Bitcoin für ein interessantes Experiment halten, so schicke doch eine kleine Spende an 14pQyjx5EFQCwPBkXMTz5nTcfPsnjHmWqA.

Subscribe to Marix.org RSS