clock() et threads

Le
JKB
Bonjour à tous,

Je cherche depuis ce matin une information que je n'arrive pas à
trouver. Pourtant, ça doit être trivial.

J'ai une fonction qui utilise getrusage() et qui n'est pas implanté
sur un système cible. Je suis en train de la remplacer par des
clock() mais j'ai un énorme doute. La doc de clock() me parle
d'estimation du temps CPU pour le programme. Dans le cas d'un
programme multithreadé, est-ce qu'on entend le temps CPU consommé
par le groupe de threads ou par le thread seul ? J'aurais tendance à
penser qu'il s'agit du groupe de thread, mais ma doc n'est vraiment
pas claire

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse
=> http://grincheux.de-charybde-en-scylla.fr
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Lucas Levrel
Le #23862951
Le 13 octobre 2011, JKB a écrit :

J'ai une fonction qui utilise getrusage() et qui n'est pas implanté
sur un système cible. Je suis en train de la remplacer par des
clock() mais j'ai un énorme doute. La doc de clock() me parle
d'estimation du temps CPU pour le programme. Dans le cas d'un
programme multithreadé, est-ce qu'on entend le temps CPU consommé
par le groupe de threads ou par le thread seul ? J'aurais tendance à
penser qu'il s'agit du groupe de thread, mais ma doc n'est vraiment
pas claire...



Tu n'as pas clock_gettime() ? Là tu peux choisir.

Je suppose que tu veux le temps par thread, sinon il y a times()...

--
LL
talon
Le #23863181
JKB
Bonjour à tous,

Je cherche depuis ce matin une information que je n'arrive pas à
trouver. Pourtant, ça doit être trivial.

J'ai une fonction qui utilise getrusage() et qui n'est pas implanté
sur un système cible. Je suis en train de la remplacer par des
clock() mais j'ai un énorme doute. La doc de clock() me parle
d'estimation du temps CPU pour le programme. Dans le cas d'un
programme multithreadé, est-ce qu'on entend le temps CPU consommé
par le groupe de threads ou par le thread seul ? J'aurais tendance à
penser qu'il s'agit du groupe de thread, mais ma doc n'est vraiment
pas claire...

Cordialement,

JKB




Selon la page man de FreeBSD
DESCRIPTION
The clock() function determines the amount of processor time used
since the invocation of the calling process, measured in CLOCKS_PER_SECs
of a second.

ce qui dit clairement qu'il s'agit de processus et non de thread.



--

Michel TALON
JKB
Le #23863751
Le Thu, 13 Oct 2011 14:41:03 +0200,
Lucas Levrel
Le 13 octobre 2011, JKB a écrit :

J'ai une fonction qui utilise getrusage() et qui n'est pas implanté
sur un système cible. Je suis en train de la remplacer par des
clock() mais j'ai un énorme doute. La doc de clock() me parle
d'estimation du temps CPU pour le programme. Dans le cas d'un
programme multithreadé, est-ce qu'on entend le temps CPU consommé
par le groupe de threads ou par le thread seul ? J'aurais tendance à
penser qu'il s'agit du groupe de thread, mais ma doc n'est vraiment
pas claire...



Tu n'as pas clock_gettime() ? Là tu peux choisir.



Non, je n'ai pas clock_gettime().

Je suppose que tu veux le temps par thread, sinon il y a times()...



Non plus, je veux le temps par processus comme donné par getrusage.

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
JKB
Le #23863741
Le Thu, 13 Oct 2011 13:20:37 +0000 (UTC),
Michel Talon
JKB
Bonjour à tous,

Je cherche depuis ce matin une information que je n'arrive pas à
trouver. Pourtant, ça doit être trivial.

J'ai une fonction qui utilise getrusage() et qui n'est pas implanté
sur un système cible. Je suis en train de la remplacer par des
clock() mais j'ai un énorme doute. La doc de clock() me parle
d'estimation du temps CPU pour le programme. Dans le cas d'un
programme multithreadé, est-ce qu'on entend le temps CPU consommé
par le groupe de threads ou par le thread seul ? J'aurais tendance à
penser qu'il s'agit du groupe de thread, mais ma doc n'est vraiment
pas claire...

Cordialement,

JKB




Selon la page man de FreeBSD
DESCRIPTION
The clock() function determines the amount of processor time used
since the invocation of the calling process, measured in CLOCKS_PER_SECs
of a second.

ce qui dit clairement qu'il s'agit de processus et non de thread.




Sous FreeBSD, peut-être. Sous les Unix que j'ai sous la main, on
parle toujours de programme (Tru64 et Linux) :

DESCRIPTION
The clock() function returns an approximation of processor time
used by the program.

Donc la question devient : est-ce toujours le temps sur un processus ?
Dans mon cas, c'est assez important puisque c'est pour un watchdog.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Marc
Le #23864621
JKB wrote:

J'ai une fonction qui utilise getrusage() et qui n'est pas implanté
sur un système cible. Je suis en train de la remplacer par des
clock() mais j'ai un énorme doute. La doc de clock() me parle
d'estimation du temps CPU pour le programme. Dans le cas d'un
programme multithreadé, est-ce qu'on entend le temps CPU consommé
par le groupe de threads ou par le thread seul ? J'aurais tendance à
penser qu'il s'agit du groupe de thread, mais ma doc n'est vraiment
pas claire...



D'après la page de man que je vois sous linux, certains systèmes (pas
linux) incluent même le temps des enfants récupérés par wait...
Cyrille Lefevre
Le #23866081
Le 13/10/2011 18:11, JKB a écrit :
Le Thu, 13 Oct 2011 13:20:37 +0000 (UTC),
Michel Talon
JKB
Bonjour à tous,







Salut,

J'ai une fonction qui utilise getrusage() et qui n'est pas i mplanté
sur un système cible. Je suis en train de la remplacer par des







peux-tu préciser de quels systèmes s'agit-il précisement ?

Sous FreeBSD, peut-être. Sous les Unix que j'ai sous la main, on
parle toujours de programme (Tru64 et Linux) :



du Linux embarqué avec un noyau minimaliste ?
car je reste dubitatif sur le fait que ni Tru64 ni Linux n'implément e
getrusage !

Tru64
http://nixdoc.net/man-pages/Tru64/man2/getrusage.2.html

Linux
bon, le man n'y est pas, mais c'est listé dans les syscalls depuis l e
noyau 2.0.34...
http://nixdoc.net/man-pages/Linux/man2/syscalls.2.html
direction ailleurs
https://www.kernel.org/doc/man-pages/online/pages/man2/getrusage.2.html
encore mieux, pas de version en face de getrusage, existe donc depuis le
noyau 1.0...
https://www.kernel.org/doc/man-pages/online/pages/man2/syscalls.2.html

de mémoire, tu peux toujours aller dans les sources du tcsh pour voi r
comment ils font quand il n'y a pas getrusage, bsd vs sysv !

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
JKB
Le #23866131
Le Fri, 14 Oct 2011 09:41:28 +0200,
Cyrille Lefevre
Le 13/10/2011 18:11, JKB a écrit :
Le Thu, 13 Oct 2011 13:20:37 +0000 (UTC),
Michel Talon
JKB
Bonjour à tous,







Salut,

J'ai une fonction qui utilise getrusage() et qui n'est pas implanté
sur un système cible. Je suis en train de la remplacer par des







peux-tu préciser de quels systèmes s'agit-il précisement ?



Je n'ose pas... Il s'agit d'un OS/2 (eComStation 2.1) avec gcc et la
couche POSIX EMX/kLibc.

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
talon
Le #23866351
JKB

Sous FreeBSD, peut-être. Sous les Unix que j'ai sous la main, on
parle toujours de programme (Tru64 et Linux) :

DESCRIPTION
The clock() function returns an approximation of processor time
used by the program.

Donc la question devient : est-ce toujours le temps sur un processus ?
Dans mon cas, c'est assez important puisque c'est pour un watchdog.

JKB




Ca m'étonnerait que "program" signifie autre chose que processus.
D'ailleurs j'ai vérifié sur la spécification POSIX, on parle de
"process", comme chez FreeBSD.

--

Michel TALON
JKB
Le #23875361
Le Fri, 14 Oct 2011 09:18:30 +0000 (UTC),
Michel Talon
JKB

Sous FreeBSD, peut-être. Sous les Unix que j'ai sous la main, on
parle toujours de programme (Tru64 et Linux) :

DESCRIPTION
The clock() function returns an approximation of processor time
used by the program.

Donc la question devient : est-ce toujours le temps sur un processus ?
Dans mon cas, c'est assez important puisque c'est pour un watchdog.

JKB




Ca m'étonnerait que "program" signifie autre chose que processus.
D'ailleurs j'ai vérifié sur la spécification POSIX, on parle de
"process", comme chez FreeBSD.



Je vais donc essayer avec clock(). De toute façon, là, tout de
suite, j'ai quelques problèmes avec ncurses sur la plate-forme en
question, donc je ne peux pas réellement tester avant d'avoir
débuggué le ncurses en question :-(

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
Publicité
Poster une réponse
Anonyme