Visual Studio 2010 Concurrency Visualizer verhindert verlorene Kernel- und Benutzermodusereignisse durch ETW-Puffer
In diesem Artikel wird erläutert, wie Sie verloren gegangene Kernel- und Benutzermodusereignisse verhindern, indem Sie die EtW-Puffereinstellungen (Event Tracing for Windows) in der Windows Registrierung anpassen.
Originalversion des Produkts: Visual Studio 2010
Ursprüngliche KB-Nummer: 2019117
Problembeschreibung
Microsoft Visual Studio 2010 Concurrency Visualizer kann verlorene Kernel- und/oder Benutzermodusereignisse melden. Sie können verlorene Kernel- und/oder Benutzermodusereignisse verhindern, indem Sie die ETW-Puffereinstellungen in der Windows Registrierung anpassen.
Ursache
Die Concurrency Visualizer in Visual Studio 2010 Profiler (Premium und Ultimate Editionen) nutzt Über ETW gesammelte Ereignisse, die Puffer zum Zwischenspeichern von Daten vor dem Schreiben auf den Datenträger verwenden. Wenn dieses Tool berichte, dass Kernel- und/oder Benutzermodusereignisse verloren gegangen sind, sind die Standardeinstellungen für einige Puffer möglicherweise zu niedrig für Ihr System oder Ihre Anwendung.
Verlorene Kernelmodusereignisse sind ein kritischer Fehler, der in den Ausgabe- und Berichtsfenstern gemeldet wird. Die Verarbeitung endet ohne Bericht.
Verlorene Benutzermodusereignisse werden im Ausgabefenster als Fehler angezeigt, aber es wird weiterhin ein Bericht generiert. Zu den Symptomen im Bericht können verloren gegangene benutzerdefinierte Szenariomarker oder Marker für parallele Erweiterungen in Ihrem Code gehören.
Lösung
Das Erhöhen der ETW-Pufferregistrierungseinstellungen und das Erneute Profilieren können die Symptome beseitigen. Größere Puffereinstellungen verbrauchen mehr Arbeitsspeicher; passen Sie daher eine optimale Leistung an. Jeder nachfolgende Wert wird über MSDN definiert.
Erstellen Sie einen Registrierungsschlüssel mit HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\10.0\VSPerf\Monitor\EtwConfig den folgenden DWORD-Einträgen. Beginnen Sie mit den hier gezeigten Werten:
- FlushTimer 0
- BufferSize 256
- MinBuffers 512
- MaxBuffers 1024