Comment calculer l'utilisation spécifique du processeur sous Linux

coldplay.xixi
Libérer: 2020-08-22 11:26:39
original
3552 Les gens l'ont consulté

La méthode de calcul de l'utilisation spécifique du processeur sous Linux : obtenez d'abord la valeur globale du système au temps t1 à partir de [/proc/stat] puis obtenez la valeur totale du système au temps t2 à partir de [/proc] ; /stat] Enfin, calculez l'utilisation totale du processeur du système entre t2 et t1.

Comment calculer l'utilisation spécifique du processeur sous Linux

[Recommandations d'apprentissage associées : tutoriel vidéo Linux]

Comment calculer l'utilisation spécifique du processeur sous Linux :

1. Connaissances de base

Vous pouvez afficher chaque processeur dans /proc/stat L'utilisation. est comme indiqué ci-dessous :

Comment calculer lutilisation spécifique du processeur sous Linux

Les dix chiffres après cpu (0/1/2/…) ont les significations suivantes :

/proc/stat
kernel/system statistics.  Varies with architecture.  
Common entries include:
     user nice system idle iowait  irq  softirq steal guest guest_nice
cpu  4705 356  584    3699   23    23     0       0     0        0
cpu0 1393280 32966 572056 13343292 6130 0 17875 0 23933 0
   The amount of time, measured in units of USER_HZ
   (1/100ths of a second on most architectures, use
   sysconf(_SC_CLK_TCK) to obtain the right value), that
   the system ("cpu" line) or the specific CPU ("cpuN"
   line) spent in various states:
   user   (1) Time spent in user mode.
   nice   (2) Time spent in user mode with low priority
          (nice).
   system (3) Time spent in system mode.
   idle   (4) Time spent in the idle task.  This value
          should be USER_HZ times the second entry in the
          /proc/uptime pseudo-file.
   iowait (since Linux 2.5.41)
          (5) Time waiting for I/O to complete.  This
          value is not reliable, for the following rea‐
          sons:
          1. The CPU will not wait for I/O to complete;
             iowait is the time that a task is waiting for
             I/O to complete.  When a CPU goes into idle
             state for outstanding task I/O, another task
             will be scheduled on this CPU.
          2. On a multi-core CPU, the task waiting for I/O
             to complete is not running on any CPU, so the
             iowait of each CPU is difficult to calculate.
          3. The value in this field may decrease in cer‐
             tain conditions.
   irq (since Linux 2.6.0-test4)
          (6) Time servicing interrupts.
   softirq (since Linux 2.6.0-test4)
          (7) Time servicing softirqs.
   steal (since Linux 2.6.11)
          (8) Stolen time, which is the time spent in
          other operating systems when running in a virtu‐
          alized environment
   guest (since Linux 2.6.24)
          (9) Time spent running a virtual CPU for guest
          operating systems under the control of the Linux
          kernel.
   guest_nice (since Linux 2.6.33)
          (10) Time spent running a niced guest (virtual
          CPU for guest operating systems under the con‐
          trol of the Linux kernel).
Copier après la connexion

2 . Calculez l'utilisation spécifique du processeur

Avec les connaissances de base ci-dessus, nous pouvons ensuite calculer l'utilisation spécifique du processeur. La méthode de calcul spécifique est la suivante :

Total CPU time since boot = user+nice+system+idle+iowait+irq+softirq+steal
Total CPU Idle time since boot = idle + iowait
Total CPU usage time since boot = Total CPU time since boot - Total CPU Idle time since boot
Total CPU percentage = Total CPU usage time since boot/Total CPU time since boot * 100%
Copier après la connexion

Avec la formule de calcul ci-dessus, il n'est pas difficile de calculer une certaine utilisation du processeur ou l'utilisation totale du processeur du système.

Exemple : Calculez l'utilisation globale du processeur du système

Obtenez d'abord l'utilisateur global, nice, système, inactif, iowait, irq, softirq, voler, invité du système à l'heure t1 à partir de /proc/stat , la valeur de guest_nice et le temps total du processeur depuis le démarrage (enregistré comme total1) et le temps d'inactivité total du processeur depuis le démarrage (enregistré comme inactif1) sont obtenus.

Deuxièmement, obtenez le temps total du processeur depuis le démarrage (enregistré comme total2) et le temps d'inactivité total du processeur depuis le démarrage (enregistré comme inactif2) du système au temps t2 à partir de /proc/stat. (La méthode est la même que l'étape précédente)

Enfin, calculez l'utilisation totale du processeur du système entre t2 et t1. C'est-à-dire :

CPU percentage between t1 and t2 = ((total2-total1)-(idle2-idle1))/(total2-total1)* 100%
Copier après la connexion

Parmi eux, ((total2-total1)-(idle2-idle1)) est en fait le temps pendant lequel le processeur du système est occupé entre t1 et t2 (temps total - temps d'inactivité).

Ce qui suit est un script qui calcule l'utilisation du processeur pendant une période donnée :

#!/bin/bash
# by Paul Colby (http://colby.id.au), no rights reserved ;)
PREV_TOTAL=0
PREV_IDLE=0
while true; do
  # Get the total CPU statistics, discarding the 'cpu ' prefix.
  CPU=(`sed -n 's/^cpu\s//p' /proc/stat`)
  IDLE=${CPU[3]} # Just the idle CPU time.
  # Calculate the total CPU time.
  TOTAL=0
  for VALUE in "${CPU[@]}"; do
    let "TOTAL=$TOTAL+$VALUE"
  done
  # Calculate the CPU usage since we last checked.
  let "DIFF_IDLE=$IDLE-$PREV_IDLE"
  let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
  let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
  echo -en "\rCPU: $DIFF_USAGE%  \b\b"
  # Remember the total and idle CPU times for the next check.
  PREV_TOTAL="$TOTAL"
  PREV_IDLE="$IDLE"
  # Wait before checking again.
  sleep 1
done
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!