Pregunta

Tengo una cola de bloqueo y trabajadores que toman esa cola y luego trabajo durante alrededor de 1-10 ms.

Me gustaría descubrir una cifra relativa de cuánto tiempo el trabajador estaba activo e inactivo en un marco de tiempo dado (por ejemplo, 70% activo en último minuto).

Resumir los cortos períodos de 1 m podría ser inexacto y obtener el tiempo nano consume mucho rendimiento.

¿Hay alguna forma ordenada de hacer una tarea así?

Tengo estas configuraciones de trabajo de cola con más frecuencia en mi código, por lo tanto, me gustaría poder perfilar cuellos de botella en tiempo de ejecución.

EDITAR: Solo quiero saber si el hilo podría estar funcionando. Si el sistema operativo mueve el hilo fuera del enfoque de procesamiento, aún contará. Solo cuando se espera en el bloqueo de la cola se debe contar como tiempo de inactividad.

¿Fue útil?

Solución

¿Qué pasa con un enfoque que muestra el hilo.getState () de cada hilo en su grupo, y luego informa el % de los hilos que estaban en cada estado cuando se tomaron muestras?

De esa manera, podría tener una idea de la frecuencia con la que se encontró que los hilos estaban en nuevos, ejecutables, bloqueados, esperando, Timed_waiting y terminados.

El único otro enfoque que se me ocurra sería ejecutar su código en una herramienta de perfil. Java Profiler de YourKit es muy agradable y viene con licencia de prueba de 1530 días ...

http://www.yourkit.com/java/profiler/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top