Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En este documento, se explica el comportamiento, la facturación y las limitaciones de la unidad de supervisión de rendimiento (PMU) en Compute Engine. Para obtener información sobre cómo habilitar la PMU en una instancia de máquina virtual (VM) de C4A o C4, consulta Habilita la PMU en las VMs.
La PMU es un componente de hardware dentro del núcleo de la CPU que supervisa cómo el procesador ejecuta el código. Si habilitas la PMU en una VM C4A o C4, puedes acceder a los contadores de rendimiento en la PMU con software de supervisión de rendimiento. Este enfoque te permite optimizar las cargas de trabajo sensibles al rendimiento, como las cargas de trabajo de computación de alto rendimiento (HPC) o de aprendizaje automático (AA), ya que te ayuda a identificar y abordar los cuellos de botella de rendimiento en tus aplicaciones.
Cómo funciona la PMU
La PMU se compone de un conjunto de contadores de hardware llamados contadores de supervisión de rendimiento (PMC). Estos contadores son registros específicos del modelo que cuentan cada vez que se produce un evento de procesador de bajo nivel, como una predicción incorrecta de la rama o una error de caché, dentro de la CPU. Puedes leer y configurar los PMC en la PMU con software de supervisión de rendimiento, como Intel VTune Profiler.
De forma predeterminada, la PMU está inhabilitada en las VMs. Para habilitarlo, especifica los tipos de
eventos de CPU de bajo nivel de los que deseas hacer un seguimiento habilitando uno de los siguientes tipos de PMU:
Arquitectural (ARCHITECTURAL): Puedes medir los siguientes eventos de rendimiento arquitectónico:
Instrucciones de ramas retiradas: Es la cantidad de instrucciones de bifurcación retiradas. Usa este evento para medir la ejecución de tu código y también identificar posibles cuellos de botella de rendimiento.
Omisiones de ramas retiradas: Es la cantidad de instrucciones de ramas que se predijeron de forma incorrecta, lo que hace que el procesador se detenga y descarte las instrucciones recuperadas. Si ves un número alto para este evento, es probable que puedas optimizar el rendimiento de la CPU.
Instrucciones retiradas: Es la cantidad de instrucciones que la CPU procesa correctamente. Usa este evento para medir la capacidad de procesamiento de instrucciones de la CPU.
Ranuras de arriba abajo: Es la cantidad de ranuras disponibles dentro de la canalización de un procesador que se usan para ejecutar instrucciones de forma simultánea. Usa este evento para comprender la eficiencia con la que tu código usa los recursos del procesador.
Ciclos de núcleo no detenidos: Es la cantidad de ciclos de núcleo cuando el subproceso no está detenido, por ejemplo, debido a la administración de energía o a interrupciones. Usa este evento para evaluar el uso general del procesador.
Ciclos de referencia sin detener: Es la cantidad de ciclos de referencia cuando el núcleo no está detenido, por ejemplo, cuando se recuperan datos o instrucciones. El núcleo se detiene cuando ejecuta las instrucciones HLT o MWAIT.
Los ciclos de referencia funcionan a una frecuencia fija, lo que proporciona una referencia de tiempo estable incluso cuando cambia la velocidad del procesador para preservar la energía. Usa este evento para medir el tiempo dedicado a una tarea y así identificar
los cuellos de botella de rendimiento en tu código.
Estándar (STANDARD): Puedes medir todos los eventos del tipo de PMU de la arquitectura y cualquier evento local dentro del núcleo de la CPU, incluidos los eventos de caché de nivel 2 (L2).
Mejorada (ENHANCED): Puedes medir todos los eventos del tipo de PMU estándar, cualquier evento local fuera del núcleo de la CPU, incluidos los eventos de caché de nivel 3 (L3).
Después de habilitar la PMU en una VM, esta se ejecuta en segundo plano y supervisa de forma continua los eventos de rendimiento con PMC. De manera opcional, puedes configurar umbrales para PMC específicos con el software de supervisión de rendimiento que prefieras. Si un PMC supera su umbral designado, la PMU notifica al software.
Limitaciones
La PMU tiene las siguientes limitaciones:
Solo puedes habilitar la PMU en las siguientes plataformas de CPU:
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)"]]