D'où vient le chiffre
%st dans top est la part du temps où votre CPU virtuel était exécutable mais pas planifié sur un cœur physique, d'après l'hyperviseur. Ce compteur existe car un invité ne peut pas faire autrement la différence entre un cœur lent et un cœur qu'il n'a jamais reçu.
top -bn1 | head -3
vmstat 1 5
mpstat -P ALL 1 5La valeur brute, pour ceux qui la tracent eux-mêmes, est le huitième champ de la ligne cpu dans /proc/stat, comptée en USER_HZ :
grep -w cpu /proc/statPourquoi elle est à zéro ici
Les cœurs sont alloués une fois. Un vCPU sur votre instance est épinglé à un cœur physique qui n'est dans l'allocation de personne d'autre, sur un hôte non sur-provisionné, donc il n'y a pas de file d'attente. Pas un chiffre bas, pas un solde de crédits qui s'épuise le quatrième jour du mois — rien à voler.
Si le vôtre n'est pas à zéro, c'est un défaut et nous voulons le ticket. Incluez un mpstat -P ALL 5 12 et l'ID de l'instance.
Pourquoi les chiffres des autres ne sont pas à zéro
Les plans burstables sont construits sur le steal time. Plusieurs invités partagent un cœur, chacun détient un solde de crédits, et quand le solde se vide, le planificateur donne le cœur à quelqu'un d'autre. Vendu honnêtement, c'est un produit légitime pour des charges de travail qui ont des temps d'inactivité. Ce n'est pas celui-ci. Nous avons supprimé le niveau bon marché en 2021 et la survente est partie avec.
Que vérifier quand la machine semble lente de toute façon
Le steal est la première chose que tout le monde regarde et rarement la réponse. Par ordre de probabilité :
File d'attente d'exécution
vmstat 1 5Plus de threads exécutables que de cœurs, dans la colonne r, signifie que vous êtes simplement à court de CPU. Aucun réglage n'invente un autre cœur.
Disque
iostat -x 1 5%iowait qui monte alors que le temps utilisateur reste bas pointe vers le stockage, pas le processeur.
Votre propre cgroup
C'est celui qui piège les gens. Un conteneur avec un quota CPU ressemble exactement au steal time depuis l'intérieur du processus et rapporte un steal nul, car la limite est la vôtre plutôt que la nôtre :
cat /sys/fs/cgroup/cpu.statnr_throttled et throttled_usec qui montent signifient que le quota défini par votre propre orchestrateur est le plafond. Augmentez-le ou retirez-le.
Fréquence
Les fréquences boost bougent avec la charge de travail, et un test mono-thread est le moyen honnête de voir où vous vous situez réellement :
apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 runComparez le nombre d'événements par seconde avec une autre instance plutôt qu'avec un chiffre d'un article de blog de 2019.
Colonnes invité et nested
%guest et %gnice ne sont non nuls que si vous exécutez des machines virtuelles à l'intérieur de votre instance. La virtualisation imbriquée est disponible sur les plans EPYC plus grands et sur bare metal ; vérifiez le périphérique avant de concevoir en fonction :
ls -l /dev/kvmLa version courte
Un r élevé avec un temps utilisateur proche de cent pour cent, c'est le CPU. Un %iowait élevé, c'est le disque. cpu.stat qui compte les throttles, c'est votre propre quota. Un steal non nul, c'est nous, et cela ne devrait pas arriver.