Vorheriger Beitrag: dotnet Cologne 2010 inkl. Parallelprogrammierung
dotnet Cologne 2010 war ein voller Erfolg!
Die letzte Woche war für mich mal wieder sehr event-haltig: Mittwoch und Donnerstag war ich auf der Droidcon 2010 in Berlin, am Freitag verschlug es mich dann nach Köln der dotnet Cologne 2010 wegen, und kaum war ich von meiner Reise zurück, unternahm ich am Samstag noch einen kurzen Abstecher in Richtung GamesCamp Munich 2010, die vom lieben Kollegen Flo Bergmann organisiert wurde.
Da es auf diesem Blog ja um das Thema Multicore-Programmierung geht, widmet sich dieser Blogbeitrag der dotnet Cologne 2010. Zunächst einmal möchte ich den Organisatoren rund um Albert Weinert, Roland Weigelt und all den anderen ein großes Kompliment aussprechen: Ihr habt da wirklich ein tolles Event mit tollen Themen, Sessions und Sprechern organisiert. Ok, dass der Kaffee nicht immer warm war und die Technik gleich mal am Anfang nicht so recht wollte, übersehe ich gerne. Wichtig ist doch, dass die Inhalte stimmen und gut rübergebracht werden. Und das war auf jeden Fall so. Also zumindest kann ich das von den Vorträgen behaupten, die ich besucht habe.
Meine persönliche Sessionplanung umfasste vier Vortragende: Rami Radi und Mario Deilmann von Intel, den sehr unterhaltsamen Oliver Sturm und zu guter Letzt den werten Bernd Marquardt, der auf solch einer Veranstaltung natürlich nicht fehlen darf (und den ich im Juni auf den dotnetpro powerdays wieder erleben werde).
Ramis Session war wie immer sehr technisch orientiert und fand wegen der vielen Codebeispiele das Interesse der Zuhörenden, die sich im Raum “Bremen” eingefunden hatten. Und die wurden auch nicht enttäuscht: Rami legte sehr unterhaltsam dar, wie das Dreigestirn Windows 7, .NET 4 und Multicore-Architekturen voneinander profitieren. Dabei ging es unter anderem um ein wenig Grundlagenwissen in Sachen Nehahlem, also Turbo Boost, Quickpath-Architektur und andere Dinge.
Aber auch über die Verbesserungen von .NET 4 aus Multicore-Sicht wusste Rami anschaulich zu berichten: So stellte er Features wie Thread Scheduling, Thread Pooling, Garbabe Collection, TPL sowie PLINQ vor. Dabei gewährte er interessante Einblicke und verriet wichtige Details wie die parallele Aktualisierung von Gen-0- und Gen-2-Daten, die bei der Garbage Collection anfallen. Zudem ging er näher auf das Work-Stealing des in .NET 4 komplett überarbeitenden Thread Managers ein, bei der sich unterbeschäftigte Thread-Queues einfach Threads anderer Queues “klauen” können und so die Effizienz des Threadpool-Managers steigern.
Sehr erstaunlich fand ich auch die Tatsache, dass unter .NET 4 nun nicht mehr 25 Threads pro CPU verwaltet werden können, sondern derer 250! Hierfür ist allerdings ein sehr guter Scheduler notwendig, was Microsoft mit dem neuen .NET-Framework wohl gelungen ist.
Nach so viel Theorie wurde es dann sehr praktisch: Rami zeigte all die Verbesserungen unter .NET 4 im Hinblick auf seine Multicore-Fähigkeiten anhand eines Maze-Solvers, bei dem es um den den schnellsten Weg innerhalb eines Labyrinths von A nach B geht. Hierzu bediente er sich eines kleinen .NET-Programms, das er einmal unter .NET 3.5 und .NET 4 laufen ließ. Alleine schon der Umstieg von der älteren auf das brandneue Framework brachte beim Zeichnen des Labyrinths und dem anschließenden Finden des optimalen Wegs Zeitverbesserungen. Ganz zu Schweigen vom Unterschied zwischen dem seriell programmierten Programm und der Multicore-Variante mit mehreren Threads.
Abschließend startete Rami noch ein wenig den VTune Performance Analyzer, um der anwesenden Zuhörerschaft zu demonstrieren, wie sich mit dem Intel-Tool in .NET-Anwendungen solch hässliche Dinge wie Bottlenecks und False-Sharing-Probleme aufspüren lassen. Und wenn die Zeit nicht auf einmal vorbei gewesen wäre, hätte Rami wohl weitere zwei Stunden damit zugebracht, VTune in all seinen Facetten und mit all seinen Möglichkeiten vorzuführen.
Und was Mario, Oliver und Bernd in petto hatten, erfahrt ihr im zweiten Teil meiner dotnet-Cologne-2010-Berichterstattung.



Trackbacks & Pingbacks