Frage

Auf einer Multi-Core-Box sind die Java-Thread-Scheduler Entscheidungen eher willkürlich, ordnet es Thread-Prioritäten auf, wenn der Thread erstellt wurde, aus dem Thread es etc erstellt wurde.

Die Idee ist es, einen Abstimmungsprozess mit iE auszuführen, die Thread-Prioritäten zufällig gesetzt würde und dann schließlich optimale Prioritäten zu erreichen, wo die Fitness-Funktion die Gesamtlaufzeit des Programms ist es?

Natürlich gäbe es mehr Parameter sein, wie die Prioritäten während des Laufes verschieben würden eine optimale Prioritätsfunktion zu finden.

Wie praktisch, interessant macht die Idee Sound? und Anregungen. Nur einige Hintergrundinformationen, ive gewesen Programmierung in Java / C / C ++ für ein paar Jahren mit verschiedenen Projekten, wäre eine weitere Alternative, um einen Thread-Scheduler auf diese in c basieren machen, wo der Standard-Thread-Scheduler ist das Betriebssystem.

War es hilfreich?

Lösung

Die beste Weg, um herauszufinden, -. Ein Open-Source-Projekt starten und Menschen Nutzung / Reaktion sehen

Es klingt sehr interessant für mich - aber ich persönlich finden es nicht sehr nützlich. Vielleicht sind wir einfach nicht an dem Punkt, wo die gleichzeitige Programmierung so weit verbreitet ist und einfach, wie es sein könnte.

Mit der Förderung der funktionalen Programmierung, ich denke, die Welt würde in Richtung Vermeidung von Thread-Synchronisation so viel wie möglich bewegen (wodurch Thread-Scheduling weniger Einflusses in der Gesamtleistung)

Aus meiner persönlichen subjektiven Erfahrung können die meisten Performance-Probleme in der Software durch die Verbesserung eines einzigen Engpass Bereichs gelöst werden, die für 90% der Verlangsamung ausmacht. Dieser Optimierer kann dazu beitragen, das herausfinden. Ich bin nicht sicher, wie viel die Planungsstrategie Gesamtleistung verbessern könnte, aber.

Bekomme aber nicht entmutigt,! Ich spreche nur von dünner Luft aus. Es klingt lustig, warum also nicht nur mit ihm spielt trotzdem:)

Andere Tipps

Ihr Ansatz, wie ein statischer Ansatz, das heißt Sie das Programm mehrmals ausführen muß, dann mit einer Scheduling-Lösung kommen, dann mit dem Programm Ihre Planungsinformationen versenden.

Das Problem ist, dass für die meisten nicht-triviale Programme, ihre Leistung hängt zum Teil von den spezifischen Daten mit denen sie arbeiten. Auch wenn Sie einen optimalen Weg zum Zeitplan Threads für einen Datensatz finden, gibt es absolut keine Garantie, dass es Geschwindigkeit auf einem anderen zu verbessern. In den meisten Fällen wird, was läuft eine lange und beschwerliche Optimierung sein, jedes Mal, wenn sie wollen eine neue Version zu tun, wird es nicht wert für Devs, es sei denn vielleicht für großen Rechenaufwand (in denen die Programme sind wahrscheinlich in manuell abgestimmt und nicht geschrieben werden java sowieso).

würde ich ein selbstlern sagen Thread-Scheduler ist eine nette Idee, aber man kann es als ein Problem der klassischen Optimierung nicht behandeln hier. Entweder Sie müssen sicher sein, dass Ihre Terminplanung bleiben, um einen optimalen werden (unwahrscheinlich) oder ein Optimierungsverfahren, das funktioniert zur Laufzeit finden. Und das Problem hier könnte sein, dass es nicht viel würde für den Overhead des Schedulers jeden Performance-Gewinn zu zerstören Sie bekommen könnten.

Ich denke, das eine etwas subjektive Frage, aber alles in allem nicht, glaube nicht, dass es funktionieren würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top