Java Random Slowdowns unter Mac OS

Ich habe ein Java-Programm, mit dem ich eine Reihe von wissenschaftlichen Berechnungen auf mehreren Prozessoren durchführen kann, indem ich sie in Teile zerlege und jedes Teil in einem anderen Thread ausführe. Das Problem ist trivial partitionierbar, sodass es keine Konflikte oder Kommunikation zwischen den Threads gibt. Die einzigen allgemeinen Daten, auf die sie zugreifen, sind einige gemeinsam genutzte statische Caches, deren Zugriff nicht synchronisiert werden muss, sowie einige Datendateien auf der Festplatte. Die Threads schreiben auch kontinuierlich auf die Festplatte, aber um Dateien zu trennen.

Mein Problem ist, dass ich manchmal, wenn ich das Programm starte, eine sehr gute Geschwindigkeit erhalte, und manchmal, wenn ich genau das gleiche starte, läuft es sehr langsam. Wenn ich sehe, dass es langsam läuft und Strg-C und starte es neu, wird es normalerweise wieder schnell laufen. Es scheint sich zu Beginn des Laufs entweder in den langsamen oder den schnellen Modus zu versetzen und wechselt niemals zwischen den Modi.

Ich habe es an jconsole angeschlossen und es scheint kein Speicherproblem zu sein. Wenn ich festgestellt habe, dass es langsam läuft, habe ich versucht, einen Profiler damit zu verbinden, aber der Profiler stellt keine Verbindung her. Ich habe versucht, mit -Xprof zu laufen, aber die Dumps zwischen einem langsamen und einem schnellen Lauf scheinen nicht viel anders zu sein. Ich habe auch versucht, verschiedene Müllsammler und verschiedene Größen der verschiedenen Teile des Speicherplatzes zu verwenden.

Mein Computer ist ein Mac Pro mit gestreifter RAID-Partition. Die CPU-Auslastung sinkt nie, egal ob sie langsam oder schnell ausgeführt wird. Dies ist zu erwarten, wenn Threads zu viel Zeit damit verbringen, Lesevorgänge von der Festplatte zu blockieren. Ich denke also nicht, dass dies ein Problem beim Lesen der Festplatte sein könnte.

Meine Frage ist, welche Arten von Problemen mit meinem Code dies verursachen könnten? Oder könnte dies ein Betriebssystemproblem sein? Ich konnte es nicht auf einem Windows-Computer duplizieren, aber ich habe keinen Windows-Computer mit einem ähnlichen RAID-Setup.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage