Stoppt die Vorratsdatenspeicherung! Jetzt klicken &handeln! Willst du auch an der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:

Montag, Juli 21, 2008

Dr. Horrible

Joss Whedon's neueste Idee:



Dr. Horrible, eine Art Musical über einen Verrückten "bösen" Wissenschaftler der sich verliebt. Seine Geliebte verliebt sich jedoch in seinen Erzfeind Captain Hammer... Genial, aber ich weiß leider nicht wie lang das Ding nu wirklich online bleibt. Es hieß bis Mitternacht des 20. Juli, das ist aber bereits rum und man kann es immer noch Angucken. Also viel Spass

Eingestellt von dunkelstern

0 Kommentare Labels: , ,

Donnerstag, Mai 08, 2008

Map-Reduce und Parallelisierung

Ist Google wirklich so innovativ wie es immer dargestellt wird? - Ich denke, dass das nicht unbedingt der Fall ist, aber Google erhält im heutigen Internetzeitalter einfach viel mehr Aufmerksamkeit als es Uniprofessoren oder auch andere einzelne Individuen tun.

Ein schönes Beispiel hierfür ist der so hoch gelobte "MapReduce" Algorithmus zur massiven Parallelisierung von komplexen Aufgaben (z.B. um massiven Datendurchsatz zu erzielen). Um kurz zu erklären was MapReduce eigentlich ist hole ich mal ein wenig aus hier. Wer MapReduce kennt kann also den nächsten Absatz überspringen.

MapReduce ist eine Möglichkeit wie man aus einer komplexen Aufgabe eine massiv parallel verarbeitete Aufgabe machen kann. Als Beispiel nehme ich hier jetzt mal eine einfache Suche nach einem bestimmten Wort in einer Textdatenmenge - von sagen wir 30 Terabyte - an. Ein Einzelner Rechner würde hierfür wahrscheinlich Jahre benötigen, mal abgesehen davon, dass ich die Storage Lösung für diese Menge Daten gerne mal sehen würde :)
Verteilt man diese Aufgabe allerdings auf viele - sagen wir mal 2000 - Rechner, so wird die Aufgabe schon sehr viel übersichtlicher. Jeder Rechner muss dann "nur" noch 15 Gigabyte durchsuchen. Diese Aufgabe ist in einem angemessenen Zeitrahmen zu erledigen und die Datenmenge verteilt sich angenehm auf die 2000 Festplatten der Rechner. Doch wie schaffe ich es jetzt diese Suche einfach programmierbar zu halten? Hier kommt nun MapReduce zum Einsatz. Als Programmierer muss ich nun lediglich die Aufgabe splitten und die Infrastruktur von MapReduce verteilt die Aufgaben automatisch auf die Rechner, ich gebe also sozusagen nicht mehr eine Aufgabe "Durchsuche die 30 Terabyte Daten" sondern viele kleine Aufgaben "Durchsuche mir das Datenfragment X (mit der Größe von 500MB meinetwegen) nach Y". Eine Art Loadbalancer verteilt die Aufgaben nun auf den Cluster und wartet auf die Ergebnisse. Die Ergebnisse, so sie denn überhaupt eintreffen werden an die sogenannte Reduce-funktion weitergegeben und diese wertet die Ergebnissdaten schon mal aus während weiterhin Rechenaufgaben verteilt werden. Theoretisch wird jeder Rechner im Cluster also 30 Aufgaben (je 500MB) zugeteilt bekommen. Der Clou an der Sache ist jedoch der, dass alles komplett Asynchron läuft, d.h. kommt nach einem bestimmten Timeout kein Ergebniss von einem Node zurück wird die Aufgabe neu vergeben (Seti at Home macht das ja ähnlich :) ) bis alle Ergebnisse eingesammelt worden sind. 
Hier kann nun entweder eine Reduce Kaskade die Zwischenergebnisse der Reduce Nodes weiterverarbeiten (weiteres Ausfiltern der Ergebnisse oder zusammenfassen und doppelte Ergebnisse rauswerfen) oder die Ergebnisse landen direkt wieder beim Master. Durch die asynchrone Verarbeitung ist vollkommen egal was für Nodes im Cluster sind, bzw. wie schnell diese sind, ist eine Node mit der Aufgabe überfordert oder fällt aus, so wird die Aufgabe neu vergeben.

Doch warum ist das nicht innovativ? - Ganz einfach deswegen, weil das eine absolute Grundlage der Parallelverarbeitung ist! Jeder einigermaßen intelligente Programmierer kommt früher oder später selbst auf die Idee genau so eine Lösung zu implementieren wenn es um große Datenmengen oder Zeitintensive Aufgaben geht. Außerdem wird MapReduce immer mehr auch auf "normalen" PCs zum Einsatz kommen, einfach deswegen weil man heute mehrere CPU-Kerne zur Verfügung hat und diese auch ausnutzen möchte.

Ein Beispiel hierzu: Ich möchte Daten komprimieren, es sind viele in kurzer Zeit, unkomprimiert packt meine Festplatte den Datenstrom nicht, daher benötige ich Echtzeitkomprimierung. Das kommt z.B. bei uns in der Firma vor wenn ich eine OpenGL Anwendung mit X-POSE-X-Record aufzeichen will, Unreal Tournament 2004 verursacht z.B. ca  250 MiB OpenGL Daten pro Sekunde, das packt keine Platte!
Was mache ich also als Programmierer: Ich versuche die 3 unbelasteten CPU Kerne die sich hier gerade langweilen mit zu nutzen. Wie mache ich das am besten? - Die einfache Methode ist direkt ein MapReduce Derivat. Ich versuche den Datenstrom in kleine Pakete einzuteilen, packe diese Pakete als einzelne Aufgaben in eine Queue und lasse X Threads nen Encoder starten die sich dann die Daten aus der Queue pulen und sie verarbeiten. Das Ergebnis landet mit richtiger Sequenznummer in einer Ergebnis Queue. Diese Ergebnisse werden von einem weiteren Thread sortiert (die Encoder sind nicht bei jeder Datenmenge gleich schnell, daher das Chaos :) ) und schließlich auf die Platte geschrieben. Ich mappe also Aufgaben auf meine Encoder Threads und ein weiterer Thread (der, der auf die Platte schreibt) reduziert meine Ergebnisse (Reduce Aufgabe läuft hier also auch parallel).

Das ist eigentlich ganz einfach oder? Doch warum wird das Gedöns nun Google zugeschrieben, und vor allem warum kommt darauf erst 2004 jemand? - Erstens, weil Google nen Namen dafür gefunden hat und diese Methode durch ihren ungleichförmigen Rechencluster im großen Maßstab anwendet und an zweiter Stelle wohl auch deswegen, weil sich niemand über solches Basiswissen groß Gedanken gemacht hat. Ich mein nichts gegen Google... die haben schließlich den größten Superrechner der Welt, auch wenn er nicht unter den Top500 Auftauchen wird, weil seine Rechenleistung nicht gemessen werden kann.

Ich sollte auch mal Papers schreiben über so grundlegende Sachen, aber lesen wird sie wahrscheinlich eh niemand ;)

Eingestellt von dunkelstern

2 Kommentare Labels: , , ,

Mittwoch, April 09, 2008

CSS Naked Day

Wo ist das Layout hin?
Ganz einfach heute ist CSS Naked Day, d.h. CSS Layouts werden für einen Tag auf allen Websites die Teilnehmen deaktiviert. Dabei kann man sehr gut sehen wie Barrierefrei eine Website eigentlich wirklich ist (Blinde sehen ja schließlich das Layout auch nicht :) )



Website hier: http://naked.dustindiaz.com/

Update: Hab das Layout wieder eingeschaltet :)

Eingestellt von dunkelstern

0 Kommentare Labels: , ,

Montag, Februar 18, 2008

Animoto is damn cool!

Hi Animoto :)
If you ever read this animoto guys: YOU ROCK!

At first the story why they so absolutely rock:
  1. Animoto is cool: see it yourself at http://www.animoto.com
  2. I wanted to buy an all access pass because I like the service so much and I wanted to use it to make longer Videos.
  3. To get an all access pass or even buy a single video you must use Google checkout to buy the thing. That's a problem for me, because I don't want to give google credit card data, as it connects this data with your google account. And that's not favorable, as I don't know if this goes into my credit score somehow.
  4. So I mailed animoto support and told them my problem. They responded in very short time and proposed billing via paypal which I thankfully accepted.
  5. I use another eMail address for my paypal account than I use for animoto, so I thought to make things right I'll register the "animoto"-mail address with paypal, that they could bill me on the standard way.
  6. Paypal accepted the invoice on the new eMail address but replied with the standard eMail address to animoto where the people were a bit confused about money they received with an eMail address attached they don't know.
  7. The Animoto guys eMailed me on that "odd" address to ask what went wrong and I replied to the request stating the right eMail address.
  8. 3 Minutes later I got an reply that the problem is solved and my account will be activated soon. (Wow, that's fast!)
So now what? This is customer friendlyness as I like it. Go on Animoto, keep things up!

Eingestellt von dunkelstern

1 Kommentare

Dienstag, Februar 05, 2008

Wumbu adoptieren... Sofort :)

Hab mich lieb:


Eingestellt von dunkelstern

1 Kommentare Labels: , ,

Samstag, Januar 26, 2008

Die Riesenmaschine spricht mir mal wieder aus der Seele

Das muss ich hier unbedingt verlinken: O PROGRESS, WHERE ART THOU?
[...] Das Aufschneiden selbst, für das eine Nagelschere nicht ausreicht, vielmehr schweres Gerät erforderlich ist, erweist sich dementsprechend als Akt höheren Berserkertums und erinnert an das Zersägen gefrorener Rinderhälften mit der Flex oder den Abriss einer Scheune mit der Nagelschere Kettensäge, so sperrig und spelzig stellt sich die Verpackung dabei an[...]

Eingestellt von dunkelstern

0 Kommentare Labels: , , , ,

Freitag, Januar 25, 2008

Firewire Harddisk Timeouts

Again I got a little hardware problem :)
This time it's the new shiny firewire harddisk i bought recently to do backups.
If you connect your external firewire harddisk and get something like the following in your linux kernel message log then my patch could be something for you.



firewire_core: created new fw device fw1 (5 config rom retries, S400)
firewire_core: phy config: card 0, new root=ffc0, gap_count=5
scsi5 : SBP-2 IEEE-1394
scsi6 : SBP-2 IEEE-1394
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: status write for unknown orb
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: status write for unknown orb
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_core: Unsolicited response (source ffc0, tlabel 3)
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: status write for unknown orb
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: status write for unknown orb
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_core: Unsolicited response (source ffc0, tlabel 6)
firewire_sbp2: status write for unknown orb
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: status write for unknown orb
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: failed to login to fw1.0 LUN 0000
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: failed to login to fw1.1 LUN 0001
firewire_sbp2: status write for unknown orb
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: released fw1.1
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: released fw1.0

The problem with my disk (it's a Western Digital MyBook Studio Edition disk) is the spinup time. The disk needs some time to recover from suspend mode and the disk controller seems to block communication while this happens. The simple idea to get this sorted out is to increase the timeout the driver waits for the drive to answer. I increased the timeout from 2000ms to 5000ms and just get one error message at the beginning, but it works good after that first timeout.


The patch is against Linux 2.6.24 (yes this time I am pretty up to date :) ).
Download the Firewire timeout patch here. You need to rebuild your kernel though.


It looks like that then:



irewire_ohci: Added fw-ohci device 0000:05:04.0, OHCI version 1.10
firewire_core: created new fw device fw0 (0 config rom retries, S400)
scsi7 : SBP-2 IEEE-1394
scsi8 : SBP-2 IEEE-1394
firewire_core: created new fw device fw1 (0 config rom retries, S400)
firewire_core: phy config: card 0, new root=ffc0, gap_count=5
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: orb reply timed out, rcode=0x11
firewire_sbp2: status write for unknown orb
firewire_sbp2: logged in to fw1.0 LUN 0000 (1 retries)
scsi 7:0:0:0: Direct-Access WD My Book 1025 PQ: 0 ANSI: 4
sd 7:0:0:0: [sdh] 976773168 512-byte hardware sectors (500108 MB)
sd 7:0:0:0: [sdh] Write Protect is off
sd 7:0:0:0: [sdh] Mode Sense: 10 00 00 00
sd 7:0:0:0: [sdh] Cache data unavailable
sd 7:0:0:0: [sdh] Assuming drive cache: write through
sd 7:0:0:0: [sdh] 976773168 512-byte hardware sectors (500108 MB)
sd 7:0:0:0: [sdh] Write Protect is off
sd 7:0:0:0: [sdh] Mode Sense: 10 00 00 00
sd 7:0:0:0: [sdh] Cache data unavailable
sd 7:0:0:0: [sdh] Assuming drive cache: write through
sdh: sdh1
sd 7:0:0:0: [sdh] Attached SCSI disk
sd 7:0:0:0: Attached scsi generic sg8 type 0
firewire_sbp2: error status: 0:4
firewire_sbp2: error status: 0:4
SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled
SGI XFS Quota Management subsystem
XFS mounting filesystem sdh1
Ending clean XFS mount for filesystem: sdh1
firewire_sbp2: error status: 0:4
firewire_core: Unsolicited response (source ffc0, tlabel 9)
firewire_core: Unsolicited response (source ffc0, tlabel a)
firewire_core: Unsolicited response (source ffc0, tlabel b)
firewire_core: Unsolicited response (source ffc0, tlabel c)
firewire_sbp2: status write for unknown orb
firewire_sbp2: status write for unknown orb
firewire_sbp2: error status: 0:4
firewire_sbp2: error status: 0:4
firewire_sbp2: failed to login to fw1.1 LUN 0001
firewire_sbp2: sbp2_scsi_abort
XFS mounting filesystem sdh1
Ending clean XFS mount for filesystem: sdh1

The message that the driver cannot log into fw1.1 seems logical, since I've only one device connected but the disk has 2 ports to allow extending the bus with other devices

Eingestellt von dunkelstern

0 Kommentare Labels: , , , , ,

Samstag, Januar 12, 2008

Nochmal Animoto, diesmal Defqon.1

Nur 6 Bilder in 30 Sekunden obwohl die Musik nicht mal langsam ist, aber cool aussehen tut's auf jeden Fall mal, das nächste wird wohl ein Full Length Video

Eingestellt von dunkelstern

0 Kommentare

Samstag, Januar 12, 2008

Animoto ist cool

Ich denke ich werde das auch noch auf der On the Rocks seite Posten :)

Eingestellt von dunkelstern

0 Kommentare
Neuere Posts Ältere Posts Startseite