Question

J'ai une file d'attente de blocage et les travailleurs prenant de cette file d'attente et ensuite travailler pour environ 1-10ms.

Je voudrais figure sur une figure relative de combien de temps le travailleur était actif et inactif dans un laps de temps donné (70% par exemple actif dans la dernière minute).

Résumant les courtes périodes de 1ms est peut-être inexactes et aller chercher les consume de temps de nano beaucoup performances.

Y at-il une belle façon de faire une telle tâche?

J'ai plus souvent ces configurations de file d'attente des travailleurs dans mon code, donc je voudrais être en mesure de profil des goulots d'étranglement lors de l'exécution.

EDIT: Je veux seulement savoir si le fil pourrait fonctionner. Si le système d'exploitation déplace le fil de la mise au point de traitement, il doit encore compter. Seulement en attendant le verrou de la file d'attente doivent être comptées comme du temps de repos.

Était-ce utile?

La solution

Qu'en est-il une approche qui échantillonne le Thread.getState () de chaque fil dans votre piscine, puis rapporte le% des fils qui étaient dans chaque état lorsque des échantillons ont été prélevés?

De cette façon, vous pourriez avoir une idée de la façon dont les discussions ont été trouvés souvent être à nouveau, RUNNABLE, BLOQUÉ, WAITING, TIMED_WAITING et TERMINÉ.

La seule autre approche que je peux penser serait d'exécuter votre code dans un outil de profilage. Java Le profileur de YourKit est très agréable, et est livré avec une licence d'essai 1530 jours ...

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top