2017-06-16 2 views
4

Gibt es eine Möglichkeit zu überwachen, was Java ForkJoinPool im Laufe der Zeit tut, insbesondere wie effektiv CountedCompleter führt?Monitor Java 8 ForkJoinPool

  • Wie lange dauerte die Ausführung von Teilaufgaben?
  • War einer der Teilaufgaben länger als die anderen?
  • Haben sie parallel ausgeführt?

zum Beispiel von Triggern in CountedCompleter javadoc angewandt wird, würde mir das Monitoring-Tool sagen, dass PacketSender Abschluss von HeaderBuilder begrenzt war, die zuerst begonnen, aber 13s nahm während BodyBuilder 4s nahm und vor abgeschlossen.

Ich suche ein solches Tool, meist als Java-Agent, um meinen Produktionscode nicht mit unnötigen Statistiken zu belasten, aber nichts gefunden.

Vielen Dank für jede Hilfe

+0

gute Frage, soweit ich das beurteilen kann, mussten sie intern etwas ausprobieren ... – Eugene

+0

Hallo @Eugene, ja, das ist was ich auch denke. Mal sehen – Kineolyan

+0

Aleksey Shipilëv (https://shipilev.net/) hat einen Benchmark auf der FJP für Java7 gemacht. Die Ergebnisse waren schrecklich, als ich mich erinnere. Ich habe keinen Benchmark für Java8 gesehen. Um die FJ-Klassen zu überwachen, müssten Sie die Quelle aus der Zip-Datei extrahieren und Ihren eigenen Code hinzufügen, um den Überblick zu behalten. Eine Menge Arbeit, da sich die FJ-Klassen nur auf Arbeit konzentrieren, nicht auf Statistiken. – edharned

Antwort

0

Die beste (und realistisch nur) Art und Weise ist AOP zu verwenden, um „Spion“ auf Methodenaufrufe und Rekord Start- und Zielzeitstempeln und Kontext, die für die statistische Analyse gesammelt werden kann.

Ich habe AspectJ mit guter Wirkung verwendet und kann es empfehlen, aber jede solche Bibliothek sollte funktionieren.

+0

Hallo Bohemian, bis jetzt, habe ich es geschafft, verschiedene Statistiken zu sammeln, indem ich einen Java-Agenten mit javassist erstellt habe, um Anfang und Ende der Berechnungen zu erfassen. Mein Problem war jetzt, es korrekt zu exportieren, da ich Statistiken in stdout druckte und zu viele Daten generierte. Ich werde auch auf AspectJ schauen. – Kineolyan