Bumblebee
F@H-Team-Member & F@H-Moderator
You've got a awesome PC!![]()
... seconded.. - Happy folding, Bro
You've got a awesome PC!![]()
davidof2001 schrieb:Mann muss sich nur mal vorstellen, was diese Maschine erst mit den 6272er Opterons veranstaltet.
Gibt's dafür ne Anleitung? Bin auf der Suche... hab aber bis jetzt nix gefunden.Es sind gute 220MB die da durch die Leitung gehen
Bei meiner 16000er Leitung (mit ~100KB/s Upload) dauerts auch 40 Minuten.
Abhilfe schafft da übrigens langouste.


BTW: What % of members would be able to read my posts? :S
. But we have to take care that there's not to much English - quote out of the board-rules (translated): "The board-language is german."
.[...]Wenn der Kraken Guide ferig ist und gefällt kann ich das Gleiche auch nochmal für langouste machen.
BTW: What % of members would be able to read my posts? :S
Wenn ich das Ganze jetzt richtig verstanden habe, erweitern diese beiden Programme einfach den V6 um die UP/Dounwload-Geschichte des V7 das man wärend des Uploads der fertigen WU schon die nächste falten kann.
Also nur interessant für V6-Falter > Richtig?
Wenn ich das Ganze jetzt richtig verstanden habe, erweitern diese beiden Programme einfach den V6 um die UP/Dounwload-Geschichte des V7 das man wärend des Uploads der fertigen WU schon die nächste falten kann.
Also nur interessant für V6-Falter > Richtig?


Was genau macht dieser "Affinity Wraper"? (Für Interessierte)
Um zu verstehen wo die Optimierungen vom Kraken ansetzen muss man verstehen wie ein MultiSockel-System funktioniert. Ein solches besteht in der Regel aus mehreren Prozessoren, die jeweils eigenen L1/2/3-Cache besitzen und ebenfalls jeweils an einen Satz Arbeitsspeicher besonders schnell angebunden sind. Die Kommunikation der einzelnen Prozessoren untereinander und mit den restlichen Systemkomponenten erfolgt über einen Ringbus, der (nicht zuletzt aufgrund der langen physikalischen Wege) langsammer ist als die Kommunikationswege innerhalb einer CPU-RAM-Konfiguration. Ein Aufgabe wird von einem CPU-Gespann also dann besonders schnell erledigt, wenn diese Aufgabe in Häppchen geteilt wird, welche die einzelnen CPU-Kerne berechnen können, ohne dass sie zwischendurch aufeinander angewiesen sind. Je mehr Zeit damit verbracht wird auf andere Komponenten zu warten, desto weniger bleibt natürlich für die eigentliche Arbeit übrig -> Der Kern wartet -> Die Leistung sinkt.
Der SMP-Client von F@H macht sich natürlich die potentiell riesige Leistungsfähigeit von Mehrkern-Prozessoren zu Nutze und verteilt die WorkUnit soweit es geht in Häppchen, gibt diese aus und wartet auf die berechneten Teilergebnisse dieser "Worker" um daraus die nächsten Häppchen zu generieren und zu verteilen. Brauchen dabei aber nun einige Worker länger als andere müssen im schlimmsten Fall alle anderen Worker warten, bis die langsammen Aufgaben abgearbeitet sind -> die PPD sinken.
Dieses Problem des "Load-Balancings" gibt es natürlich auch bei einzelnen Mehrkernprozessoren, es wird aber natürlich umso problematischer, je mehr Kerne zur Verfügung stehen und je länger und langsammer die Kommunikationswege sind.
Für die Software selbst ist es übrigens unerheblich, ob die vorhandenen Kerne von einer CPU oder Mehreren zur Verfügung gestellt werden. Diese Aufteilung findet erst recht tief im Betriebssystem statt. Der Scheduler (deutsch: Der Planer, der Disponent) verteilt die einzelnen Worker-Threads auf die zur Verfügung stehenden Recheneinheiten. Diese Zuteilung kann sich zwischendurch sogar ändern, etwa wenn dadurch ein vorher stark belasteter Kern entastet und gleichzeitig ein wenig belasteter Kern besser ausgelastet wird.
Im Falle von F@H und Mehrsockel-Systemen arbeitet der Linux-Scheduler aber nicht optimal. Startet der FahCore seine Worker sichern sich diese direkt einige Bereiche des der CPU zugehörigen Arbeitsspeichers und arbeitet nunmehr nurnoch mit diesem. Kommt der Scheduler aber nun auf die Idee einen Worker-Thread auf eine andere CPU zu schieben, eben weil dies aus reiner Rechenzeitsicht evtl. gut wäre, so muss der Worker-Thread über den langsammen Ringbus mit "seinem" Arbeitsspeicher kommunizieren. Letztere Kommunikations-Verzögerungen wiegen schwerer als die Rechenzeitvorteile nach dem sich der Scheduler orientiert -> Die Leistung sinkt.
Der Kraken Optimiert nun den Faltprozess auf zwei Weisen:
Zum Einen behebt er das zuletzt geschilderte, suboptimale Scheduler-Vorgehen auf eine recht brachiale Weise, indem er sich sozusagen bei der Installation um (bereits vorhandene!) FahCores "wickelt". Wird ein solcher umwickelter FahCore gestartet (etwa durch den Client), schaltet sich der Kraken dazwischen und übernimmt die Steuerung des FahCores. Bereits in der Startphase des Cores setzt der Kraken die Zugehörigkeit gestarteter Worker-Threads zu einzelnen Kernen fest. Damit wird sichergestellt, dass ein Worker immer eine schnelle Anbindung zu "seinem" Speicher erhält und der Scheduler nicht mehr dazwischenfunken kann.
Zum Anderen bietet der Kraken die Möglichkeit den FahCore automatisch nach dem jeweils ersten erfolgreich durchlaufenen Speicherpunkt einer WU neu zu starten. Was ersteinmal widersinnig klingt hat folgenden Hintergrund: Auch Stanford kennt natürlich das Problem des Load-Balancings und hat seinen FahCores deshalb eine eigene Methode spendiert den Faltprozess zu optimieren, den Dynamic-Load-Balancer (DLB). Dieser springt theoretisch an, wenn die Verzögerung durch Wartezeiten der einzelnen Worker mehr als 5% beträgt, praktisch ist das Aktivieren des DLB aber mehr oder weniger zufällig. Die Erfahrung hat gezeigt, dass der DLB aber fast immer anspringt, wenn man den FahCore von einem Speicherpunkt fortführt, was der Kraken entsprechend zum frühstmöglichen Zeitpunkt eben genau so macht. Diese Optimierungsfunktion des Kraken ist im Übrigen optional.
