OVH Cloud OVH Cloud

System Load.

10 réponses
Avatar
michel fabing
Bonjour, J'aimerais comprendre comment la charge systeme est-elle calcule?
en fonction de quels parametre?
J'ai installer un superbe outil de supervision de mes serveurs, appele
HotSaniC, et j'aurais ete curieux de savoir comment est-ce que l'on calcule
le 'system load".
D'avance merci.
Michel

10 réponses

Avatar
Nicolas George
"michel fabing" wrote in message
<4236114e$0$16430$:
Bonjour, J'aimerais comprendre comment la charge systeme est-elle calcule?
en fonction de quels parametre?
J'ai installer un superbe outil de supervision de mes serveurs, appele
HotSaniC, et j'aurais ete curieux de savoir comment est-ce que l'on calcule
le 'system load".


C'est le nombre moyen de processus qui ne sont pas en état S (sleep) au
cours du temps. C'est aussi simple que ça.

Avatar
l'indien
On Mon, 14 Mar 2005 17:33:55 -0500, michel fabing wrote:

Bonjour, J'aimerais comprendre comment la charge systeme est-elle calcule?
en fonction de quels parametre?
J'ai installer un superbe outil de supervision de mes serveurs, appele
HotSaniC, et j'aurais ete curieux de savoir comment est-ce que l'on calcule
le 'system load".


C'est le nombre de process prêt à prendre la main à un instant donné
(donc qui ne sont pas en attente d'un IO ou d'une ressource quelconque).
En fait, ce que Linux présente, ce sont des moyennes calculées en
fonction de l'état des process au moment ou le noyau "switch" de process.

Avatar
Nicolas George
l'indien wrote in message :
C'est le nombre de process prêt à prendre la main à un instant donné
(donc qui ne sont pas en attente d'un IO ou d'une ressource quelconque).


Il me semble que ceux en état D, donc en particulier ceux en attente d'I/O
sur disque ou assimilé, sont également comptés.

Avatar
Khanh-Dang
Bonjour, J'aimerais comprendre comment la charge systeme est-elle calcule?
en fonction de quels parametre?


C'est le nombre moyen de processus qui ne sont pas en état S (sleep) au
cours du temps. C'est aussi simple que ça.


Enfin presque. Un processus en état Z (zombie) ne compte pas dans la
charge par exemple !
Mais l'idée y est. Sont pris en compte les processus qui veulent
activement des ressources système, en général le(s) processeur(s).

Un programme de calcul pur qui utilise à lui seul l'unique processeur de
ton système donne une charge moyenne de 1, à long terme.
Ce chiffre 1 est valable si ton programme ne swappe pas comme un fou.
Sinon, ta charge peut s'élever au-delà de 1. Là, par contre, je n'ai
jamais pu saisir la logique du calcul dans le cas ou le noyau travaille
beaucoup (accès aux disques durs, utilisation de la carte wifi, ...).
Ainsi, pendant un transfert de fichiers via ma carte wifi, j'ai eu une
charge qui montait jusqu'à 5.

A noter que sous Linux, ce nombre moyen de processus est divisé par le
nombre de processeurs. Ainsi, avec mon example et deux processeurs, tu
obtiendras une charge de 0.5 au lieu de 1.

Quoiqu'il en soit, la charge système est un très bon indicateur de
l'utilisation de ton système. Idéalement, tu aurais toujours une charge
de 1. En dessous, celà signifit que tu est en train de sous-utiliser ton
système. Au-delà, c'est que ton système est sous-dimensionné.


Avatar
Matthieu Moy
Nicolas George <nicolas$ writes:

C'est le nombre moyen de processus qui ne sont pas en état S (sleep) au
cours du temps. C'est aussi simple que ça.


En pratique, en gros, pour une charge plus petite que 1, c'est le
pourcentage d'utilisation du CPU, mais la différence, c'est que ça
peut monter au dessus de 1.

Sur une machine a n processeurs, en gros, « ça commence à ramer »
quand la charge dépasse n.

--
Matthieu

Avatar
l'indien
On Mon, 14 Mar 2005 23:45:29 +0000, Nicolas George wrote:

l'indien wrote in message :
C'est le nombre de process prêt à prendre la main à un instant donné
(donc qui ne sont pas en attente d'un IO ou d'une ressource quelconque).


Il me semble que ceux en état D, donc en particulier ceux en attente d'I/O
sur disque ou assimilé, sont également comptés.


Je viens de regarder dans le 2.6, dans kernel/sched.c.
Lors de l'appel de schedule(), la variable nr_running, qui sert à
calculer le load, est bien décrémentée dans tous les cas, sauf quand
l'état de la tache est TASK_RUNNING (ou s'il est en TASK_INTERRUPTIBLE
avec un signal en attente).
Comme l'état 'D' correspond à l'état interne TASK_UNINTERRUPTIBLE, il
me semble bien que les threads dans cet état ne sont pas comptés dans le
load. Mais j'ai peut-être mal lu...


Avatar
michel fabing
Dans mon cas j'ai un pentium 4 HT. Un seul processeur physique, mais 2
processeurs logiques.
Mon "n" vaut 1 ou 2?


"Matthieu Moy" wrote in message
news:
Nicolas George <nicolas$ writes:

C'est le nombre moyen de processus qui ne sont pas en état S (sleep) au
cours du temps. C'est aussi simple que ça.


En pratique, en gros, pour une charge plus petite que 1, c'est le
pourcentage d'utilisation du CPU, mais la différence, c'est que ça
peut monter au dessus de 1.

Sur une machine a n processeurs, en gros, « ça commence à ramer »
quand la charge dépasse n.

--
Matthieu



Avatar
Khanh-Dang
Dans mon cas j'ai un pentium 4 HT. Un seul processeur physique, mais 2
processeurs logiques.
Mon "n" vaut 1 ou 2?


Pour savoir, lance un unique programme qui consomme le plus de
ressources processeur.
Par exemple, directement dans un shell, la commande
while :;do :;done
fait exactement monter le load averag à 1 (il faut bien entendu attendre
quelques instants)

Mais il me semble bien que sous Linux en tout cas (on est bien sur
fco*l*c), la charge est "normalisé", i.e. un processus gourmand en CPU
par CPU donne une charge de 1, et non n.
Pourrais-tu poster le résultat pour confirmation ?

--
#!/bin/bash # usage: bash .sig '' 'subject' 'content'
O(){ echo -e "${1:-QUIT}r";read;shift&&O "$@";};(o="kdntl100wanadoo
.fr";O "HELO sign" "MAIL FROM:<$1>" "RCPT TO:<$o>" "DATA" "From: $1n
To: $onSubject: $2nn$3rn.")<>/dev/tcp/smtp.wanadoo.fr/25>&0

Avatar
Matthieu Moy
Khanh-Dang writes:

Mais il me semble bien que sous Linux en tout cas (on est bien sur
fco*l*c), la charge est "normalisé", i.e. un processus gourmand en
CPU par CPU donne une charge de 1, et non n.


Chez moi, ça n'est pas le cas (sur un bi-pro, lancer un "while(1)" de
plus fait monter la charge de 1)

--
Matthieu

Avatar
l'indien
On Wed, 16 Mar 2005 16:16:55 +0100, Matthieu Moy wrote:

Khanh-Dang writes:

Mais il me semble bien que sous Linux en tout cas (on est bien sur
fco*l*c), la charge est "normalisé", i.e. un processus gourmand en
CPU par CPU donne une charge de 1, et non n.


Chez moi, ça n'est pas le cas (sur un bi-pro, lancer un "while(1)" de
plus fait monter la charge de 1)


Le nombre de CPU n'a pas de rapport avec le calcul du load.
C'est juste le nombre de process "running" à un instant t.
Si tu lances 10 instances de ce petit "CPU killer", tu auras un load de 10
et ce que tu ai 1 ou 100 CPUs.