Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questo documento spiega il comportamento, la fatturazione e le limitazioni dell'unità di monitoraggio del rendimento (PMU) in Compute Engine. Per scoprire come attivare la PMU in un'istanza di macchina virtuale (VM) C4A o C4, consulta Attivare la PMU nelle VM.
La PMU è un componente hardware all'interno del core della CPU che monitora il modo in cui il
processore esegue il codice. Se attivi la PMU in una VM C4A o C4, puoi accedere ai contatori delle prestazioni nella PMU utilizzando un software di monitoraggio delle prestazioni. Questo approccio consente di ottimizzare i carichi di lavoro sensibili alle prestazioni, come quelli di computing ad alte prestazioni (HPC) o di machine learning (ML), aiutandoti a identificare e risolvere i colli di bottiglia delle prestazioni nelle tue applicazioni.
Come funziona la PMU
La PMU è composta da un insieme di contatori hardware chiamati contatori di monitoraggio delle prestazioni (PMC). Questi contatori sono
registri specifici del modello
che conteggiano ogni volta che nella CPU si verifica un evento del processore a basso livello, come una predizione errata del ramo
o una fallimento della cache. Puoi leggere e configurare i PMC nella PMU
utilizzando un software di monitoraggio delle prestazioni come
Intel VTune Profiler.
Per impostazione predefinita, la PMU è disabilitata nelle VM. Per attivarla, specifica i tipi di
eventi CPU a basso livello da monitorare attivando uno dei seguenti tipi di PMU:
Architettural (ARCHITECTURAL): puoi misurare i seguenti eventi di rendimento dell'architettura:
Istruzioni di ramo ritirate: il numero di istruzioni di ramo ritirate. Utilizza questo evento per misurare l'esecuzione del codice e identificare potenziali colli di bottiglia del rendimento.
Mancate di branch ritirate: il numero di istruzioni di branch con predizione errata che hanno causato l'arresto del processore e l'eliminazione delle istruzioni recuperate. Se vedi un numero elevato per questo evento, probabilmente puoi ottimizzare le prestazioni della CPU.
Istruzioni ritirate: il numero di istruzioni elaborate correttamente dalla CPU. Utilizza questo evento per misurare il throughput delle istruzioni della CPU.
Slot dall'alto verso il basso: il numero di slot disponibili all'interno della pipeline di un processore utilizzati per eseguire contemporaneamente le istruzioni. Utilizza questo
evento per capire con quanta efficienza il tuo codice utilizza le risorse
del processore.
Cicli del core non interrotti: il numero di cicli del core quando il thread non è interrotti, ad esempio a causa della gestione dell'alimentazione o delle interruzioni. Utilizza questo evento per valutare l'utilizzo complessivo del processore.
Cicli di riferimento non interrotti: il numero di cicli di riferimento quando il nucleo non è fermo, ad esempio durante il recupero di dati o istruzioni. Il core viene interrotto quando esegue le
istruzioni HLT o MWAIT.
I cicli di riferimento funzionano a una frequenza fissa, fornendo un riferimento temporale stabile anche quando la velocità del processore cambia per risparmiare energia. Utilizza questo evento per misurare il tempo impiegato per un'attività e identificare i colli di bottiglia delle prestazioni nel codice.
Standard (STANDARD): puoi misurare tutti gli eventi del tipo PMU di architettura e tutti gli eventi locali all'interno del core della CPU, inclusi gli eventi della cache di livello 2 (L2).
Migliorata (ENHANCED): puoi misurare tutti gli eventi del tipo PMU standard, nonché qualsiasi evento locale al di fuori del core della CPU, inclusi gli eventi della cache di livello 3 (L3).
Dopo aver attivato la PMU in una VM, questa viene eseguita in background e monitora continuamente gli eventi relativi alle prestazioni utilizzando i PMC. Facoltativamente, puoi configurare le soglie per PMC specifiche utilizzando il software di monitoraggio delle prestazioni che preferisci. Se un PMC supera la soglia designata, la PMU invia una notifica al
software.
Limitazioni
La PMU presenta le seguenti limitazioni:
Puoi attivare la PMU solo nelle seguenti piattaforme CPU:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-03 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)"]]