Maison  >  Article  >  Opération et maintenance  >  Explication détaillée du problème de charge moyenne de Linux

Explication détaillée du problème de charge moyenne de Linux

不言
不言avant
2019-03-12 17:24:102801parcourir

Le contenu de cet article est une explication détaillée du problème de charge moyenne de Linux. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Dans une interview, l'intervieweur a posé une question. L'utilisation du processeur n'est pas élevée, mais la charge (charge moyenne) est très élevée. Comment trouvez-vous le problème ?

Je n'ai pas compris la signification de Load à l'époque. L'intervieweur a expliqué que cet indicateur reflète davantage de processus dans un état ininterrompu. Sur la base de mon expérience passée en matière de développement back-end, j'ai répondu qu'il pouvait y avoir davantage de blocages d'E/S dans le système, ce qui se produit principalement lors de problèmes d'E/S réseau. Utilisez la commande netstat -tnp pour voir s'il y a beaucoup de statut time_wait dans la connexion TCP. ..

Je sais. Ma réponse était très unilatérale, alors j'ai révisé et pris des notes par la suite.

Qu'est-ce que la moyenne de charge ?

Ceux qui connaissent Linux savent que vous pouvez utiliser la commande top uptime pour afficher l'indicateur de charge moyenne.

Utiliser la disponibilité humaine pour afficher la charge moyenne Explication :

La charge moyenne du système est le nombre moyen de processus qui sont dans un état exécutable ou ininterrompu. Un processus dans un état exécutable utilise le. CPU ou en attente d'utilisation du CPU. Un processus dans un état ininterrompu attend un accès aux E/S, par exemple en attente d'un disque. Les moyennes sont prises sur les trois intervalles de temps. Les moyennes de charge ne sont pas normalisées pour le nombre de CPU dans un système. , donc une charge moyenne de 1 signifie qu'un système à un seul processeur est chargé tout le temps tandis que sur un système à 4 processeurs, cela signifie qu'il était inactif 75 % du temps.

Comprenez le point clé, la charge moyenne fait référence à l'unité Au cours d'une certaine période de temps, le nombre moyen de processus dans le système qui sont dans l'état exécutable et dans l'état ininterruptible est appelé nombre moyen de processus actifs. Il est à noter que cela n'est pas directement lié à l'utilisation du processeur.

Utilisez la commande ps aux pour afficher l'état du processus, comme indiqué dans cet article :

Statut R, statut exécutable ( Running / Runnable), l'état D du processus qui utilise le CPU ou attend le CPU, l'état sans interruption (Uninterrupttitle Sleep, également connu sous le nom de Disk Sleep), le processus qui est dans le processus critique de l'état du noyau, et est ininterrompu.

Pourquoi l'état D ne peut-il pas être interrompu ? Par exemple, le système appelle la réponse d'E/S du périphérique matériel afin d'assurer la cohérence des données, avant que le périphérique disque ne renvoie les données. il ne peut pas interrompre d'autres processus ou les interruptions sont interrompues, il est facile de provoquer une incohérence entre les données du disque et les données du processus. Par conséquent, l’état ininterruptible (D) est un mécanisme de protection du système pour les processus et les périphériques matériels.

Le nombre moyen de processus actifs, à proprement parler, c'est la moyenne décroissante exponentielle du nombre de processus actifs (le taux de déclin d'une certaine quantité est proportionnel à sa valeur). Habituellement, il peut être compris comme le nombre de processus actifs par unité de temps.

Utilisation du processeur et charge équilibrée

Du point de vue du processeur, la charge moyenne reflète uniquement le nombre de processus occupant le processeur par unité de temps, et l'utilisation du processeur n'est pas directement liée au nombre de processus. Nous pouvons utiliser la commande top vmstat pour vérifier l'utilisation du CPU. Il existe les indicateurs suivants :

%us : indique l'utilisation du processeur du programme de l'espace utilisateur (non planifié par nice) %sy : indique l'utilisation du processeur. de l'espace système, principalement des programmes du noyau. %ni : indique l'utilisation du processeur par les programmes dans l'espace utilisateur et planifiée via nice. %id : processeur inactif %wa : le temps pendant lequel le processeur attend io lors de l'exécution %hi : le nombre d'interruptions matérielles traitées par le processeur %si : le nombre d'interruptions logicielles traitées par le processeur %st : processeur volé par le virtuel machine

Comment mesurer une charge moyenne raisonnable

De manière générale, si la charge moyenne est inférieure au nombre de processeurs, les performances de la machine répondent aux exigences du service. Peu importe si elle le dépasse. le nombre. La charge moyenne ne représente pas directement l'utilisation du processeur, et cela peut être dû à davantage de blocages d'E/S. Lorsque la charge moyenne est supérieure à 70 % du nombre de processeurs, le processus peut répondre lentement, affectant ainsi le fonctionnement normal du service.

Du point de vue des changements historiques

De manière générale, la durée de disponibilité fournit des indicateurs de charge moyenne à trois moments, à savoir : 1 minute, 5 minutes et 15 minutes. Cela reflète la récente tendance au changement d’état du système. Dans l'environnement de production réel, nous devons établir des enregistrements de surveillance à long terme. S'il y a des changements numériques anormaux, par exemple si la charge moyenne est deux fois supérieure à celle du processeur, le problème doit être analysé et étudié.

Analyse complète des différences entre les deux indicateurs

à partir des deux indicateurs de charge équilibrée et d'utilisation du processeur, les situations possibles suivantes sont combinées :

La charge moyenne est élevée, CPU Si l'utilisation est élevée, soit des processus (threads) gourmands en CPU sont en cours d'exécution, soit un grand nombre de processus (threads) attendent que le CPU soit planifié. La charge moyenne est élevée, et si l'utilisation du CPU est faible, elle est gourmande en E/S. les processus sont en cours d'exécution. Les deux sont relativement faibles et la charge moyenne normale est faible. Utilisation élevée du processeur, cela n'existe pas

Cas et outils de simulation

Comment pouvons-nous analyser des cas avec différentes combinaisons de processus. deux indicateurs de charge équilibrée et d'utilisation du processeur, et trouver la source des changements d'indicateur ?

L'environnement suivant est Linux Arch 4.19 / 4 CPU / 8G Memory

Liste d'outils

outil de test de stress du système de stress

package d'outils d'analyse des performances sysstat :

Outil d'analyse des performances du processeur multicœur mpstat, mp signifie outil d'analyse des performances des processus pidstat multi-processeurs (multi-processeurs), pid signifie ID de processus. Il est utilisé pour visualiser les indicateurs de CPU, de mémoire, d'E/S et de changement de contexte du processus

Scénarios de simulation

L'utilisation du stress peut simuler les scénarios suivants

CPU gourmand processus

# 模拟一个进程, 对 cpu 使用率 100%,限时 600s
stress --cpu 1 --timeout 600

Processus gourmands en IO

option -i de stress, génère N travailleurs tournant sur sync()

# 模拟一个进程不停的执行 sync
stress -i 1 --timeout 600
Scénarios pour un grand nombre de processus
# 模拟16个进程, 对 cpu 使用率 100%,限时 600s
stress --cpu 16 --timeout 600

Indicateurs d'outils

mpstat -P ALL 5 surveille tous les processeurs et génère un ensemble de données toutes les 5 secondes. Faites attention aux indicateurs d'utilisation %usr et %iowait IO block time From. ceci, vous pouvez juger qu'il est gourmand en CPU. Est-ce toujours gourmand en E/S pidstat -u 5 1. Dans l'intervalle statistique de 5 secondes, les données des processus qui ont utilisé le CPU Faites attention aux indicateurs %usr. taux d'utilisation et % du temps d'attente pour utiliser le CPU. À partir de là, vous pouvez juger s'il y a trop de processus (threads)

.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer