2012-09-13 18 views
8

Necesito explicar por qué mi aplicación tiene un rendimiento bajo en una ubicación remota. Va a ser un inconveniente para mí instalar un generador de perfiles. Sospecho que la máquina está mal configurada, pero necesito una forma sencilla de mostrar que una aplicación estándar sufre en su máquina, por lo tanto, absolver mi aplicación y cambiar el enfoque a los administradores de su sistema.¿Qué utilidades Java existen para la evaluación comparativa de la CPU, la memoria, el disco y el rendimiento de E/S de la red de una máquina?

Idealmente, me gustaría sugerirles que instalen una aplicación Java simple que pruebe el rendimiento del entorno host. Si pudiera devolver algunas especificaciones para CPU, disco, red, etc., serían perfectas.

Esperaba encontrar algo así en la web, pero hasta ahora no he tenido éxito en mi búsqueda.

+1

¿Qué crees que puede causar el problema? Su aplicación tiene muchos datos? Tiene gráficos sofisticados? Conexión a bases de datos? Es posible que desee probar solo lo que cree que está causando el problema –

+0

¿Qué está funcionando mal? ¿Está accediendo a una base de datos lentamente, le toma mucho tiempo comenzar, dibujar en la pantalla? ¿Siempre funciona mal o el rendimiento es inconsistente? –

+0

Siempre puede hacer algunos volcados de hilo como generador de perfiles de un hombre pobre, usando 'jstack' o' kill -3'. –

Respuesta

12

En cuanto a una "simple aplicación de Java", anteriormente hice algo similar. Mis esfuerzos se centraron en el perfil de una VM Java (máquina virtual, la "JVM"), sin probar el rendimiento de una aplicación Java específica. La atención se centró en las pruebas de las capacidades del sistema operativo anfitrión - ejercicio:

  • CPU
  • memoria
  • sistema operativo
  • Si virtualizado, el servidor de VM (no JVM) sí - incluyendo tanto la virtualizado y componentes físicos de todo lo anterior.
  • Haciendo caso omiso de factores externos, p. disco y red.

Las soluciones que miraron para esta incluido:

SciMark es un punto de referencia de Java compuesto que mide el rendimiento de los códigos numéricos que ocurre en científico y aplicaciones de ingeniería. Consta de cinco núcleos computacionales: FFT, Gauss-Seidel relajación, multiplicación de matriz dispersa, integración de Monte Carlo y factorización LU densa .

Estos núcleos se eligen para proporcionar una indicación de qué tan bien funcionan las JVM/JIT subyacentes en aplicaciones que utilizan estos tipos de algoritmos . Los tamaños de los problemas se seleccionan a propósito para que sean pequeños en para aislar los efectos de la jerarquía de la memoria y centrarse en problemas internos de la JVM/JIT y la CPU . Una versión más grande de la referencia (SciMark 2.0 LARGE) trata sobre el rendimiento del subsistema de memoria con tamaños de problema sin caché.

Mide varios núcleos computacionales e informa una puntuación compuesta en Mflops aproximados (Millones de operaciones en coma flotante por segundos).

Aunque algo anticuado (2004), SciMark todavía parece ser bastante efectivo.

Cada ejecución de prueba tarda unos 30 segundos en ejecutarse.

SPECjvm2008 (Java Virtual Machine Benchmark) es un conjunto de pruebas para medir el rendimiento de un entorno de ejecución de Java (JRE), que contiene varias aplicaciones de la vida real y los puntos de referencia centrándose en core java funcionalidad. El conjunto se centra en el rendimiento del JRE que ejecuta una sola aplicación; refleja el rendimiento del procesador de hardware y el subsistema de memoria, pero tiene poca dependencia de E/S de archivos e incluye ninguna E/S de red en las máquinas. La carga de trabajo SPECjvm2008 imita una variedad de cálculos comunes de aplicaciones de uso general . Estas características reflejan la intención de que este punto de referencia sea aplicable para medir el rendimiento básico de Java en una amplia variedad de sistemas cliente y servidor .

SPEC encuentra también la experiencia del usuario de Java importante, y la suite por lo tanto, incluye los puntos de referencia de inicio y tiene una categoría de ejecución requerido llamado base, que debe ejecutarse sin ningún tipo de puesta a punto de la JVM para mejorar la salida de la actuación cuadro .

SPECjvm2008 Benchmark destacados

  • refuerza las aplicaciones de la vida real (como derby, sunflow y javac) y puntos de referencia de área enfocada (como XML, la serialización, la criptografía, y SciMark).
  • También mide el rendimiento del sistema operativo y el hardware en el contexto de la ejecución del JRE.

A diferencia SciMark, SPECjvm2008 toma mucho más tiempo para ejecutar plenamente la suite - taking just over 2 hours.


Para la prueba de la red, que haría uso de algo así como iperf, disponible tanto para Linux/Windows/etc.

Para probar el rendimiento del disco, existe toda una ciencia detrás de esto, y sin saber qué sistema operativo está utilizando, no puedo darle una respuesta específica. Sin embargo, si está utilizando Linux, por ejemplo, revisaría this.

Cuestiones relacionadas