J'ai eu ce problème il y a quelque temps. Je fini par utiliser getrusage: Vous pouvez obtenir une aide détaillée à: http://www.opengroup.org/onlinepubs/009695399/functions/getrusage.html
getrusage renseigne le struct rusage.
mesure temps d'attente avec getrusage
Vous pouvez appeler getrusage au début de votre code, puis appeler à nouveau à la fin, ou à un moment approprié pendant l'exécution. Vous avez alors initial_rusage et final_rusage. Le temps passé par votre processus est indiqué par rusage-> ru_utime.tv_sec et le temps système passé par le processus est indiqué par rusage-> ru_stime.tv_sec.
Ainsi le total utilisateur le temps passé par le processus sera: user_time = final_rusage.ru_utime.tv_sec - initial_rusage.ru_utime.tv_sec
Le total du système temps passé par le processus sera: system_time = final_rusage.ru_stime.tv_sec - initial_rusage.ru_stime.tv_sec
Si TOTAL_TIME est le temps écoulé entre les deux appels de getrusage alors le temps d'attente sera wait_time = TOTAL_TIME - (user_time + system_time)
Hope this il lps
Ce que vous mesurez est la latence de planification, pas la latence de contention. –
J'ai manqué la partie "Je veux vérifier combien de temps un processus sqlldr attend". Mon test montre combien de temps il ne passe pas avec le cpu. Ps -elF indique le temps de calcul total passé par le processeur. Je me demande si quelque chose de plus précis est dans/proc/ /. Vous pouvez prendre un instantané, exécuter une longue requête et la vérifier à nouveau. Le montant non dépensé avec le processeur est le temps passé moins le temps passé passé passé avec CPU, quelque chose comme ça. –
Mike