OVH Cloud OVH Cloud

Commutations entre des threads java

5 réponses
Avatar
Dam
Bonjour,

J'ai un programme Java charg=E9 d'ex=E9cuter un nombre variable de
Threads sur une machine Linux. J'ai besoin de mesurer le nombre de
commutation effectu=E9es entre ces threads. J'ai essay=E9 de regarder
dans "/proc" pour voir si je trouverai mon bonheur mais sans succ=E8s.
Pourriez vous m'indiquer la marche =E0 suivre?

Merci.

5 réponses

Avatar
Stephane Chazelas
2006-01-31, 00:29(-08), Dam:
Bonjour,

J'ai un programme Java chargé d'exécuter un nombre variable de
Threads sur une machine Linux. J'ai besoin de mesurer le nombre de
commutation effectuées entre ces threads. J'ai essayé de regarder
dans "/proc" pour voir si je trouverai mon bonheur mais sans succès.
Pourriez vous m'indiquer la marche à suivre?
[...]


Tu peux configurer ton noyau avec CONFIG_SCHEDSTATS (au moins en
2.6). Voir linux/kernel/sched.c pour les details.

--
Stéphane

Avatar
Patrice Trognon
Stephane Chazelas wrote:

2006-01-31, 00:29(-08), Dam:
Bonjour,

J'ai un programme Java chargé d'exécuter un nombre variable de
Threads sur une machine Linux. J'ai besoin de mesurer le nombre de
commutation effectuées entre ces threads. J'ai essayé de regarder
dans "/proc" pour voir si je trouverai mon bonheur mais sans succès.
Pourriez vous m'indiquer la marche à suivre?
[...]


Tu peux configurer ton noyau avec CONFIG_SCHEDSTATS (au moins en
2.6). Voir linux/kernel/sched.c pour les details.



A partir du JDK 1.5 tu as des APIs de management des threads (entre autre).
Plus Java comme approche pour le cas ou tes threads ne sont pas des threads
kernel.

--

Patrice Trognon
http://www.javadevel.com


Avatar
Dam
Pourrais-tu m'en dire davantage sur linux/kernel/sched.c?
J'ai beau le regarder...
Faut-il compiler ce fichier? si oui, comment?

Merci pour ton aide.
Avatar
Stephane Chazelas
On 3 Feb 2006 02:25:50 -0800, Dam wrote:
Pourrais-tu m'en dire davantage sur linux/kernel/sched.c?
J'ai beau le regarder...
Faut-il compiler ce fichier? si oui, comment?
[...]


Non, tu changes "# CONFIG_SCHEDSTATS is not set" en
CONFIG_SCHEDSTATS=y dans le .config des sources de ton noyau
Linux et recompiles le.

Ensuite, tu devrais avoir un /proc/<pid>/schedstat pour chaque
processus et un /proc/schedstat global. A la lecture du fichier
sched.c, tu pourras apprendre ce que tu peux trouver dans ces
fichiers schedstat. Je ne l'ai pas personnellement essayé.
Peut-etre que ca ne marche pas du tout vu que ce n'est pas
documenté.

--
Stephane

Avatar
Stephane Chazelas
On 03 Feb 2006 11:47:18 GMT, Stephane Chazelas wrote:
On 3 Feb 2006 02:25:50 -0800, Dam wrote:
Pourrais-tu m'en dire davantage sur linux/kernel/sched.c?
J'ai beau le regarder...
Faut-il compiler ce fichier? si oui, comment?
[...]


Non, tu changes "# CONFIG_SCHEDSTATS is not set" en
CONFIG_SCHEDSTATS=y dans le .config des sources de ton noyau
Linux et recompiles le.

Ensuite, tu devrais avoir un /proc/<pid>/schedstat pour chaque
processus et un /proc/schedstat global. A la lecture du fichier
sched.c, tu pourras apprendre ce que tu peux trouver dans ces
fichiers schedstat. Je ne l'ai pas personnellement essayé.
Peut-etre que ca ne marche pas du tout vu que ce n'est pas
documenté.


Ah ben si, c'est documenté. Voir
http://eaglet.rain.com/rick/linux/schedstat/

et schedstat.txt dans linux/Documentation

--
Stephane