Linux / Commande uptime : durée de fonctionnement et charge moyenne
uptime est une commande qui affiche l'heure actuelle, le temps pendant lequel le système fonctionne depuis le dernier démarrage, le nombre d'utilisateurs connectés et la charge moyenne pour les 1, 5 et 15 dernières minutes, le tout sur une seule ligne. Elle est utilisée comme point de départ pour vérifier rapidement quand le serveur a été redémarré ou pour déterminer si la charge est temporaire ou persistante.
uptime
La charge moyenne ne correspond pas au taux d’utilisation du processeur, ou CPU (Central Processing Unit). Elle représente le nombre moyen de tâches qui sont soit prêtes à s'exécuter, soit en attente d’entrées-sorties (E/S) dans un état non interruptible, donc pour une interprétation précise, vous devez prendre en compte le nombre de CPU ainsi que l'état du disque et du réseau.
Comment lire les éléments de sortie de la commande uptime
Le format de sortie typique est le suivant. Les heures et les chiffres réels varient selon le système.
14:32:10 up 12 days, 3:41, 2 users, load average: 0.42, 0.51, 0.48
Le manuel officiel de procps-ng uptime explique que cette ligne unique comprend l'heure actuelle, le temps de fonctionnement, le nombre d'utilisateurs connectés, et la charge moyenne sur 1, 5 et 15 minutes.
| Exemple de sortie | Signification | Précautions d’interprétation |
|---|---|---|
14:32:10 |
Heure actuelle du système | Affecté par le fuseau horaire et les paramètres de synchronisation de l'heure. |
up 12 days, 3:41 |
Temps écoulé depuis le dernier démarrage | Dans les conteneurs, le temps de fonctionnement de l'hôte peut être affiché. |
2 users |
Nombre de sessions de connexion | Décompte fondé sur les sessions enregistrées, et non sur des personnes distinctes. |
0.42, 0.51, 0.48 |
Charge moyenne sur 1, 5 et 15 minutes | Nombre moyen de tâches ; ce n’est pas un pourcentage rapporté au nombre de processeurs logiques. |
Interprétation de chaque élément en détail
Heure actuelle
La première valeur est l'heure actuelle reconnue par le système. Si elle ne correspond pas à l'heure du journal, vérifiez le fuseau horaire et l'état de synchronisation avec timedatectl.
timedatectl status
Temps de fonctionnement du système
Après up, le temps écoulé depuis le dernier démarrage est affiché. S'il est plus court que prévu, vérifiez les journaux système et les historiques de démarrage pour les redémarrages imprévus, les erreurs du noyau, les problèmes d'alimentation ou les tâches administratives.
uptime -p
uptime -s
-p affiche le temps écoulé dans un format lisible, et -s affiche l'heure de démarrage du système. Les options prises en charge peuvent varier en fonction de la version de procps-ng installée sur votre distribution, alors vérifiez avec uptime --help.
Nombre d'utilisateurs connectés
Le nombre d'utilisateurs est calculé en fonction des sessions actuellement connectées. Si le même utilisateur se connecte plusieurs fois via SSH et la console, il peut être compté comme plusieurs sessions. Pour voir qui est connecté, utilisez w ou who.
w
who
Qu'est-ce que la charge moyenne ?
Plages de temps des trois chiffres
Les trois valeurs de la charge moyenne représentent la charge au cours de la dernière minute, des cinq dernières minutes et des quinze dernières minutes, respectivement. Il ne s'agit pas d'une moyenne arithmétique simple mais d'une moyenne mobile exponentiellement pondérée qui donne plus de poids aux états récents, de sorte qu'elle ne montre pas directement le nombre de tâches à un moment précis. Ce calcul est décrit dans le code du noyau Linux consacré à la charge moyenne.
- Si la valeur sur 1 minute est supérieure aux valeurs sur 5 et 15 minutes, cela peut indiquer que la charge récente augmente.
- Si la valeur sur 1 minute est inférieure, cela peut indiquer que la charge auparavant élevée diminue.
- Si les trois valeurs sont toutes également élevées, cela peut indiquer que la charge est soutenue.
Comparez avec le nombre de CPU
La charge moyenne n’est pas divisée par le nombre de processeurs. Comparez-la à la capacité disponible ; nproc donne le nombre d’unités de traitement accessibles au processus courant, qui peut être inférieur au nombre de processeurs logiques installés.
nproc
Par exemple, dans un système avec 4 CPU logiques, une charge de 1,00 a une signification différente d'une charge de 1,00 sur un système avec un seul CPU. Comme règle simple, si la charge est similaire au nombre de CPU logiques, cela peut indiquer que les tâches exécutables utilisent une portion significative de la capacité du CPU, mais cela seul ne peut pas confirmer un goulot d'étranglement.
Pourquoi cela diffère de l'utilisation du CPU
La charge moyenne sous Linux inclut non seulement les tâches en cours d'exécution ou en attente d'exécution sur le CPU, mais aussi les tâches en attente d’E/S dans un état non interruptible. Par conséquent, même si l'utilisation du CPU est faible, la charge moyenne peut augmenter en raison de disques lents ou de stockage réseau.
Si la charge est élevée, vous devez vérifier l'utilisation du CPU, la file d'attente des processus, l’attente d’E/S, la mémoire et le swap ensemble.
top
vmstat 1
iostat -xz 1
free -h
iostat est généralement inclus dans le paquet sysstat et pourrait ne pas être installé.
Options courantes de la commande uptime
Affichage lisible du temps de fonctionnement
uptime --pretty
-p ou --pretty affiche uniquement le temps de fonctionnement sous forme de phrase compréhensible. Ce n'est pas adapté pour une analyse automatique dans des scripts où la phrase peut être affectée par la langue.
Vérifier l'heure de démarrage
uptime --since
-s ou --since affiche l'heure de démarrage du système au format YYYY-MM-DD HH:MM:SS. Comme cette valeur est calculée à partir de l'heure actuelle, vérifiez-la avec les journaux de démarrage sur les systèmes où le réglage de l'heure a été significativement modifié.
Options du format conteneur et brut
La dernière version de procps-ng dispose de l'option --container pour demander le temps de fonctionnement du conteneur et de l'option --raw pour afficher l'heure actuelle et le temps de fonctionnement en secondes.
uptime --container
uptime --raw
Ces options peuvent ne pas être disponibles dans les anciennes distributions de procps-ng. Si le runtime du conteneur ou le noyau ne fournit pas les informations relatives, les valeurs attendues peuvent ne pas apparaître, vous devez donc vérifier la prise en charge dans l'environnement réel.
Ordre des vérifications lorsque la charge moyenne est élevée
Commencez par vérifier les tendances et le nombre de CPU
- Vérifiez si les valeurs sur 1 minute, 5 minutes et 15 minutes de
uptimeaugmentent, diminuent ou restent stables. - Utilisez
nprocpour connaître les unités de traitement accessibles au processus courant, puis vérifiez les restrictions de votre environnement. - Utilisez
topoupspour trouver les processus qui utilisent beaucoup le CPU. - Utilisez
vmstatetiostatpour vérifier la file d'attente d'exécution et l’attente d’E/S. - Utilisez
freepour vérifier la mémoire disponible et l'utilisation du swap.
Ne concluez pas à une panne sur la base d'un seul chiffre.
Il peut être normal que la charge sur 1 minute augmente brièvement en raison de courtes tâches de compression ou de sauvegardes. Par contre, si la valeur sur 15 minutes continue d'augmenter et que les temps de réponse se détériorent, il s'agit probablement d'un goulot d'étranglement persistant. Les seuils ne doivent pas être définis uniquement en fonction du nombre de CPU, mais également en tenant compte du trafic habituel, des types de tâches, des performances du stockage et de la latence du service.
Si une observation régulière est nécessaire, il est préférable de collecter les métriques moyennes de charge, CPU, E/S, mémoire et application ensemble à partir d'un système de surveillance plutôt que de se fier à une sortie uptime unique.
Points à surveiller dans les conteneurs et les machines virtuelles
La durée de fonctionnement d'une machine virtuelle indique généralement le temps de fonctionnement du système d'exploitation invité. Comme les conteneurs partagent le noyau de l'hôte, selon l'outil et l'environnement, le temps de fonctionnement de l'hôte peut s'afficher. Vérifiez ensemble la prise en charge de --container dans le dernier procps-ng, la configuration des espaces de noms du runtime des conteneurs et la source de données du système de surveillance.
De plus, les limites de CPU assignées à un conteneur et les valeurs rapportées par nproc peuvent ne pas toujours correspondre à la capacité attendue par l'administrateur. Vérifiez aussi les ressources CPU demandées et les limites définies dans l’orchestrateur, ainsi que les indicateurs de limitation effective du processeur (throttling). Selon la version de GNU Coreutils, les quotas cgroup v2 peuvent déjà influencer la valeur retournée par nproc. La documentation GNU de nproc détaille cette portée.
Questions fréquemment posées
Une charge moyenne de 1,00 signifie-t-elle une utilisation CPU de 100 % ?
Non. La charge moyenne reflète le nombre de tâches en état exécutable ou en attente E/S non interruptible et n'est pas normalisée par le nombre de CPU. L'utilisation du CPU doit être vérifiée séparément à l'aide d'outils tels que top ou mpstat.
Pourquoi le temps d'activité (uptime) a-t-il soudainement diminué ?
Dans la plupart des cas, le système a été redémarré. Vérifiez s'il s'agissait d'une mise à jour planifiée, ou s'il y a eu des problèmes d'alimentation ou des erreurs du noyau en utilisant journalctl --list-boots, les journaux système et les registres opérationnels. Selon les paramètres de conservation des journaux, les enregistrements de démarrages précédents peuvent ne pas exister.
Pourquoi le nombre d'utilisateurs connectés est-il différent du nombre réel de personnes ?
Si une seule personne ouvre plusieurs sessions SSH ou console, chacune peut être comptée séparément, et il peut y avoir des cas où les enregistrements de connexion apparaissent anormaux. Vérifiez le terminal et l'heure de connexion en utilisant w ou who.
Comment puis-je vérifier en continu le temps de fonctionnement ?
Vous pouvez l'exécuter à intervalles réguliers en utilisant watch.
watch -n 5 uptime
Si vous avez besoin de tendances et d’alertes à long terme, utilisez un système de surveillance au lieu de regarder l’écran de sortie.
Résumé
uptime est la première étape pour vérifier rapidement si le système a redémarré et la tendance de charge. Les trois charges moyennes dans la sortie représentent des intervalles de 1, 5 et 15 minutes, pas l’usage du CPU ou des pourcentages.
Lorsque la charge moyenne est élevée, vérifiez le nombre de CPU logiques, l’usage du CPU, la file d’attente de processus, l’attente d’I/O et la mémoire et le swap disponibles ensemble. L’interprétation des indicateurs de mémoire est expliquée dans le guide de la commande free (en anglais).




