2011-04-29 2 views
0

Vous avez du mal à trouver s'il y a un appel système pour recevoir une notification lorsque l'utilisation du processeur atteint un certain point? Je suis spécifiquement à la recherche d'un appel pour Linux/BSD variantes, mais si vous connaissez la version Windows carillon aussi bien, je sais pour référence future.Notification d'événement d'utilisation du processeur en C/C++?

Quelque chose de similaire à kqueue. De toute évidence, je pouvais consulter périodiquement/proc/cpuinfo ou les utimes individuelles, mais j'espérais qu'il y aurait un appel système qui le ferait pour moi de manière plus efficace.

par exemple. "Faites-moi savoir quand l'utilisation totale du processeur au cours de la dernière minute est supérieure à 50%"

Répondre

0

Les API que vous recherchez sont GetProcessTimes et GetSystemTimes. This link a deux très bons exemples de les utiliser. Si vous avez d'autres questions, puisque je les ai utilisées moi-même pour déterminer le CPUUsage, n'hésitez pas à demander.

+0

Je l'ai utilisé auparavant, mais je l'aurais sondage en continu cela dans une boucle jusqu'à ce que (ou si) l'utilisation a dépassé le seuil, alors que le noyau poignées kqueue garder la trace des choses et il ne revient pas jusqu'à ce que l'événement est déclenché. J'ai besoin d'être constamment informé chaque fois que le seuil est passé. – Jay

+0

Travaillez-vous avec des threads? – wegginho

+0

Je l'ai déjà fait, mais je ne suis pas un maître du fil? – Jay

1

Vous pouvez obtenir des informations sur l'utilisation du processeur de getrusage() et vous pouvez utiliser doux limites avec setrlimit() pour obtenir SIGXCPU lorsque vous dépassez un seuil prédéfini (que vous pouvez augmenter dans le gestionnaire de signaux).

Plus d'informations: http://linux.about.com/library/cmd/blcmdl2_getrusage.htm

+0

Je l'ai déjà utilisé auparavant, mais je l'aurais continuellement interrogé en boucle jusqu'à ce que (ou si) l'utilisation passe le seuil, où comme avec kqueue le noyau gère le suivi des choses et il ne retourne pas jusqu'à ce que le l'événement est déclenché. J'ai besoin d'être constamment informé chaque fois que le seuil est passé. – Jay