Pas surement, mais surtout 1.00*n_cpu
.
La charge signifie ce qui suit: s'il y a plusieurs processus sur un système à processeur unique, ils fonctionnent apparemment en parallèle. Mais ce n'est pas vrai. Ce qui se passe pratiquement: le noyau donne 1 / 100e de seconde à un processus, puis arrête son exécution avec une interruption. Et donne le 1 / 100e de seconde suivant à un autre processus.
Pratiquement la question, "quel processus devrait obtenir notre prochain intervalle de 1 / 100ème de seconde?", Sera décidée par une heuristique complexe. Il est nommé comme tâche la planification .
Bien entendu, les processus qui sont bloqués, par exemple ils attendent leurs données ce qu'ils lisent sur le disque, sont exemptés de cette planification des tâches.
Quelle charge indique: combien de processus attendent actuellement leur prochaine tranche de 1 / 100e de seconde. Bien sûr, c'est une valeur moyenne. En effet, vous pouvez voir plusieurs nombres dans un cat /proc/loadavg
.
La situation dans un système multi-CPU est un peu plus complexe. Il existe plusieurs processeurs, dont les délais peuvent être attribués à plusieurs processus. Cela rend la planification des tâches un peu - mais pas trop - plus complexe. Mais la situation est la même.
Le noyau est intelligent, il essaie de partager les ressources du système pour une efficacité optimale, et il est proche de cela (il y a des choses d'optimisation mineures, par exemple, il vaut mieux qu'un processus soit exécuté le plus longtemps possible sur le même cpu en raison de considérations de mise en cache, mais cela n'a pas d'importance ici). En effet, si nous avons la charge 8, cela signifie: il y a en fait 8 processus en attente de leur prochaine tranche de temps. Si nous avons 8 cpus, nous pouvons donner ces tranches de temps aux cpus un à un, et ainsi notre système sera utilisé de manière optimale.
Si vous voyez un top
, vous pouvez voir que le nombre de processus en cours d'exécution est étonnamment bas: ce sont les processus marqués par R
là. Même sur un système pas vraiment hardcore, il est souvent inférieur à 5. Cela est dû en partie au fait que les processus attendant leurs données des disques ou du réseau sont également suspendus (marqués d'un S
en haut). La charge affiche uniquement l'utilisation du processeur.
Il existe également des outils pour mesurer la charge du disque, à mon humble avis, ils devraient être au moins importants en tant que surveillance de l'utilisation du processeur, mais d'une certaine manière, ce n'est pas si bien connu ici dans notre monde sysadmin professionnel.
Les outils Windows divisent souvent la charge avec le nombre réel de processeurs. Cela amène certains administrateurs système Windows professionnels à utiliser la charge système dans ce sens divisé par processeur. Ils n'ont pas raison et seront probablement plus heureux après que vous leur ayez expliqué cela.
Les processeurs multicœurs sont pratiquement plusieurs processeurs sur la même puce de silicium. Il n'y a pas de différence.
Dans le cas de CPU hyperthreadés, il y a un effet secondaire intéressant: le chargement d'un processeur ralentit ses paires hyperthreadées. Mais cela se produit sur une couche plus profonde que gère la planification normale des tâches, bien qu'elle puisse (et devrait) influencer les décisions de déplacement du processus du planificateur.
Mais de notre point de vue actuel - ce qui détermine la charge du système - cela n'a pas autant d'importance.