[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: temps CPU > 100%



On 2008-05-19 15:18:59 +0200, Basile STARYNKEVITCH wrote:
> A mon avis ce n'est pas un bogue. La commande time doit s'appuyer sur  
> l'appel système times ou getrusage qui renvoie le temps CPU, et  
> lorsqu'on a plus d'un processeur (cas des multicores actuels) qui  
> travaille sur le processus mesuré (ainsi que ses fils et ses threads!)  

La machine a plus d'un processeur, mais je précise que le processus
ne fait pas de fork, et il ne crée pas de threads non plus. C'est un
programme C standard (ISO C99) tout bête.

> le temps cpu est supérieur au temps réel. Par exemple, si les 2  
> processeurs tournent à fond pendant une seconde, le temps cpu sera de 2  
> secondes.
>
> Par contre, le temps mesuré n'est vraiement significatif que s'il a été  
> suffisamment echantillonné. Il faudrait donc lancer une commande qui  
> prend un certain temps (typiquement plus d'une seconde de CPU) pour que  
> la mesure soit significative.

Oui, c'est la source du problème, et d'ailleurs dès que la commande
prend plus de temps (valeur donnée en argument plus élevée), le temps
CPU est bien toujours <= 100%.

Note: je sais bien que c'est imprécis, mais la commande time ne
devrait-elle pas fournir un comportement *cohérent* avec la réalité?

Je vois deux raisons à vouloir un résultat cohérent:
  _ Pour les humains, qui peuvent se poser des questions lorsqu'une
    valeur > 100% est obtenue.
  _ Pour les programmes, lorsque la sortie de time est traitée par
    un autre programme: celui-ci risque de se comporter de manière
    erratique, voire quelque chose de plus sérieux comme un buffer
    overflow.

-- 
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Reply to: