Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

clock() et threads

9 réponses
Avatar
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

9 réponses

Avatar
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.

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

--
LL
Avatar
talon
JKB wrote:
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
Avatar
JKB
Le Thu, 13 Oct 2011 14:41:03 +0200,
Lucas Levrel écrivait :
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
Avatar
JKB
Le Thu, 13 Oct 2011 13:20:37 +0000 (UTC),
Michel Talon écrivait :
JKB wrote:
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
Avatar
Marc
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...
Avatar
Cyrille Lefevre
Le 13/10/2011 18:11, JKB a écrit :
Le Thu, 13 Oct 2011 13:20:37 +0000 (UTC),
Michel Talon écrivait :
JKB wrote:
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.
Avatar
JKB
Le Fri, 14 Oct 2011 09:41:28 +0200,
Cyrille Lefevre <cyrille.lefevre-news% écrivait :
Le 13/10/2011 18:11, JKB a écrit :
Le Thu, 13 Oct 2011 13:20:37 +0000 (UTC),
Michel Talon écrivait :
JKB wrote:
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
Avatar
talon
JKB wrote:

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
Avatar
JKB
Le Fri, 14 Oct 2011 09:18:30 +0000 (UTC),
Michel Talon écrivait :
JKB wrote:

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