Soweit eine "einfache Java-App", habe ich vorher etwas ähnliches getan. Meine Bemühungen konzentrierten sich auf das Profiling einer Java-VM (virtuelle Maschine - die "JVM"), wobei nicht die Leistung einer bestimmten Java-Anwendung getestet wurde. Der Fokus lag dabei auf die Prüfung der Fähigkeiten des Hosting-Betriebssystem - Ausübung:
- CPU
- Speicher
- Betriebssystem
- Wenn virtualisierte, der Server VM (nicht JVM) selbst - einschließlich sowohl der virtualisierten und physikalische Komponenten von allen oben genannten.
- Weitgehend ignorierende externe Faktoren, z.B. Festplatte und Netzwerk.
Die Lösungen, die ich sah dies bei eingeschlossen:
SciMark ist ein Verbund Java-Benchmark die Leistung von numerischen Codes Messung in der wissenschaftlichen vorkommenden und technische Anwendungen. Es besteht aus fünf Rechenkernen: FFT, Gauß-Seidel Relaxation, Sparse-Matrix-Multiplikation, Monte-Carlo-Integration und dichte LU-Faktorisierung.
Diese Kernel werden ausgewählt, um einen Hinweis darauf zu geben, wie gut die zugrundeliegenden JVM/JITs bei Anwendungen, die diese Typen von -Algorithmen verwenden, funktionieren. Die Problemgrößen werden absichtlich so gewählt, dass sie in klein sind, um die Auswirkungen der Speicherhierarchie zu isolieren und sich auf interne JVM/JIT- und CPU-Probleme zu konzentrieren. Eine größere Version des Benchmarks (SciMark 2.0 LARGE) adressiert die Leistung des Speichersubsystems mit 0-Problemgrößen außerhalb des Caches.
Es misst mehrere Rechenkerne und meldet eine zusammengesetzte Punktzahl in ungefähren Mflops (Millionen von Fließkommaoperationen pro Sekunde).
Während etwas veraltet (2004) scheint SciMark noch recht effektiv zu sein.
Jeder Testlauf dauert etwa 30 Sekunden.
SPECjvm2008 (Java Virtual Machine Benchmark) ist eine Benchmark-Suite für die Leistung einer Java Runtime Environment (JRE) zu messen, mehr realen Anwendungen und Benchmarks enthält Fokussierung auf Core Java-Funktionalität. Die Suite konzentriert sich auf die Leistung der JRE, die eine einzelne Anwendung ausführt. Es spiegelt die Leistung des Hardware-Prozessors und des Speichersubsystems wider, hat jedoch eine geringe Abhängigkeit von Datei-E/A und enthält keine Netzwerk-E/A über die Maschinen hinweg. Die Arbeitslast SPECjvm2008 imitiert eine Vielzahl üblicher allgemeiner Anwendungen Berechnungen. Diese Merkmale spiegeln die Absicht wider, dass dieser Benchmark für die Messung der grundlegenden Java-Leistung auf einer breiten Palette von Client- und Serversystemen anwendbar ist.
SPEC findet auch User Experience von Java wichtig, und die Suite umfasst daher Start Benchmarks und hat eine erforderliche Lauf Kategorie Basis genannt, die ohne Abstimmung der JVM verbessern die aus der Box Leistung ausgeführt werden muss .
SPECjvm2008 Benchmark-Highlights
- realen Anwendungen Nutzt (wie Derby, sunflow und javac) und Bereich orientierte Benchmarks (wie XML, Serialisierung, krypto und scimark).
- Auch misst die Leistung des Betriebssystems und Hardware im Rahmen der Ausführung der JRE.
Im Gegensatz zu SciMark nimmt SPECjvm2008 viel mehr vollständig die Suite auszuführen - taking just over 2 hours.
für das Netzwerk zu testen, würde ich beide so etwas wie iperf, für Linux/Windows/etc verwenden.
Zum Testen der Festplattenleistung gibt es eine ganze Wissenschaft dahinter, und ohne zu wissen, welches Betriebssystem Sie verwenden, kann ich Ihnen keine spezifische Antwort geben. Wenn Sie jedoch beispielsweise Linux verwenden, würde ich this überprüfen.
Was könnte das Problem verursachen? Ihre Anwendung hat viele Daten? Es hat schicke Grafiken? Verbindung zu Datenbanken? Vielleicht möchten Sie nur das testen, was Ihrer Meinung nach das Problem verursacht –
Was macht schlecht? Wird langsam auf eine Datenbank zugegriffen, dauert es sehr lange, um auf dem Bildschirm zu zeichnen. Funktioniert es immer schlecht oder ist die Leistung inkonsistent? –
Sie können immer ein paar Thread-Dumps als Profiler eines armen Mannes verwenden, mit 'jstack' oder' kill -3'. –