Domanda

Ho una coda di blocco e lavoratori prendendo da quella coda e poi lavorare per circa 1-10ms.

desidero figura qualche dato relativo di quanto tempo il lavoratore è stato attivo e inattivo in un telaio dato tempo (ad esempio 70% attivo in all'ultimo minuto).

Riassumendo i brevi periodi di 1ms potrebbe essere quella di andare a prendere i imprecise e consuma tempo nano a molto le prestazioni.

C'è un modo pulito di fare un tale compito?

Ho queste configurazioni coda-lavoratori più spesso nel mio codice, quindi mi piacerebbe essere in grado di profilare i colli di bottiglia in fase di esecuzione.

Modifica Voglio solo sapere se il filo potrebbe essere al lavoro. Se il sistema operativo si sposta il filo fuori del focus di trasformazione deve ancora contare. Solo quando in attesa sulla serratura della coda devono essere conteggiati come tempo di inattività.

È stato utile?

Soluzione

Che dire di un approccio che campiona la Thread.getState () di ogni thread nella vostra piscina, e poi riporta il% di fili che erano in ogni stato in cui sono stati prelevati i campioni?

In questo modo si potrebbe avere un'idea di quanto spesso le discussioni sono risultati essere nel nuovo, RUNNABLE, bloccato, in attesa, TIMED_WAITING e terminato.

L'unico altro approccio che mi viene in mente sarebbe quello di eseguire il codice in uno strumento di profiling. profiler Java YourKit è molto bello, e viene fornito con 1530 giorni di licenza di prova ...

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top