Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Ce document explique le comportement, la facturation et les limites de l'unité de surveillance des performances (PMU) dans Compute Engine. Pour savoir comment activer la PMU dans une instance de machine virtuelle (VM) C4A ou C4, consultez la section Activer la PMU dans les VM.
La PMU est un composant matériel du cœur du processeur qui surveille la façon dont le processeur exécute le code. En activant la PMU dans une VM C4A ou C4, vous pouvez accéder aux compteurs de performances de la PMU à l'aide d'un logiciel de surveillance des performances. Cette approche vous permet d'optimiser les charges de travail sensibles aux performances, telles que les charges de travail de calcul hautes performances (HPC) ou de machine learning (ML), en vous aidant à identifier et à résoudre les goulots d'étranglement de performances dans vos applications.
Fonctionnement de la PMU
La PMU est composée d'un ensemble de compteurs matériels appelés compteurs de surveillance des performances (PMC, Performance Monitoring Counters). Ces compteurs sont des registres spécifiques au modèle qui comptent chaque fois qu'un événement de processeur de bas niveau, tel qu'une erreur de prédiction de branche ou un défaut de cache (miss), se produit dans le processeur. Vous pouvez lire et configurer les PMC dans la PMU à l'aide d'un logiciel de surveillance des performances tel que Intel VTune Profiler.
Par défaut, la PMU est désactivée dans les VM. Pour l'activer, spécifiez les types d'événements de processeur de bas niveau à suivre en activant l'un des types de PMU suivants:
Architecture (ARCHITECTURAL) : vous pouvez mesurer les événements de performances d'architecture suivants :
Instructions de branche supprimées : nombre d'instructions de branche supprimées. Utilisez cet événement pour mesurer l'exécution de votre code et identifier les goulots d'étranglement potentiels des performances.
Branches manquées supprimées : nombre d'instructions de branchement mal prédites, ce qui a entraîné un blocage du processeur et l'abandon des instructions extraites. Si ce nombre est élevé, vous pouvez probablement optimiser les performances du processeur.
Instructions supprimées: nombre d'instructions traitées avec succès par le processeur. Utilisez cet événement pour mesurer le débit d'instructions du processeur.
Emplacements de haut en bas: nombre d'emplacements disponibles dans le pipeline d'un processeur qui sont utilisés pour exécuter simultanément des instructions. Utilisez cet événement pour comprendre dans quelle mesure votre code utilise efficacement les ressources du processeur.
Cycles de cœur non arrêtés : nombre de cycles de cœur lorsque le thread n'est pas interrompu, par exemple en raison d'une gestion de l'alimentation ou d'interruptions. Utilisez cet événement pour évaluer l'utilisation globale du processeur.
Cycles de référence non arrêtés: nombre de cycles de référence lorsque le cœur n'est pas arrêté, par exemple lors de la récupération de données ou d'instructions. Le noyau est arrêté lorsqu'il exécute les instructions HLT ou MWAIT.
Les cycles de référence fonctionnent à une fréquence fixe, fournissant une référence temporelle stable même lorsque la vitesse du processeur change pour préserver l'énergie. Utilisez cet événement pour mesurer le temps passé sur une tâche et identifier les goulots d'étranglement des performances dans votre code.
Standard (STANDARD): vous pouvez mesurer tous les événements du type PMU architectural et tous les événements locaux dans le cœur du processeur, y compris les événements de cache de niveau 2 (L2).
Amélioré (ENHANCED): vous pouvez mesurer tous les événements du type PMU standard, ainsi que tous les événements locaux en dehors du cœur du processeur, y compris les événements de cache de niveau 3 (L3).
Une fois que vous avez activé la PMU dans une VM, elle s'exécute en arrière-plan et surveille en permanence les événements de performances à l'aide de PMC. Vous pouvez éventuellement configurer des seuils pour des PMC spécifiques à l'aide du logiciel de surveillance des performances de votre choix. Si un PMC dépasse son seuil désigné, le PMU en informe le logiciel.
Limites
La PMU présente les limites suivantes:
Vous ne pouvez activer la PMU que sur les plates-formes de processeur suivantes:
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/08 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/08 (UTC)."],[[["\u003cp\u003eThe Performance Monitoring Unit (PMU) is a hardware component in the CPU core that monitors processor code execution and can be enabled in C4A or C4 virtual machines (VMs) to access performance counters.\u003c/p\u003e\n"],["\u003cp\u003eEnabling the PMU allows users to measure low-level processor events, such as branch mispredictions and cache misses, using performance-monitoring software to help optimize workloads like HPC and ML.\u003c/p\u003e\n"],["\u003cp\u003eThe PMU supports three types of performance monitoring events: Architectural, which measures general events like branch instructions and core cycles; Standard, which also measures local events within the CPU core; and Enhanced, which additionally includes local events outside the CPU core.\u003c/p\u003e\n"],["\u003cp\u003eThe PMU can only be enabled on Google Axion C4A VMs or Intel Xeon Scalable Processor (Emerald Rapids) 5th generation C4 VMs, with the Enhanced PMU type limited to C4 machines with 96 or 192 vCPUs.\u003c/p\u003e\n"],["\u003cp\u003eThere are no additional costs associated with enabling or disabling the PMU in a VM.\u003c/p\u003e\n"]]],[],null,["*** ** * ** ***\n\nThis document explains the behavior, billing, and limitations of the performance\nmonitoring unit (PMU) in Compute Engine. To learn how to enable the PMU in a\nC4A or C4 virtual machine (VM) instance, see\n[Enable the PMU in VMs](/compute/docs/enable-pmu-in-vms).\n\nThe PMU is a hardware component within the CPU core that monitors how the\nprocessor runs code. By enabling the PMU in a C4A or C4 VM, you can access the\nperformance counters in the PMU using performance-monitoring software. This\napproach lets you optimize performance-sensitive workloads, such as high\nperformance computing (HPC) or machine learning (ML) workloads, by helping you\nidentify and address performance bottlenecks in your applications.\n\nHow the PMU works\n\nThe PMU is composed of a set of hardware counters called performance monitoring\ncounters (PMCs). These counters are\n[model-specific registers](https://en.wikipedia.org/wiki/Model-specific_register)\nthat count each time a low-level processor event, such as a branch misprediction\nor cache miss, occurs within the CPU. You can read and configure PMCs in the PMU\nby using performance-monitoring software such as\n[Intel VTune Profiler](https://www.intel.com/content/www/us/en/developer/tools/oneapi/vtune-profiler.html).\n\nBy default, the PMU is disabled within VMs. To enable it, specify the types of\nlow-level CPU events to track by enabling one of the following PMU types:\n\n- **Architectural (`ARCHITECTURAL`)**: You can measure the following\n architectural performance events:\n\n - **Branch instructions retired**: The number of branch instructions\n retired. Use this event to measure your code's execution and identify\n potential performance bottlenecks.\n\n - **Branch misses retired**: The number of branch instructions that were\n mispredicted, causing the processor to stall and discard fetched\n instructions. If you see a high number for this event, then you can\n likely optimize the CPU performance.\n\n - **Instructions retired**: The number of instructions the CPU\n successfully processes. Use this event to measure the CPU's instruction\n throughput.\n\n - **Top down slots**: The number of available slots within a processor's\n pipeline that are used to simultaneously execute instructions. Use this\n event to understand how efficiently your code is using the processor's\n resources.\n\n - **Unhalted core cycles**: The number of core cycles when the thread is\n not halted---for example, due to power management or interrupts. Use\n this event to evaluate the overall usage of the processor.\n\n - **Unhalted reference cycles** : The number of reference cycles when the\n core is not halted---for example, when fetching data or\n instructions. The core is halted when it runs the\n [`HLT` or `MWAIT` instructions](https://en.wikipedia.org/wiki/HLT_(x86_instruction)).\n Reference cycles operate at a fixed frequency, providing a stable time\n reference even when the speed of the processor changes to preserve\n energy. Use this event to measure the time spent on a task and identify\n performance bottlenecks in your code.\n\n- **Standard (`STANDARD`)**: You can measure all events from the Architectural\n PMU type and any local events inside the CPU core, including level 2 (L2)\n cache events.\n\n- **Enhanced (`ENHANCED`)**: You can measure all events from the Standard PMU\n type, any local events outside the CPU core, including level 3 (L3) cache\n events.\n\nAfter you enable the PMU in a VM, the PMU runs in the background, continuously\nmonitoring performance events using PMCs. You can optionally configure\nthresholds for specific PMCs using your preferred performance-monitoring\nsoftware. If a PMC exceeds its designated threshold, then the PMU notifies the\nsoftware.\n\nLimitations\n\nThe PMU has the following limitations:\n\n- You can only enable the PMU in the following CPU platforms:\n\n | | **CPU platform** | **Supported machine series** | **Supported performance events** |\n |---|---------------------------------------------------------------|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------|\n | | Google Axion™ Processor | [C4A](/compute/docs/general-purpose-machines#c4a_series) | [Arm Neoverse V2 PMU Guide](https://developer.arm.com/documentation/109709/latest/) |\n | | Intel Xeon Scalable Processor (Emerald Rapids) 5th generation | [C4](/compute/docs/general-purpose-machines#c4_series) | [emeraldrapids_core.json](https://github.com/intel/perfmon/blob/main/EMR/events/emeraldrapids_core.json) |\n\n- You can enable the Enhanced PMU type only in VMs that use a C4 machine type\n with 96 or 192 vCPUs.\n\nPricing\n\nThere are no costs associated with enabling or disabling the PMU in a VM.\n\nWhat's next\n\n- [Enable the PMU in VMs](/compute/docs/enable-pmu-in-vms)\n\n- [Enable the PMU in Google Kubernetes Engine clusters](/kubernetes-engine/docs/how-to/analyzing-cpu-performance-using-pmu)"]]