OVH Cloud OVH Cloud

Mesure temps CPU des processus

5 réponses
Avatar
Olivier Croquette
Salut

Je recherche depuis un moment un moyen de connaître le temps CPU
(système et utilisateur) utilisé par un processus, avec les contraintes
suivantes:

- à partir d'un programme en C

- processus spécifié par son PID (quelconque, ou éventuellement
seulement pour un des fils du processus en cours)

- avec une précision de 1 ms ou mieux

- sur un noyau standard 2.6

J'ai déjà regardé les solutions suivantes:

- getrusage: ne marche pas pour avoir le temps CPU d'un seul fils
apparemment

- /proc/pid/stat: précision insuffisante (10ms semblerait-il)

Quelqu'un aurait une autre idée?

Merci!

--
Pour contacter l'équipe de modération : moderateurs-fcolm@efrei.fr
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.

5 réponses

Avatar
Olivier Croquette
in mouths -
and babies? heads stuffed with wild rice. Or keep it simple with a
hearty main course such as stew, lasagna, or meat loaf.

Some suggestions

Pre-mie pot pies, beef stew, leg of lamb, stuffed chicken, roast pork spiral ham,
Cranberry pineapple salad, sweet potatoes in butter, vegetable platter, tossed salad with tomato and avocado, parsley new potatoes, spinich cucumber salad, fruit salad
Bran muffins, dinner rolls, soft breadsticks, rice pilaf, croissants
Apple cake with rum sauce, frosted banana nut bread sherbet, home made brownies
Iced tea, water, beer, bloody marys, lemonade, coffee

The guests select food, beverages, silverware... everything from the buffet table.
They move to wherever they are comfortable, and sit with whoever they choose.
Provide trays so your guests will not spill everything all over your house from
carrying too much, nor will they have to make 10 trips back and fourth from the
service stations.



Roast Leg of Amputee

By all means, substitute lamb or a good beef roast if the haunch
it is in any way diseased. But sometimes surgeons make mistakes,
and if a healthy young limb is at hand, then don?t hesitate to cook
it to perfection!

1 high quality limb, rack, or roast
Potatoes, carrot
Oil
celery
onions
green onions
parsley
garlic
salt, pepper, etc
2 cups beef stock

Marinate meat (optional, not necessary with better cuts).
Season liberally and lace with garlic cloves by making incisions,
and placing whole cloves deep into the meat.
Grease a baking pan, and fill with a thick bed of onions,
celery, green onions, and parsley.
Place roast on top with fat side up.
Place uncovered in 500° oven for 20 minutes, reduce oven to 325°.
Bake till medium rare (150°) and let roast rest.
Pour stock over onions and drippings, carve the meat and
place the slices in the au jus.



Bisque à l?Enfant

Honor the memory of Grandma with this dish by utilizing her good
silver soup tureen a
Avatar
Khanh-Dang
Olivier Croquette a écrit :
Je recherche depuis un moment un moyen de connaître le temps CPU
(système et utilisateur) utilisé par un processus, avec les contraintes
suivantes:

- avec une précision de 1 ms ou mieux

- sur un noyau standard 2.6



- /proc/pid/stat: précision insuffisante (10ms semblerait-il)



Je ne suis pas de ceux qui lisent quotidiennement le code source de
Linux, mais il me semble bien que par défaut (dans un noyau standard
donc), la granularité du scheduler est de 100 Hz, soit 10 ms. Tu ne peux
donc pas avec un noyau standard faire des mesures plus précises que le
centième de seconde.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Basile Starynkevitch [news]
On 2005-04-10, Khanh-Dang wrote:
Olivier Croquette a écrit :
Je recherche depuis un moment un moyen de connaître le temps CPU
(système et utilisateur) utilisé par un processus, avec les contraintes
suivantes:

- avec une précision de 1 ms ou mieux

- sur un noyau standard 2.6



- /proc/pid/stat: précision insuffisante (10ms semblerait-il)



Je ne suis pas de ceux qui lisent quotidiennement le code source de
Linux, mais il me semble bien que par défaut (dans un noyau standard
donc), la granularité du scheduler est de 100 Hz, soit 10 ms. Tu ne peux
donc pas avec un noyau standard faire des mesures plus précises que le
centième de seconde.



Il me semble que ca ne serait plus vrai dans un noyau 2.6 récent. Par
exemple 2.6.12-rc1 contient en linux-2.6.12-rc1/include/asm/param.h

#ifdef __KERNEL__
# define HZ 1000 /* Internal kernel timer frequency */
# define USER_HZ 100 /* .. some user interfaces are in "ticks
" */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#endif

Par ailleurs, HZ dépend du processeur

--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basile<at>starynkevitch<dot>net
aliases: basile<at>tunes<dot>org = bstarynk<at>nerim<dot>net
8, rue de la Faïencerie, 92340 Bourg La Reine, France

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Olivier Croquette
Khanh-Dang wrote:

Je ne suis pas de ceux qui lisent quotidiennement le code source de
Linux, mais il me semble bien que par défaut (dans un noyau standard
donc), la granularité du scheduler est de 100 Hz, soit 10 ms. Tu ne peux
donc pas avec un noyau standard faire des mesures plus précises que le
centième de seconde.



Salut!

La granularité dont tu parles est de 1ms sur le 2.6.

Mais il s'agit de la granularité en terme d'ordonnancement, il n'y a pas
de raison d'avoir de granularité particulière au niveau de la mesure
d'un temps CPU (si elle était possible).

Il suffit en théorie d'additioner le temps utilisé par le processus
précédent à chaque changement de contexte.

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.
Avatar
Olivier Croquette
Olivier Croquette wrote:

La granularité dont tu parles est de 1ms sur le 2.6.



A noter que c'est vrai sur x86, sur d'autres plate-formes ça peut être
autre chose (sur Alpha, je crois que le 2.4 était déjà à 1ms).

--
Pour contacter l'équipe de modération :
ATTENTION: Postez DIRECTEMENT vos articles dans le groupe, PAS dans
la liste de distribution des modérateurs.