2012-09-13 13 views
8

Devo spiegare perché la mia applicazione si sta comportando male in una postazione remota. Per me è scomodo installare un profiler. Ho il sospetto che la macchina sia configurata male, ma ho bisogno di un modo semplice per dimostrare che un'app standard soffre sulla loro macchina, assolvendo quindi la mia applicazione e spostando l'attenzione sui loro amministratori di sistema.Quali utilità Java esistono per il benchmarking delle prestazioni della CPU, della memoria, del disco e dell'I/O della rete?

Idealmente, vorrei suggerire di installare una semplice app Java che verifica le prestazioni dell'ambiente host. Se potesse restituire alcune specifiche per CPU, disco, rete, ecc, sarebbero perfette.

Mi aspettavo di trovare una cosa del genere sul web, ma finora non ho avuto successo nella mia ricerca.

+1

Cosa pensi possa causare il problema? La tua applicazione ha molti dati? Ha una grafica stravagante? Connessione ai database? Potresti voler testare solo ciò che pensi che stia causando il problema –

+0

Che cosa si sta comportando male? Sta entrando lentamente in un database, ci vuole molto tempo per iniziare, per disegnare sullo schermo. Funziona sempre male o le prestazioni sono incoerenti? –

+0

Puoi sempre fare alcuni discorsi come profiler di un povero uomo, usando 'jstack' o' kill -3'. –

risposta

12

Per quanto riguarda una "semplice app Java", in precedenza avevo fatto qualcosa di simile. I miei sforzi erano focalizzati sulla profilazione di una Java VM (macchina virtuale - la "JVM"), non testando le prestazioni di una specifica applicazione Java. L'attenzione si è concentrata sulla sperimentazione delle capacità del sistema operativo di hosting - esercizio:

  • CPU
  • memoria
  • sistema operativo
  • Se virtualizzato, il server VM (non JVM) per sé - che comprende sia il virtualizzato e componenti fisiche di tutto quanto sopra.
  • Ignorando in larga misura i fattori esterni, ad es. disco e rete.

Le soluzioni ho guardato per questo incluso:

SciMark è un punto di riferimento composito Java misurare le prestazioni dei codici numerici che si verificano in scientifica e applicazioni di ingegneria. Consiste di cinque kernel computazionali: FFT, Gauss-Seidel relaxation, Sparse matrix-multiply, integrazione Monte Carlo e densa fattorizzazione LU.

Questi kernel sono scelti per fornire un'indicazione di quanto bene le JVM/JIT sottostanti eseguono su applicazioni che utilizzano questi tipi di algoritmi . Le dimensioni dei problemi sono scelte appositamente per essere piccole nell'ordine per isolare gli effetti della gerarchia di memoria e concentrarsi sui problemi interni della JVM/JIT e della CPU . Una versione più ampia del benchmark (SciMark 2.0 LARGE) affronta le prestazioni del sottosistema di memoria con le dimensioni dei problemi di out-of-cache .

Misura diversi kernel computazionali e riporta un punteggio composito in Mflops approssimativo (milioni di operazioni in virgola mobile per secondo).

Mentre un po 'datato (2004), SciMark sembra ancora abbastanza efficace.

Ogni esecuzione di prova richiede circa 30 secondi.

SPECjvm2008 (Java Virtual Machine Benchmark) è una suite di benchmark per misurare le prestazioni di un Java Runtime Environment (JRE), contenente diverse applicazioni reali e benchmark concentrandosi sulla funzionalità java core . La suite si concentra sulle prestazioni del JRE che esegue una singola applicazione; riflette le prestazioni del processore hardware e del sottosistema di memoria , ma ha una bassa dipendenza dall'I/O file e non include I/O di rete tra le macchine. Il carico di lavoro SPECjvm2008 simula una varietà di comuni calcoli dell'applicazione . Queste caratteristiche riflettono l'intento che questo benchmark sarà applicabile alla misurazione delle prestazioni Java di base su una vasta gamma di entrambi i sistemi client e server.

SPEC trova anche l'esperienza degli utenti di Java importanti, e la suite comprende pertanto benchmark di avvio e ha una categoria di corsa richiesto chiamata di base, che deve essere eseguito senza alcuna messa a punto della JVM per migliorare la fuori dalla prestazioni scatola .

SPECjvm2008 Benchmark evidenza

  • sfrutta le applicazioni della vita reale (come derby, Sunflow, e javac) e benchmark dell'area focalizzata (come XML, la serializzazione, cripto, e scimark).
  • Misura anche le prestazioni del sistema operativo e dell'hardware nel contesto dell'esecuzione di JRE.

differenza SciMark, SPECjvm2008 richiede molto più tempo per eseguire pienamente la suite - taking just over 2 hours.


Per testare la rete, userei qualcosa di simile iperf, disponibile sia per Linux/Windows/etc.

Per testare le prestazioni del disco, c'è un'intera scienza dietro a questo, e senza sapere quale sistema operativo si sta utilizzando, non posso darti una risposta specifica. Tuttavia, se stai usando Linux, ad esempio, rivedere this.

Problemi correlati