BenBE's humble thoughts Thoughts the world doesn't need yet …

30.09.2011

Thread Pools

Filed under: Software — Schlagwörter: , , — BenBE @ 10:38:24

Neuere Prozessoren bieten immer mehr Leistung durch immer mehr parallele Kerne bei aber seit längerem nahezu gleich gebliebener Taktrate. Somit bleibt einem ohne Anpassung seiner Programme diese zusätzliche Leistung verwehrt. Nur in dem man sein Programm in mehrere Teile spaltet, die parallel ablaufen können, kann man sein Programm auch auf heutigen Prozessoren in optimaler Geschwindigkeit ausführen.

Für die Parallelisierung gibt es hierbei je nach Betriebssystem verschiedene Mittel. Die wohl bekanntesten Mittel stellen hierbei Threads unter Windows, bzw. das Forken unter Linux dar. Aber auch etwas exotischere Mittel wie PThreads oder Fibers bieten gute Möglichkeiten, um ein Programm auf mehrere CPUs zu verteilen.

Die verschiedenen Ansätze haben dabei gemeinsam, dass für verschiedene Aufgaben jeweils mehr oder weniger Umfangreiche Objekte erzeugt werden müssen, die für jede Aufgabe einen Zwischenstand enthalten, den sogenannten Kontext. Dieser ist bei Fibers (Windows) sehr klein, bei Multitasking mittels Prozessen aber durchaus sehr groß. Je größer dabei solch ein Kontext wird, desto langsamer wird das Umschalten zwischen mehreren Aufgaben. Außerdem steigt mit der Größe des Kontext oftmals auch der Aufwand für die Erzeugung eines neuen Kontextes, was insbesondere, wenn man viele kleinere Aufgaben parallelisieren möchte von großer Bedeutung ist.

Eine relativ gute Einführung (leider hinter einer via BugMeNot umgehbaren Paywall *sigh*) gibt es beim Linux Magazine. Auch die beiden Videos mit der Erklärung kann ich wärmstens ans Herz legen.

Nach diesem kurzen Abstecher nun wieder zurück zum eigentlichen Thema dieses Beitrages, denn wie auch im verlinkten Beitrag, sowie den beiden darin enthaltenen Videos erklärt, möchte man in aller Regel den Setup-Aufwand für viele kleine Aufgaben möglichst gering halten. Zu diesem Zweck bietet Windows sogenannte Threadpools. Etwas ähnliches bietet Linux nicht von Haus aus; doch das lässt sich recht einfach ändern.

Für ein eigenes Projekt unter Linux war ich nämlich selber auf der Suche und wurde nach etwas Suchen auch bereits fündig. Die gefundene Implementation ist zwar funktional und minimalistisch gehalten, hat jedoch ein paar kleinere Ecken und Kanten, weshalb ich sie für meine Zwecke noch einmal überarbeitet habe.

Da der Source somit eh einmal komplett bearbeitet wurde, nutze ich die Chance (insbesondere auf Grund des vielfachen Wunsches eines einzelnen Herren), um die Funktionsweise einmal direkt am Source des Thread Pools zu erklären. Eine Vorwarnung möchte ich aber bereits jetzt geben: Das wird etwas technisch 😉

Text für „Thread Pools“ anzeigen
Direkt zum Beitrag

Flattr this!

28.09.2011

Überblick über Projektaktivität gewinnen

Filed under: Software — Schlagwörter: , , , , — BenBE @ 22:13:15

Manchmal hat man ein Projekt, von dem man gerne wissen möchte, ob noch aktiv an diesem entwickelt wird. Aber nicht immer sind entsprechende Grafiken mit aussagekräftigen Zahlen verfügbar. Eine recht einfache Möglichkeit, dennoch einen Überblick zu bekommen, ist ein Blick in die Commit Logs des Projektes. Wenn diese viel Aktivität zeigen, ist ein Projekt mit sehr hoher Wahrscheinlichkeit noch aktiv. Aber stupide Datumswerte sind oftmals recht schwer zu überblicken. Etwas mehr Grafik wäre hier wünschenswert. Und genau hier kann man mit etwas Bash Magic und ein wenig RRDTool nachhelfen.

Text für „Überblick über Projektaktivität gewinnen“ anzeigen
Direkt zum Beitrag

Flattr this!

15.09.2011

Automatisches Link Quality Management für OLSR+Tinc

Filed under: Software — Schlagwörter: , , , , , — BenBE @ 20:26:07

Möchte man mehrere dezentrale Standpunkte in einem Mesh-Network miteinander verbinden, so bieten sich in der Regel Lösungen mittels eines VPN an. Diese sind oftmals auch mit wenig Aufwand eingerichtet, können aber mitunter gewisse Nachteile mit sich bringen. Einer dieser Nachteile betrifft zum Beispiel den Aufbau der Routing-Tabelle, wenn sich das VPN nicht vollständig wie der physikalische Counterpart verhält. Dies ist bei Tinc, einer sehr einfach nutzbaren VPN-Software der Fall, die bei Nutzung des Switch-Modus das gesamte VPN als eine Broadcast-Domäne betrachtet. Da in der Regel aber nicht wirklich jeder VPN-Client mit jedem anderen kommuniziert, führt dies zum Verlust von Struktur-Informationen bei Mesh-Netzwerken, die mittels Broadcast versuchen, die Netzwerk-Struktur zu erkunden. Einer der bekanntesten Vertreter ist hierbei OLSR, was auf Grund dieses Verhaltens haufenweise „virtuelle“ Verbindungen zwischen den VPN-Clients sieht, die real nicht existieren, was mitunter zu ungünstigen Verhaltensweisen beim Aufbau der Routingtabelle führt.

Text für „Automatisches Link Quality Management für OLSR+Tinc“ anzeigen
Direkt zum Beitrag

Flattr this!

10.09.2011

Freiheit statt Angst 2011

Diesen Samstag war es wieder einmal so weit: Nach dem durch die Sicherheitsgesetze der vergangenen Jahre sukzessive die Grundrechte ausgehöhlt wurden, bzw. durch weitere Pläne in diesem Bereich auch immer weiter noch werden, war es an der Zeit, aktiv den Unmut über diese Entwicklung kund zu tun. Aufgerufen zur Demo hatte, wie jedes Jahr, ein breites Bündnis aus nahezu allen Regionen des politischen Spektrums. Neben dem AK Vorrat, dem FoeBuD und zahlreichen weiteren Bürgerrechtsorganisationen nahmen auch viele weitere Organisationen für Prävention und Vorsorge, Berufsverbände, Parteien und Jugendorganisationen die Chance war, auf die Thematik aufmerksam zu machen.

Während die Hauptdemonstration wie jedes Jahr wieder in Berlin statt fand, gab es dieses Jahr aus aktuellem Anlass auch eine kleinere Kundgebung in Dresden. Im Gegensatz zu den in Berlin gezählten 5000 Mann war die dresdner Demo mit etwa 40 Mann (statt der erwarteten 200 Mann) etwas kleiner als erwartet. Einer der Gründe für die eher kleine Beteiligung könnte die vergleichsweise schlechte Informationslage im Vorfeld gewesen sein.

Text für „Freiheit statt Angst 2011“ anzeigen
Direkt zum Beitrag

Flattr this!

04.09.2011

Neue Türen für alte Züge

Filed under: Fun — Schlagwörter: , — BenBE @ 21:50:10

Graffiti sind immer wieder ein Ärgernis für das Stadtbild. Während man häufig nur irgendwelche Schmierereien mit wenigsagendem Inhalt findet, gibt es doch auch hin und wieder einmal die Künstler unter den Leuten mit der Sprayflasche. So geschehen mit einem Zug der deutschen Bahn in München, bei dem der äußere Anstrich etwas korrigiert wurde:

Die Tür ist nicht, wo sie scheint

Na, wo würden Sie einsteigen? Na? Die richtige Antwortet lautet hier: Bei den schmalen Doppelfenstern. Wie? Schauen wir doch einmal aus einer etwas anderen Perspektive auf die Dinge:

Bei genauerem Hingucken ist die virtuelle Tür erkennbar

Sollte auch dieser Blick noch nicht beim Einsteigen helfen, sollte man sich die vermeintliche Tür einmal aus nächster Nähe betrachten, denn diese ist in sich ein wahres Meisterwerk!

Text für „Neue Türen für alte Züge“ anzeigen
Direkt zum Beitrag

Flattr this!

03.09.2011

IMAP und das virtuelle Dateisystem

Filed under: Server — Schlagwörter: , , , , , , , , , — BenBE @ 15:44:55

Bereits seit einiger Zeit wollten sich mein Courier-IMAP(S)-Server und die Kunden-Mailclients nicht so recht vertragen. Und auch die Fehlermeldung der Mailclients war nicht so recht schlüssig, denn der Fehler trat zuerst bei einem Update von Courier 4.4 auf 4.8 auf, war dort aber im Wesentlichen durch einen Programmierfehler bedingt. Da dieser aber eigentlich in der 4.9 bereits lang behoben sein sollte, nun ja. Blieb also als einfachster Workaround ein Hold des Paketes in der alten Software-Version.

Text für „IMAP und das virtuelle Dateisystem“ anzeigen
Direkt zum Beitrag

Flattr this!

Technische Notwendigkeit

Filed under: Server — Schlagwörter: , , , , , — BenBE @ 02:50:29

Ich habe mir da einen neuen Server geholt und eine der Sachen war nun, dass abzusehen war, dass mehrere der zu installierenden Dienste sich ins Gehege kommen würden. Also grob gesagt: Es gab 3 Dienste, die liebend gerne auf Port 53 laufen wollen. Nun sind IPv4-Adressen knapp und der neue Hoster achtet etwas strenger drauf, wofür man die haben möchte. Da ich aber wenig Lust auf irgendwelche Sonderkonfigurationen hatte, um jeden Service auf einem andere Port zu betreiben und am Ende alles irgendwie zu verdrahten, habe ich mir also überlegt:

  • Auf der Haupt-IP des Servers wird der gesamte Web-Krams, sowie Public-Services laufen. Hier läuft auch der erste der konfliktierenden Services: Ein offener DNS-Recursor, den jedermann als DNS-Server in seinem Router eintragen kann. Soweit unspannend also.
  • Die erste spannende Geschichte läuft nun auf der ersten Zusatz-IP. Diese beherbergt (zur Zeit) einen autoritiven DNS-Server, der auf eine Reihe von meinen eigenen Zonen autoritiv antwortet, was u.a. meine Blacklist für Client-IPs betrifft, die über meinen Mailserver relayn wollten.
  • Und bei der zweiten zusätzlichen IP schließlich laufen eine Reihe von VPN-Dienste, die in Kooperation mit dem Freifunk Chemnitz bereitgestellt werden.

Man geht also beim Provider in das Webinterface und bestellt über das verfügbare Interface die IPs. Als Teil dieser Prozedur wird dann auch bereits nach einer Begründung gefragt. Was aber noch nicht verraten wird, ist die Angabe, um welches der zahlreichen RIPE-Dokumente es sich bei den erwähnten Vergabe-Richtlinien handelt, anhand derer die Vergabe entschieden wird.

Text für „Technische Notwendigkeit“ anzeigen
Direkt zum Beitrag

Flattr this!

Powered by WordPress