Détermination de l’utilisation du processeur

Existe-t-il une commande ou un autre moyen d’obtenir l’utilisation actuelle ou moyenne du processeur (pour un environnement multiprocesseur) sous Linux?

J’utilise Linux embarqué dans un petit système. Fondamentalement, je dois déterminer l’utilisation du processeur, de sorte que si elle est élevée, je peux au lieu de réorienter un nouveau processus vers un autre contrôleur du système, plutôt que de l’exécuter sur le processeur principal.

Cette question ne concerne pas simplement la hiérarchisation des processus, l’autre contrôleur peut gérer suffisamment le nouveau processus, mais uniquement lorsque le processeur principal n’est pas occupé, je préférerais qu’il exécute le processus.

Vous devez échantillonner les valeurs dans /proc/stat à deux resockets et calculer l’utilisation moyenne sur cette période. (L’utilisation instantanée n’a pas beaucoup de sens – elle sera toujours à 100% sur une machine à cœur unique, puisque votre code de mesure d’utilité est actif à chaque fois qu’il est utilisé).

La réponse à la question après beaucoup de recherches et de bricolage:

 #include  #include  int main(void) { long double a[4], b[4], loadavg; FILE *fp; char dump[50]; for(;;) { fp = fopen("/proc/stat","r"); fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&a[0],&a[1],&a[2],&a[3]); fclose(fp); sleep(1); fp = fopen("/proc/stat","r"); fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&b[0],&b[1],&b[2],&b[3]); fclose(fp); loadavg = ((b[0]+b[1]+b[2]) - (a[0]+a[1]+a[2])) / ((b[0]+b[1]+b[2]+b[3]) - (a[0]+a[1]+a[2]+a[3])); printf("The current CPU utilization is : %Lf\n",loadavg); } return(0); } 

Je reçois les mêmes valeurs que celles signalées par le Moniteur système.

 cat /proc/stat 

vous verrez quelque chose comme ça

 cpu 178877 11039 58012 5027374 22025 2616 1298 0 0 cpu0 122532 8808 34213 2438147 10881 1050 448 0 0 cpu1 56344 2230 23799 2589227 11143 1565 850 0 0 

Il suffit de prendre les sums des trois premiers nombres et de les diviser avec des sums de quatre premiers nombres entiers

Les 4 premiers chiffres sont les temps utilisateur, agréable, système et inactif

note: Cela donne la moyenne globale. Si vous souhaitez prendre une moyenne spontanée, vous devez prendre deux échantillons et les soustraire les uns des autres avant la division.

Le système de fichiers / proc contient toutes sortes d’informations intéressantes. Regardez man proc pour plus d’informations.

Utilisez simplement top s’il est disponible. Vous pouvez l’utiliser dans un mode non interactif:

 top -n 1 

Si vous voulez quelque chose de spécifique, alors grep cette sortie. Les détails exacts dépendront de la manière dont votre commande supérieure formate sa sortie, mais par exemple:

 top -n 1 | grep 'Load'