Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
In diesem Dokument werden das Verhalten, die Abrechnung und die Einschränkungen der Leistungsüberwachungseinheit (PMU) in der Compute Engine erläutert. Informationen zum Aktivieren der PMU in einer C4A- oder C4-VM-Instanz finden Sie unter PMU in VMs aktivieren.
Die PMU ist eine Hardwarekomponente im CPU-Kern, die überwacht, wie der Prozessor Code ausführt. Wenn Sie die PMU in einer C4A- oder C4-VM aktivieren, können Sie mithilfe von Leistungsüberwachungssoftware auf die Leistungszähler in der PMU zugreifen. Mit diesem Ansatz können Sie leistungssensible Arbeitslasten wie Hochleistungs-Computing (HPC) oder maschinelles Lernen (ML) optimieren, indem Sie Leistungsengpässe in Ihren Anwendungen erkennen und beheben.
Funktionsweise der PMU
Die PMU besteht aus einer Reihe von Hardwarezählern, die als Leistungsüberwachungszähler (Performance Monitoring Counters, PMCs) bezeichnet werden. Diese Zähler sind modellspezifische Register, die jedes Mal gezählt werden, wenn ein Low-Level-Prozessorereignis wie eine falsche Verzweigungsvorhersage oder ein Cache-Miss innerhalb der CPU auftritt. Sie können PMCs in der PMU mithilfe von Leistungsüberwachungssoftware wie Intel VTune Profiler lesen und konfigurieren.
Standardmäßig ist die PMU in VMs deaktiviert. Wenn Sie diese Funktion aktivieren möchten, geben Sie die Arten von Low-Level-CPU-Ereignissen an, die erfasst werden sollen. Aktivieren Sie dazu einen der folgenden PMU-Typen:
Architektur (ARCHITECTURAL): Sie können die folgenden Architekturleistungsereignisse erfassen:
Nicht mehr verwendete Branch-Anweisungen: Die Anzahl der nicht mehr verwendeten Branch-Anweisungen. Verwenden Sie dieses Ereignis, um die Ausführung Ihres Codes zu messen und potenzielle Leistungsengpässe zu identifizieren.
Abzweigfehler, die nicht ausgeführt wurden: Die Anzahl der Abzweigvorhersagen, die falsch waren, wodurch der Prozessor angehalten und abgerufene Anweisungen verworfen wurden. Wenn für dieses Ereignis eine hohe Zahl angezeigt wird, können Sie die CPU-Leistung wahrscheinlich optimieren.
Nicht ausgeführte Anweisungen: Die Anzahl der Anweisungen, die die CPU erfolgreich verarbeitet hat. Mit diesem Ereignis können Sie den Instruktionsdurchsatz der CPU messen.
Top-Down-Slots: Die Anzahl der verfügbaren Slots in der Pipeline eines Prozessors, die zur gleichzeitigen Ausführung von Anweisungen verwendet werden. Anhand dieses Ereignisses können Sie nachvollziehen, wie effizient Ihr Code die Ressourcen des Prozessors nutzt.
Nicht angehaltene Kernzyklen: Die Anzahl der Kernzyklen, wenn der Thread nicht angehalten wird, z. B. aufgrund von Energieverwaltung oder Unterbrechungen. Anhand dieses Ereignisses können Sie die Gesamtnutzung des Prozessors bewerten.
Nicht angehaltene Referenzzyklen: Die Anzahl der Referenzzyklen, wenn der Kern nicht angehalten wird, z. B. beim Abrufen von Daten oder Anweisungen. Der Kern wird angehalten, wenn er die Anweisungen HLT oder MWAIT ausführt.
Referenzzyklen laufen mit einer festen Frequenz und bieten eine stabile Zeitreferenz, auch wenn sich die Geschwindigkeit des Prozessors ändert, um Energie zu sparen. Mit diesem Ereignis können Sie die für eine Aufgabe aufgewendete Zeit messen und Leistungsengpässe in Ihrem Code identifizieren.
Standard (STANDARD): Sie können alle Ereignisse vom Typ „Architectural PMU“ und alle lokalen Ereignisse innerhalb des CPU-Kerns erfassen, einschließlich L2-Cache-Ereignisse.
Erweitert (ENHANCED): Sie können alle Ereignisse vom Typ „Standard-PMU“ und alle lokalen Ereignisse außerhalb des CPU-Kerns erfassen, einschließlich L3-Cache-Ereignisse.
Nachdem Sie die PMU in einer VM aktiviert haben, wird sie im Hintergrund ausgeführt und überwacht kontinuierlich Leistungsereignisse mithilfe von PMCs. Optional können Sie mit Ihrer bevorzugten Software zur Leistungsüberwachung Schwellenwerte für bestimmte PMCs konfigurieren. Wenn ein PMC den festgelegten Grenzwert überschreitet, benachrichtigt die PMU die Software.
Beschränkungen
Für die PMU gelten die folgenden Einschränkungen:
Sie können die PMU nur auf den folgenden CPU-Plattformen aktivieren:
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-08-19 (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,["# PMU overview\n\n*** ** * ** ***\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-----------------\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-----------\n\nThe PMU has the following limitations:\n\n- You can only enable the PMU in the following CPU platforms:\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-------\n\nThere are no costs associated with enabling or disabling the PMU in a VM.\n\nWhat's next\n-----------\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)"]]