xerophil Ein privates Weblog von xero

9Apr/120

Ghostery – Das Anti-Track-Plugin

Christoph hat mich auf die Extension Ghostery aufmerksam gemacht. Einem Plugin für alle gängigen Browser, welches die vielen Trackingcodes der Webseiten blockiert. Wenn aktiviert zeigt es für jede Webseite erstmal an welche Javascripte und Trackingpixel geladen werden. Auf Wunsch werden diese natürlich auch Blockiert.

Derzeit sind über 800 Anbieter auf der Liste. Ein Autoupdater sorgt dafür, dass die Liste aktuell bleibt. Ausnahmen für eigene Seiten oder ganze Anbieter können natürlich eingerichtet werden. Ich benutze das Plugin unter Chrome. Wenn ihr mehr erfahren wollt, lest euch den ausführlichen Artikel von Chris druch. Den Download für alle Browser gibt es direkt auf der Webseite.

8Apr/120

Stabiler SSHFS Mount

Wenn man mehrere Server betreibt, die gegenseitig in irgend einer Form Daten austauschen, kommt es nicht selten vor, dass man auf das Dateisystem eines anderen Servers zugreifen muss. Die möglichkeiten die Linux  hier bietet sind vielfältig. Von einer sporadischen Synchronisation mit rsync bis zum Einhängen entfernter Dateisysteme über verschlüsselte Verbindungen.

Leider zeigt die Praxis, dass das Mounten eines Dateisystems mittels sshfs nicht immer besonders zuverlässig ist. Im konkreten Fall ging es um einen Minecraft Server mit installiertem dynmap Plugin. Dieses Plugin rendert permanent die Minecraftwelt in Google Maps konformen Tiles und zeigt sie auf einer Webseite zusammen mit den Positionsdaten der Spieler an. Der Integrierte Webserver liefert die Daten an den Benutzer aus. Möchte man allerdings verhindern, dass die Transferrate des Gameservers bei vielen Besuchern belastet wird, kann es sinnvoll sein, die Mapdaten auf einem seperaten Webserver zu hosten.

Damit dynmap die Tiles auf einen anderen Server schreiben kann, installiert man unter Debian erst einmal sshfs:

apt-get install sshfs

Als nächstes muss man dafür sorgen, dass der Ordner immer eingehängt ist, wenn der Server läuft. Sobald dies nicht der Fall ist, würde das Plugin die Tiles weiterhin schreiben, nur diesmal lokal in den Ordner. Automatisches Einhängen schlägt dann fehl, weil der Zielordner nicht mehr leer ist.  Dazu schreibt man am besten irgendwo in das Startscript des Servers die Zeile

sshfs -o reconnect user@webserver.de:html/minecraft_map dynmap/

Die Option reconnect sorgt für das automatische Wiederherstellen der Verbindung.  Dannach kommt der Benutzername und der Hostname des entfernten Rechners. Hinter dem Doppelpunkt kommt der Pfad relativ zum Homeverzeichnis des Benutzers des entfernten Rechners. Am Ende steht der lokale Pfad in dem der Remoteordner eingehängt werden soll. Dieses Verzeichnis muss leer sein. Zur Sicherheit habe ich noch im .ssh Ordner eine Datei namens config Angelegt die folgenden Inhalt hat:

ServerAliveInterval 60
ServerAliveCountMax 150

Das setzt die Standard Timeoutzeiten hoch, sodass die Verbindung nicht so schnell abreißt. Damit der Login automatisiert ablaufen kann, benötigen wir noch ein Schlüsselpaar für die Verbindung.

ssh-keygen

Generiert ein neues Schlüsselpaar. Ist nur nötig falls noch keins vorhanden ist.  Als nächstes mit

ssh-copy-id "-p 22 user@webserver.de"

den Public Key auf den entfernten Rechner kopieren. Die Option -p kann angepasst werden, falls der SSH Server nicht auf 22 läuft. Jetzt sollte die Verbindung mit dem sshfs Befehl bereits zustande kommen. Mit

fusermount -uz dynmap/

kann man das Dateisystem wieder aushängen. Dies könnte man beispielsweise immer beim Beenden des Servers automatisch machen. Durch das setzen der zusätzlichen Optionen hatten wir keinerlei Probleme mehr mit abgerissenen Verbindungen. Natürlich schützt die Variante nicht vor ausgefallenen Servern, aber da dies bei uns ehr selten der Fall ist, können wir das vernachlässigen. Auf diese Weise haben wir erfolgreich dynmap auf einen anderen Webserver ausgelagert und dadurch wertvolle Bandbreite des Gameservers gespart. Das Ergebnis kann hier begutachtet werden: http://map.minenkraft.de/

20Jul/110

CPU Kühlung

Der Mugen 3 von Scythe
Scythe Mugen 3 (Quelle: Scythe)

Bis vor kurzem kühlte meine CPU noch ein sogenannter "Top-Down Kühler", also ein Kühlkörper, dessen Lüfter die Luft von Oben nach unten auf die CPU pustet. Der Luftstrom entweicht so zu den Seiten und kühlt gleichzeitig die Spannungswandler auf der linken Seite, die Northbridge an der Unterseite und zumindest den ersten Ramriegel auf der rechten Seite. So zumindest meine optimistische Theorie.

Damit dies auch einigermaßen effizient und leise geschehen kann, hatte ich mich damals für den Scythe Big Shurikenentschieden, der mit seiner außergewöhnlichen Breite alle Bauteile überragen sollte. Leider ist der Big Shuriken doch nicht so Big, wie ich gehofft hatte, sodass er nicht einmal den ersten Ram-Riegel überragt. Hinzu kam, dass durch die Top-Down Architektur der gesamte Luftstrom meines Gehäuses durcheinander gebracht wurde. Statt den Luftfluss von vorne nach Hinten zu fördern, hat der Kühler (logischerweise), alles durcheinander gewirbelt. Das Ergebnis war, dass ich unter Last eine CPU mit 70° aufwärts hatte. Das ist zwar durchaus noch im vertretbaren Rahmen, angesichts der Tatsache, dass mein Gehäuse aber ringsrum mit Lüftern zugekleistert ist, doch viel zu warm.

Seitenansicht des Big Shuriken von Scythe
Scythe Big Shuriken (Quelle: Scythe)

Ich entschied mich also doch wieder zurück zu den guten alten Tower-Kühlern, also jenen die einen Turm aus Kühllamellen haben und von der Seite gekühlt werden. Zufällig ergab sich in einem Computerbase Test, dass der Mugen 3, ebenfalls von Scythe, eine Empfehlung verdient hat. Da man den Jungs von CB vertrauen kann, hab ich mir das Produkt einfach mal blind bestellt. Ich war etwas skeptisch, da der Kühler wegen seines Gewichtes von 800 Gramm auf der Rückseite des Mainboards verschraubt werden muss. Da mein letztes Gigabyte Mainboard eine fest installierte Backplate hat, hatte ich die Befürchtung, dass ich den Kühler nicht montieren kann. Wie sich doch herrausstellte waren diese Befürchtungen unbegründet. Die Backplate ließ sich problemlos entfernen und ich konnte die von Scythe mitgelieferte installieren. Allerdings braucht man dabei Hilfe von einer weiteren Person. Man muss nämlich bei der Montage gleichzeitig die Schrauben auf der Rückseite anziehen und von der Vorderseite den doch recht großen Kühlkörper in Position bringen. Nun noch die 4 Schrauben immer schräg gegenüber fester ziehen, bis sie sich nicht mehr drehen lassen und schon sitzt der Klotz fest wie angeschweißt.

Das Ergebnis des Aufwandes kann ich nun heute beim Konvertieren eines HD-Filmes begutachten. Statt heißen 75° im Kern, bleibt die CPU bei überraschenden 56° konstant warm. Mit 45° im Idle, also gerade einmal 10° wärmer und unter Last unglaubliche 20° kühler als vorher. Hinzu kommt, dass sogar die Northbridge und die Spannungswandler sogar kühler sind als vorher. Ich hatte nämlich die Befürchtung, dass diese Komponenten durch den fehlenden Luftzug weniger von der Kühlung haben, doch auch das hat sich überraschenderweise nicht bewahrheitet.

Mein Fazit lautet also: Top-Down Kühler haben nichts in (ich nenne es mal) High-End-Systemen verloren. Für normale Büro Rechner eignen sie sich aber sehr gut. Mein Medien-PC bekommt nun den Big Shuriken spendiert und wird damit um einiges Kühler (und vor allem leiser), als mit dem Boxed-Lüfter.

23Okt/100

INTERNAL_POWER_ERROR 0xA0

Wer unter Windows 7 häufig den sogenannten Hybriden Standby-Modus verwendet, wird vielleicht schon einmal kurz vor dem Abschalten einen Bluescreen mit der Bezeichnung INTERNAL_POWER_ERROR (STOP 0xA0 bzw. 0X000000A0)  erhalten haben. Da mein Netzteil mit 480 Watt relativ scharf kalkuliert ist, ging ich anfangs von einem Zusammenbrechen der Spannung aus, was scheinbar nur ganz selten beim versetzen in den Energiesparmodus auftritt. Doch weit gefehlt! Wie sich nach kurzer Recherche herausstellte, war dieses Problem nicht etwa im Bereich der Energieversorgung zu suchen, sondern lässt sich auf die Größe der sogenannten hibernation file zurückführen.

Kurz zur Erklärung

Beim normalen Standby/Energiesparmodus schaltet der PC aus, ohne vorher den RAM zu löschen. Da RAM ein flüchtiger Speicher (=bei Spannungsabfall vergisst er seine Daten) ist, muss eine kleine Spannung den RAM am leben halten. Schaltet man den PC wieder ein, kann man nach wenigen Sekunden dort weiterarbeiten, wo man aufgehört hat. Kein lästiges Herunterfahren und Starten des Betriebsystems mehr. Der Hybride Standby ist eine Neuerung, die es seit Windows Vista gibt. Ist er aktiv, sichert das System kurz vor dem Ausschalten den RAM noch zusätzlich auf die Festplatte (für alle fälle). Fällt dann mal der Strom aus, oder man hat versehentlich den Stecker gezogen, wird das System nicht komplett neu booten, sondern vor dem Start den gesicherten RAM von der Festplatte zurückholen (so funktioniert übrigens der sogenannte Ruhemodus).

Die Ursache

In der Datei hiberfile.sys wird dieses Abbild des RAMs gesichert. Wie die Auslagerungsdatei hat sie eine gewisse Obergrenze, die man im System einstellen kann. Leider ist sie im Auslieferungszustand kleiner als der Ram (bei 8GB ram wäre das auch Platzverschwendung). Schaltet man seinen PC nun in den Standby, während der RAM fast voll ist, gibt es nicht etwa eine Sinnvolle Fehlermeldung, sondern einen mysteriösen INTERNAL_POWER_ERROR.

Die Lösung

  1. cmd.exe als Administrator ausführen (start>unten cmd eingeben>rechtsklick>als administrator ausführen)
  2. folgenden Befehl ausführen:
    powercfg /hibernate /size 100
  3. Fenster schließen
13Sep/100

Artikel über PhysX auf THG

Die Webseite tomshardware.de hat einen ausführlichen Artikel über PhysX veröffentlicht. Ziel des Autors war es, auf 9 Seiten klarheit über Gerüchte und Halbwissen rund um PhysX zu schaffen und die Erkenntnisse mit Benchmarks und Tests zu belegen. Ich habe in meinem Artikel alle wesentlichen Erkenntnisse mit meinen persönlichen Erfahrungen abgestimmt.

9Sep/101

Von den Machern von Javatar…

Herrlich! Den Film guck ich mir auf jedenfall in 3d an!
Nach ein wenig Recherche habe ich auch die Quelle gefunden! mehr davon!

31Aug/100

Mafia II – Kleidung ohne GPU?

In meinem Artikel PhysX mit ATI und Nvidia hatte ich über Probleme mit Mafia 2 berichtet. Bei angeschaltetem PhysX (egal ob hoch oder mittel) ging die Performance drastisch nach unten, obwohl meine dedizierte PhysX GPU sich bei 5-10% Auslastung gelangweilt hat. Durch entfernen der dynamischen Kleidung konnte ich eine massive Performancesteigerung erreichen. Auf einmal hatte sogar meine GPU mehr zutun. Wie kann das sein? Ich hab es mir so erklärt, dass meine haupt Grafikkarte zu langsam zum Rendern ist und es so zu einem Flaschenhals kommt.

Die Seite physxinfo.com hat nun eine entdeckung gemacht, die einen ganz anderen Grund dafür aufdeckt. Die Berechnung der dynamischen Kleidung erfolgt bei Mafia 2 schlicht und ergreifend nicht auf der GPU, sondern auf der CPU. Das die viel zu langsam dafür ist und dann alles andere auch ins Stocken gerät, kann sich wohl jeder ausmahlen. Auf jedenfall ist damit nun geklärt warum selbst die teuersten Grafikgespanne bei Mafia 2 in die Knie gezwungen werden.

Wie das bewiesen wurde? Nun erstmal hat man die Vermutung durch ein paar Benchmarks gestärkt. So wurde der interne Benchmark mit mehreren Einstellungen durchlaufen. Einmal mit Kleidung aber ohne Partikeleffekte, und einmal mit Partikeleffekten und ohne Kleidung. Beide Durchläufe je einmal mit GPU PhysX und einmal mit CPU PhysX. Das Ergebnis war, dass es bei der Kleidung keinen unterschied gemacht hat ob diese auf der GPU oder auf der CPU berechnet wurde, bei den Partikeln aber sehr wohl. Dies hat die These gefestigt, dass die Kleidung garnicht erst versucht die GPU zu beanspruchen.

Im zweiten Schritt wurde etwas tiefer gegraben. Mittels eines PhysX Profilers konnten die Tester genau sehen, welche Funktionen des PhysX SDKs aufgerufen werden.  Das Ergebnis überraschte auch nicht weiter, lieferte aber den stichfesten Beweis, dass die Kleidungsmethoden der GPU Schnitstelle garnicht erst aufgerufen werden. Dadurch muss die Berechnung zwangsläufig auf der langsamen CPU erfolgen.

Jetzt bleibt nurnoch abzuwarten ob und wann die Entwickler von Mafia 2 diesen offensichtlichen Bug beheben. Das Ergebnis dürfte sich jedenfalls sehr stark auf das ingame Erlebnis auswirken.

26Aug/100

GRAW2 und Cryostasis mit PhysX

Nachdem die 2 Spiele aus meinem PhysX Test schnell langweilig wurden, habe ich mich mal nach alternativen umgeschaut. In der Liste von Nvidia ([1],[2]) fand ich dabei sogar ein Game welches (zwar schon recht alt) ebenfalls PhysX unterstüzt und sich sogar in meinem Besitz befindet. Es handelt sich dabei um Ghost Recon Advanced Warfighter 2, einem Taktikshooter. Das Video, welches man hinter dem Link findet zeigt dabei sehr nett den optischen Mehrwert, den das Spiel durch die zusätzlichen Partikel erhält. Außerdem gibt es einen Bonuslevel, bei dem besonders viele dynamische Objekte eingebaut sind. Es gibt Wind, die Bäume lassen sich (ähnlich bei Crysis) umschießen und die Bretterbuden zerfallen ebenfalls bei Beschuss.

Ich hab das Spiel natürlich gleich installiert, die Einstellungen komplett auf Hoch gesetzt (PhysX auf extrem) und losgezockt. GPU-Z zeigt dabei eine relativ langweilige Auslastung von 20-25% und das Spiel läuft flüssig. Genauso wie das Zusatzlevel. Wenn ich lust habe spiele ich das Spiel vielleicht sogar noch einmal durch. Durch die vielen Partikel die dann zusätzlich angezeigt werden wirkt das Spiel nicht mehr ganz so Steif wie vorher.

Mein zweiter Fund ist eine Techdemo ein Spiel von Action Forms, von dem ich vor einigen Monaten Jahren bereits gelesen hatte. Damals hatte das Spiel Aufsehen erregt, da es zum erstenmal mit physikalisch berechnetem Wasser aufwarten konnte. Auch wenn dieser Effekt ehr wie über den Boden gleitende Gelkugeln wirkt, ist es doch eine nette Demonstration für meine zweite Nvidia Karte. Netterweise gibt es auf Computerbase einen kleinen Benchmark der genau meine Grafikkarte enthält. Da es zu der Zeit diesen "kniff" mit Ati+Nvidia scheinbar noch nich gab musste sich meine Grafik ganz hinten mit lausigen 14fps anstellen, da die Nvidiakarten munter ihre PhysX berechnungen auslagern konnten.

Starte ich nun das Spiel, das es kostenlos als Techdemo im Nvidia Powerpack zu saugen gibt, läuft es - im wahrsten Sinne des Wortes - sehr flüssig. Bis auf die genannten Grafikfehler; aber das soll mir auch egal sein. Am Ende komme ich auf angenehme 39fps im durchschnitt bei einem Minimum von 20 und einem Maximum von 120. Damit kann ich leben!

25Aug/100

Keine “Forced Subtitles” mit VLC

Ich benutze schon immer VLC zum abspielen sämtlicher Mediendateien, sogar auf meinem Medien PC im Wohnzimmer. Doch nun ist mir zum ersten Mal das Fehlen eines Features bewusst geworden, welches ich schmerzlich vermisse. Es gibt mit VLC keine Möglichkeit so genannte "forced subtitles" anzeigen zu lassen, also diejenigen Untertitel, die neben der Hauptsprache fremdsprachige Inhalte übersetzen. Angenommen ein Film ist auf deutsch und es kommt eine Szene in der französisch gesprochen wird. Auch wenn keine Untertitel aktiv sind sollte ein DVD Spieler nun aus der jeweiligen Untertitelspur dieses Französisch in deutsch anzeigen, denn in der Spur ist für diese Stelle das sogenannte forced-flag gesetzt. Das soll der Abspielsoftware nur sagen, "zeig mich an, auch wenn Untertitel ausgeschaltet sind".

Diese Technik wird von den meisten Abspielern unterstüzt, aber bei VLC fehlt es, die dieser Bugtracker zeigt. Bisher dachte ich immer es wäre ein Mangel der DVD, das solche Stellen nicht übersetzt wurden. Denn es gibt immerhin auch einige, bei denen solche Untertitel in einer extra Spur hinterlegt sind. Bei 2012 hat es mich dann aber schon gewundert, weil das bei so einem aktuellen Film nicht vorkommen darf. Außerdem konnte ich mich daran erinnern, dass die Stellen im Kino auch untertitelt waren (es gibt ja auch Filme bei denen man die Fremdsprache bewusst nicht übersetzt bekommt). Darauf hin habe ich den Spieler auf PowerDVD geändert und konnte mich dann über korrekt untertitelte Französischdialoge freuen, muss aber dafür abstriche bei anderen Einstellungsmöglichkeiten machen. Laut Tracker soll der Bug bei Version 1.2 gefixt werden, will mal hoffen, dass das eingehalten wird! wenn ich mir aber das Datum anschaue glaube ich nicht, dass dies Problem in absehbarer Zeit gefixt wird.

18Aug/100

PhysX mit ATI und Nvidia

Gejuckt hat es mich ja schon länger. Da mir seit der Radeon 4870 ATI grundsätzlich besser gefällt als Nvidia, musste ich bisher auf GPU beschleunigte PhysX-Berechnungen verzichten. Da PhysX (ursprünglich aus dem Hause Ageia) auf die von Nvidia entwickelte Schnittstelle CUDA zugreift, hat man als ATI Kunde nur die Möglichkeit die CPU Fallbacklösung zu verwenden, was auch bei einem Quadcore mit 3,4GHZ oft in eine Ruckelpartie ausartet. Auch wenn ATI die Unterstüzung der offenen Schnittstelle OpenCL (eine hardwareunabhänige Schnittstelle, ähnlich OpenGL) schnell implementiert hat,  konnte sich das - zumindest im Gaming bereich - noch nicht durchsetzen.

Spätestens seit der Vorlesung Rechnerstrukturen, weiß ich, dass die CPU mit  ihrer SIMD (Single Instruction Multiple Data - Führt eine berechnung auf viele Datensätze parallel aus) Erweiterung SSE auch dazu in der Lage wäre effizient physikalische Effekte zu berechnen. Leider hat Nvidia oder wer auch immer scheinbar kein Interesse daran das dies ohne eine 35 cm lange, 350€ teure, grüne Platine möglich ist. Angeblich wäre ja PhysX bereits für die CPU optimiert, aber so richtig glauben will ich das nicht.

Wie dem auch sei, bis sich OpenCL durchgesetzt hat muss man entweder den PhysX Regler in den Optionen aus lassen, oder man improvisiert. Mir ist ein Gerücht zu Ohren gekommen, dass man auch als ATI User in den Genuss von Hardwarebeschleunigtem PhysX kommen kann, indem man sich einfach eine zweite, deutlich günstigere, Grafikkarte von Nvidia in den Rechner hängt. Da ich auf Verdacht keine 60€ für eine Grafikkarte ausgebe von der ich nichtmal weiß, ob ich überhaupt den Treiber installiert bekomme (mir kam da mal was zu Ohren das man keine 2 unterschiedlichen Grafikkartentreiber installieren kann), musste ich erst einmal etwas nachforschen. Unter dem Stichwort Hybrid PhysX wurde ich schließlich fündig.