Der Aufwand beim Einrichten der Leistungsindikatoren ist im Allgemeinen nicht hoch genug, um sich Sorgen zu machen (Einrichten einer gemeinsamen Speicherregion und einiger .NET-Objekte zusammen mit CLR-Aufwand, da die CLR die Verwaltung für Sie übernimmt). Ich beziehe mich hier auf Klassen wie PerformanceCounter.
Der Aufwand für die Registrierung der Leistungsindikatoren kann recht langsam sein, ist aber im Allgemeinen kein Problem, da es nur einmal zur Einrichtung stattfinden soll, weil Sie den gesamten Zustand der Maschine ändern möchten. Es wird durch jedes Kopieren, das du machst, in den Schatten gestellt. Es ist nicht generell etwas, das Sie zur Laufzeit tun möchten. Hier beziehe ich mich auf PerformanceCounterInstaller.
Der Aufwand beim Aktualisieren eines Leistungsindikators ist im Allgemeinen auf die Kosten für die Ausführung einer Interlock-Operation im gemeinsam genutzten Speicher zurückzuführen. Dies ist langsamer als der normale Speicherzugriff, ist aber ein Prozessor-Grundelement (so erhält es atomare Operationen über das gesamte Speichersubsystem einschließlich Caches). Im Allgemeinen sind diese Kosten nicht hoch, um die man sich kümmern muss. Es könnte 10 mal eine normale Speicheroperation sein, möglicherweise schlechter, abhängig von der Aktualisierung und wie die Konkurrenz zwischen Threads und CPUs ist. Aber denken Sie daran, es ist buchstäblich unmöglich, besser als verzahnte Operationen für die prozessübergreifende Kommunikation mit atomaren Updates zu arbeiten, und es werden keine Sperren gehalten. Hier verweise ich auf PerformanceCounter.Increment und ähnliche Methoden.
Der Aufwand beim Lesen eines Leistungsindikators ist in der Regel ein Lesen aus dem gemeinsamen Speicher. Wie andere bereits gesagt haben, möchten Sie in einem vernünftigen Zeitraum (wie bei jeder anderen Sampling-Probe) probieren, aber denken Sie einfach an PerfMon und versuchen Sie, das Sampling auf einer menschlichen Skala zu halten (Sekunden statt Millisekunden) und Sie werden wahrscheinlich keine haben Probleme.
Endlich ein Appell an Erfahrung: Leistungsindikatoren sind so leicht, dass sie überall in Windows verwendet werden, vom Kernel über Treiber bis zu Benutzeranwendungen. Microsoft verlässt sich intern auf sie.
Hinweis: Die wirkliche Frage mit Leistungsindikatoren ist die Lernkurve im Verständnis (die moderat ist) und eine Messung der richtigen Dinge (scheint einfach, aber oft verstehst du es falsch).
Danke. Kannst du mich auf einige Zahlen verweisen? Ich bin neugierig, wie gut sie es bekommen haben ... – Boaz
Ich habe es noch nie gezeigt, aber ich habe keinen Grund, daran zu zweifeln. Es wäre einfach in einer Anwendung zu beweisen. – dpurrington
Hallo dpurrington. Durch "es ist die Überwachung ... die zu einer Verschlechterung der Leistung führt" meinen Sie, dass die Verschlechterung in dem Prozess, der die Zähler aktualisiert oder veröffentlicht, oder durch den Prozess, der sie überwacht, gesehen wird? – urig