View a markdown version of this page

Contrôle de l'état du processeur pour votre instance Amazon EC2 AL2 - Amazon Linux 2

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Contrôle de l'état du processeur pour votre instance Amazon EC2 AL2

C-states contrôler les niveaux de sommeil qu'un cœur peut atteindre lorsqu'il est inactif. C-states sont numérotés en commençant par C0 (l'état le moins profond où le cœur est totalement éveillé et exécute des instructions) et passent à C6 (l'état d'inactivité le plus profond où un cœur est hors tension).

P-states contrôler les performances souhaitées (en fréquence du processeur) à partir d'un cœur. P-states sont numérotés à partir de P0 (le paramètre de performance le plus élevé où le cœur est autorisé à utiliser la technologie Intel Turbo Boost pour augmenter la fréquence si possible), et ils vont de P1 (le paramètre P-state qui demande la fréquence de référence maximale) à P15 (la fréquence la plus basse possible).

Vous souhaiterez peut-être modifier les P-state paramètres C-state OR pour améliorer la cohérence des performances du processeur, réduire la latence ou adapter votre instance à une charge de travail spécifique. La valeur par défaut C-state et P-state les paramètres fournissent des performances maximales, ce qui est optimal pour la plupart des charges de travail. Toutefois, si votre application bénéficierait d'une latence réduite au prix de fréquences monocœur ou double cœur plus élevées, ou de performances constantes à des fréquences plus basses par opposition à des fréquences Turbo Boost en rafale, envisagez d'expérimenter avec les P-state paramètres C-state OR disponibles pour ces instances.

Pour plus d'informations sur les types d'instances Amazon EC2 qui permettent au système d'exploitation de contrôler le processeur C-states P-states, consultez la section Contrôle de l'état du processeur pour votre instance Amazon EC2 dans le guide de l'utilisateur Amazon EC2.

Les sections suivantes décrivent les différentes configurations d’états du processeur et les façons de surveiller les effets de votre configuration. Ces procédures ont été écrites pour Amazon Linux et s'appliquent à celui-ci ; toutefois, elles peuvent également fonctionner pour d'autres distributions Linux dotées d'une version de noyau Linux 3.9 ou ultérieure.

Note

Les exemples présentés sur cette page utilisent les éléments suivants :

  • turbostatUtilitaire permettant d'afficher la fréquence et les C-state informations du processeur. L’utilitaire turbostat est disponible sur Amazon Linux par défaut.

  • La commande stress pour simuler une charge de travail. Pour installer stress, commencez par activer le référentiel EPEL en exécutant sudo amazon-linux-extras install epel, puis exécutez sudo yum install -y stress.

Si la sortie n'affiche pas les C-state informations, incluez l'--debugoption dans la commande (sudo turbostat --debug stress <options>).

La meilleure performance avec la fréquence Turbo Boost maximale

Il s’agit de la configuration de contrôle d’état du processeur par défaut pour Amazon Linux AMI et il est recommandé pour la plupart des charges de travail. Cette configuration fournit les meilleures performances avec des variations plus faibles. Le fait de permettre aux cœurs inactifs d’entrer dans des états de veille plus profonds offre le dégagement thermique nécessaire aux processeurs simple ou double cœur d’atteindre leur potentiel Turbo Boost maximal.

L’exemple suivant montre une instance c4.8xlarge avec deux cœurs qui fonctionnent activement et atteignent la fréquence Turbo Boost maximale de leur processeur.

[ec2-user ~]$ sudo turbostat stress -c 2 -t 10 stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [30680] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.54 3.44 2.90 0 9.18 0.00 85.28 0.00 0.00 0.00 0.00 0.00 94.04 32.70 54.18 0.00 0 0 0 0.12 3.26 2.90 0 3.61 0.00 96.27 0.00 0.00 0.00 0.00 0.00 48.12 18.88 26.02 0.00 0 0 18 0.12 3.26 2.90 0 3.61 0 1 1 0.12 3.26 2.90 0 4.11 0.00 95.77 0.00 0 1 19 0.13 3.27 2.90 0 4.11 0 2 2 0.13 3.28 2.90 0 4.45 0.00 95.42 0.00 0 2 20 0.11 3.27 2.90 0 4.47 0 3 3 0.05 3.42 2.90 0 99.91 0.00 0.05 0.00 0 3 21 97.84 3.45 2.90 0 2.11 ... 1 1 10 0.06 3.33 2.90 0 99.88 0.01 0.06 0.00 1 1 28 97.61 3.44 2.90 0 2.32 ... 10.002556 sec

Dans cet exemple, vCPU 21 et 28 fonctionnent à leur fréquence Turbo Boost maximale, car les autres cœurs sont entrés dans l’état de veille C6 pour économiser de l’énergie et offrir une marge de puissance et un dégagement thermique pour les cœurs en fonctionnement. vCPU 3 et 10 (chacun partageant un cœur de processeur avec vCPU 21 et 28) possèdent l’état C1 et attendent des instructions.

Dans l’exemple suivant, les 18 cœurs fonctionnent activement. Il n’existe donc aucune marge pour la fréquence Turbo Boost maximale, mais ils sont tous exécutés à la vitesse « Turbo Boost » de 3.2 GHz lorsque tous les cœurs sont utilisés.

[ec2-user ~]$ sudo turbostat stress -c 36 -t 10 stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd stress: info: [30685] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 99.27 3.20 2.90 0 0.26 0.00 0.47 0.00 0.00 0.00 0.00 0.00 228.59 31.33 199.26 0.00 0 0 0 99.08 3.20 2.90 0 0.27 0.01 0.64 0.00 0.00 0.00 0.00 0.00 114.69 18.55 99.32 0.00 0 0 18 98.74 3.20 2.90 0 0.62 0 1 1 99.14 3.20 2.90 0 0.09 0.00 0.76 0.00 0 1 19 98.75 3.20 2.90 0 0.49 0 2 2 99.07 3.20 2.90 0 0.10 0.02 0.81 0.00 0 2 20 98.73 3.20 2.90 0 0.44 0 3 3 99.02 3.20 2.90 0 0.24 0.00 0.74 0.00 0 3 21 99.13 3.20 2.90 0 0.13 0 4 4 99.26 3.20 2.90 0 0.09 0.00 0.65 0.00 0 4 22 98.68 3.20 2.90 0 0.67 0 5 5 99.19 3.20 2.90 0 0.08 0.00 0.73 0.00 0 5 23 98.58 3.20 2.90 0 0.69 0 6 6 99.01 3.20 2.90 0 0.11 0.00 0.89 0.00 0 6 24 98.72 3.20 2.90 0 0.39 ...

Hautes performances et faible latence grâce à une limitation plus profonde C-states

C-states contrôler le niveau de sommeil dans lequel un cœur peut entrer lorsqu'il est inactif. Vous souhaiterez peut-être régler votre système C-states en fonction de la latence par rapport aux performances. La mise en veille de cœurs prend du temps. Même si un cœur en veille donne plus de marge pour qu’un autre cœur fonctionne à une fréquence plus élevée, ce cœur en veille prend du temps pour se remettre en route et fonctionner. Par exemple, si un cœur qui est assigné à la gestion d’interruptions de paquets est en veille, il se peut que la prise en charge de cette interruption soit retardée. Vous pouvez configurer le système pour ne pas utiliser Deeper C-states, ce qui réduit la latence de réaction du processeur, mais cela réduit également la marge de manœuvre disponible pour les autres cœurs pour Turbo Boost.

Un scénario commun pour la désactivation d’états de veille plus profonds est une application de la base de données Redis qui stocke la base de données dans la mémoire système pour un temps de réponse aux requêtes le plus rapide possible.

Pour limiter les états de sommeil plus profonds sur AL2
  1. Ouvrez le fichier /etc/default/grub avec l’éditeur de votre choix.

    [ec2-user ~]$ sudo vim /etc/default/grub
  2. Modifiez la GRUB_CMDLINE_LINUX_DEFAULT ligne et ajoutez les processor.max_cstate=1 options intel_idle.max_cstate=1 et à définir C1 comme étant la plus profonde C-state pour les cœurs inactifs.

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0

    L'intel_idle.max_cstate=1option configure la C-state limite pour les Intel-based instances, et l'processor.max_cstate=1option configure la C-state limite pour AMD-based les instances. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

  3. Enregistrez le fichier et quittez votre éditeur.

  4. Exécutez la commande suivante pour recréer la configuration du démarrage.

    [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Redémarrez votre instance pour activer la nouvelle option noyau.

    [ec2-user ~]$ sudo reboot
Pour limiter les états de veille plus profonds sur Amazon Linux AMI
  1. Ouvrez le fichier /boot/grub/grub.conf avec l'éditeur de votre choix.

    [ec2-user ~]$ sudo vim /boot/grub/grub.conf
  2. Modifiez la kernel ligne de la première entrée et ajoutez les processor.max_cstate=1 options intel_idle.max_cstate=1 et à définir C1 comme étant la plus profonde C-state pour les cœurs inactifs.

    # created by imagebuilder default=0 timeout=1 hiddenmenu title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64) root (hd0,0) kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1 initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img

    L'intel_idle.max_cstate=1option configure la C-state limite pour les Intel-based instances, et l'processor.max_cstate=1option configure la C-state limite pour AMD-based les instances. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

  3. Enregistrez le fichier et quittez votre éditeur.

  4. Redémarrez votre instance pour activer la nouvelle option noyau.

    [ec2-user ~]$ sudo reboot

L’exemple suivant montre une instance c4.8xlarge avec deux cœurs qui fonctionnent activement à la fréquence « Turbo Boost » lorsque tous les cœurs sont utilisés.

[ec2-user ~]$ sudo turbostat stress -c 2 -t 10 stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [5322] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.56 3.20 2.90 0 94.44 0.00 0.00 0.00 0.00 0.00 0.00 0.00 131.90 31.11 199.47 0.00 0 0 0 0.03 2.08 2.90 0 99.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 67.23 17.11 99.76 0.00 0 0 18 0.01 1.93 2.90 0 99.99 0 1 1 0.02 1.96 2.90 0 99.98 0.00 0.00 0.00 0 1 19 99.70 3.20 2.90 0 0.30 ... 1 1 10 0.02 1.97 2.90 0 99.98 0.00 0.00 0.00 1 1 28 99.67 3.20 2.90 0 0.33 1 2 11 0.04 2.63 2.90 0 99.96 0.00 0.00 0.00 1 2 29 0.02 2.11 2.90 0 99.98 ...

Dans cet exemple, les cœurs des vCPU 19 et 28 fonctionnent à 3,2 GHz, tandis que les autres cœurs sont dans le C1 C-state, en attente d'instructions. Bien que les cœurs actifs n'atteignent pas leur fréquence Turbo Boost maximale, les cœurs inactifs répondront beaucoup plus rapidement aux nouvelles demandes que dans les cœurs plus profonds C6 C-state.

Performances de base avec les variations les plus faibles

Vous pouvez réduire la variabilité de la fréquence du processeur avec P-states. P-states contrôler les performances souhaitées (en fréquence du processeur) à partir d'un cœur. La plupart des charges de travail fonctionnent mieux avec l’état P0 ce qui demande une fréquence Turbo Boost. Cependant, il se peut que vous souhaitiez adapter votre système pour obtenir une performance cohérente plus que transmise en paquets ce qui peut se produire lorsque les fréquences Turbo Boost sont activées.

Les charges de travail Intel Advanced Vector Extensions (AVX ou AVX2) peuvent fonctionner convenablement à des fréquences plus basses et les instructions pour AVX peuvent utiliser plus de puissance. L’exécution du processeur à une fréquence plus basse en désactivant la fréquence Turbo Boost peut réduire la quantité d’énergie utilisée et conserver la cohérence de la vitesse. Pour obtenir plus d’informations sur l’optimisation de la configuration et la charge de travail de votre instance pour AVX, consultez le site Web d’Intel.

Contrôle des pilotes inactifs du processeur P-state. Les nouvelles générations de CPU nécessitent des pilotes inactifs du processeur mis à jour qui correspondent au niveau du noyau, comme suit :

  • Versions 6.1 et supérieures du noyau Linux : compatible avec Intel Granite Rapids (par exemple, R8i)

  • Versions du noyau Linux 5.10 et supérieures : compatible avec AMD Milan (par exemple, m6A)

  • Versions 5.6 et supérieures du noyau Linux : compatible avec Intel Icelake (par exemple, M6i)

Pour détecter si le noyau d’un système en cours d’exécution reconnaît le CPU, exécutez la commande suivante.

if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi

Si la sortie de cette commande indique un manque de prise en charge, nous vous recommandons de mettre à niveau le noyau.

Cette section explique comment limiter les périodes de veille prolongée et désactiver Turbo Boost (en demandant le P1 P-state) afin de garantir une faible latence et une variabilité de vitesse du processeur minimale pour ces types de charges de travail.

Pour limiter les états de sommeil plus profonds et désactiver Turbo Boost sur AL2
  1. Ouvrez le fichier /etc/default/grub avec l’éditeur de votre choix.

    [ec2-user ~]$ sudo vim /etc/default/grub
  2. Modifiez la GRUB_CMDLINE_LINUX_DEFAULT ligne et ajoutez les processor.max_cstate=1 options intel_idle.max_cstate=1 et à définir C1 comme étant la plus profonde C-state pour les cœurs inactifs.

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0

    L'intel_idle.max_cstate=1option configure la C-state limite pour les Intel-based instances, et l'processor.max_cstate=1option configure la C-state limite pour AMD-based les instances. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

  3. Enregistrez le fichier et quittez votre éditeur.

  4. Exécutez la commande suivante pour recréer la configuration du démarrage.

    [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Redémarrez votre instance pour activer la nouvelle option noyau.

    [ec2-user ~]$ sudo reboot
  6. Lorsque vous avez besoin de la faible variabilité de la vitesse du P1 P-state processeur, exécutez la commande suivante pour désactiver Turbo Boost.

    [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
  7. Lorsque votre charge de travail est terminée, vous pouvez réactiver la fréquence Turbo Boost avec la commande suivante.

    [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
Pour limiter les états de veille plus profonds et désactiver la fréquence Turbo Boost sur Amazon Linux AMI
  1. Ouvrez le fichier /boot/grub/grub.conf avec l’éditeur de votre choix.

    [ec2-user ~]$ sudo vim /boot/grub/grub.conf
  2. Modifiez la kernel ligne de la première entrée et ajoutez les processor.max_cstate=1 options intel_idle.max_cstate=1 et à définir C1 comme étant la plus profonde C-state pour les cœurs inactifs.

    # created by imagebuilder default=0 timeout=1 hiddenmenu title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64) root (hd0,0) kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1 initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img

    L'intel_idle.max_cstate=1option configure la C-state limite pour les Intel-based instances, et l'processor.max_cstate=1option configure la C-state limite pour AMD-based les instances. Il est possible d’ajouter les deux options à votre configuration en toute sécurité. Cela permet à une configuration unique de définir le comportement souhaité sur Intel et AMD.

  3. Enregistrez le fichier et quittez votre éditeur.

  4. Redémarrez votre instance pour activer la nouvelle option noyau.

    [ec2-user ~]$ sudo reboot
  5. Lorsque vous avez besoin de la faible variabilité de la vitesse du P1 P-state processeur, exécutez la commande suivante pour désactiver Turbo Boost.

    [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
  6. Lorsque votre charge de travail est terminée, vous pouvez réactiver la fréquence Turbo Boost avec la commande suivante.

    [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"

L’exemple suivant montre une instance c4.8xlarge avec deux vCPU qui fonctionnent activement à la fréquence de base avec aucune fréquence Turbo Boost cœur.

[ec2-user ~]$ sudo turbostat stress -c 2 -t 10 stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [5389] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.59 2.90 2.90 0 94.41 0.00 0.00 0.00 0.00 0.00 0.00 0.00 128.48 33.54 200.00 0.00 0 0 0 0.04 2.90 2.90 0 99.96 0.00 0.00 0.00 0.00 0.00 0.00 0.00 65.33 19.02 100.00 0.00 0 0 18 0.04 2.90 2.90 0 99.96 0 1 1 0.05 2.90 2.90 0 99.95 0.00 0.00 0.00 0 1 19 0.04 2.90 2.90 0 99.96 0 2 2 0.04 2.90 2.90 0 99.96 0.00 0.00 0.00 0 2 20 0.04 2.90 2.90 0 99.96 0 3 3 0.05 2.90 2.90 0 99.95 0.00 0.00 0.00 0 3 21 99.95 2.90 2.90 0 0.05 ... 1 1 28 99.92 2.90 2.90 0 0.08 1 2 11 0.06 2.90 2.90 0 99.94 0.00 0.00 0.00 1 2 29 0.05 2.90 2.90 0 99.95

Les cœurs des vCPU 21 et 28 travaillent activement à la vitesse de base du processeur de 2,9 GHz, et tous les cœurs inactifs fonctionnent également à la vitesse de base dans les instructions C1 C-state prêtes à accepter.