API C pour charger le processeur sous Linux

Dans linux, existe-t-il une fonction de bibliothèque C intégrée pour obtenir la charge de processeur de la machine? Je pourrais probablement écrire ma propre fonction pour ouvrir et parsingr un fichier dans / proc, mais il semblerait qu’il y ait une meilleure solution.

  • N’a pas besoin d’être portable
  • Ne doit nécessiter aucune bibliothèque au-delà d’une installation RHEL4 de base.

Si vous voulez vraiment une interface ca, utilisez getloadavg() , qui fonctionne également dans unix sans /proc .

Il a une page de manuel avec tous les détails.

La méthode préférée pour obtenir des informations sur la charge du processeur sur Linux est de lire / proc / stat , / proc / loadavg et / proc / uptime . Tous les utilitaires linux normaux comme top utilisent cette méthode.

depuis la page de manuel de proc (5):

  /proc/loadavg The first three fields in this file are load average figures giving the number of jobs in the run queue (state R) or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes. They are the same as the load average numbers given by uptime(1) and other programs. The fourth field consists of two numbers sepaâ rated by a slash (/). The first of these is the number of curâ rently executing kernel scheduling entities (processes, threads); this will be less than or equal to the number of CPUs. The value after the slash is the number of kernel scheduling entities that currently exist on the system. The fifth field is the PID of the process that was most recently created on the system. 

Je crois comprendre que l’parsing du contenu de / proc est l’interface officielle pour ce genre de choses (il existe un certain nombre de fichiers qui doivent être analysés avant d’être présentés à l’utilisateur).

“Load average” peut ne pas être très utile. Nous trouvons qu’il est d’une utilité limitée, car il ne vous indique pas réellement la quantité de CPU utilisée, mais seulement le nombre moyen de tâches “prêtes à fonctionner”. “Prêt à fonctionner” est quelque peu subjectif, mais pas très utile car il inclut souvent des processus en attente d’IO.

Sur les systèmes occupés, nous constatons une moyenne de charge de 20+ sur les ordinateurs dotés de seulement 8 cœurs, et les processeurs restnt relativement inactifs.

Si vous voulez voir quel CPU est utilisé, regardez les différents fichiers de / proc