Teljesítményszámlálók és folyamatokon belüli alkalmazások
Feljegyzés
Ez a cikk a .NET-keretrendszer vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.
A Teljesítményfigyelő (Perfmon.exe) használatával futásidejű alapon lehet megkülönböztetni a teljesítményszámlálókat. Ez a témakör a funkció engedélyezéséhez szükséges beállításjegyzék-módosításokat ismerteti.
Az alapértelmezett viselkedés
Alapértelmezés szerint a Teljesítményfigyelő alkalmazásonként jeleníti meg a teljesítményszámlálókat. Azonban két forgatókönyv van, amelyekben ez problémás:
Ha két azonos nevű alkalmazást figyel. Ha például mindkét alkalmazás neve myapp.exe, az egyik myappként, a másik pedig a Példány oszlopban myapp#1 néven jelenik meg. Ebben az esetben nehéz egy teljesítményszámlálót egyeztetni egy adott alkalmazással. Nem egyértelmű, hogy a myapp#1-hez gyűjtött adatok az első myapp.exe vagy a második myapp.exe hivatkoznak-e.
Ha egy alkalmazás a közös nyelvi futtatókörnyezet több példányát használja. A .NET-keretrendszer 4 támogatja a folyamaton belüli párhuzamos üzemeltetési forgatókönyveket, azaz egyetlen folyamat vagy alkalmazás több példányt is betölthet a közös nyelvi futtatókörnyezetből. Ha egy myapp.exe nevű alkalmazás betölt két futtatókörnyezeti példányt, alapértelmezés szerint a Példány oszlopban myappként és myapp#1ként lesznek kijelölve. Ebben az esetben nem egyértelmű, hogy a myapp és a myapp#1 két azonos nevű alkalmazásra vagy ugyanarra az alkalmazásra hivatkozik-e két futtatókörnyezettel. Ha több azonos nevű alkalmazás több futtatókörnyezetet tölt be, a kétértelműség még nagyobb.
Beállíthat egy beállításkulcsot, hogy kiküszöbölje ezt a kétértelműséget. A .NET-keretrendszer 4 használatával fejlesztett alkalmazások esetében ez a beállításjegyzék-módosítás hozzáad egy folyamatazonosítót, majd egy futtatókörnyezeti példányazonosítót a Példány oszlopban lévő alkalmazásnévhez. Az alkalmazás vagy az alkalmazás#1 helyett az alkalmazás mostantól application_p
processID_r
runtimeID azonosítóként van azonosítva a Példány oszlopban. Ha egy alkalmazást a közös nyelvi futtatókörnyezet egy korábbi verziójával fejlesztettek ki, akkor a példány application_p
processID-ként jelenik meg, feltéve, hogy a .NET-keretrendszer 4 telepítve van.
Teljesítményszámlálók a folyamaton belüli, egymás mellett futó alkalmazásokhoz
Az egyetlen alkalmazásban üzemeltetett több közös nyelvi futtatókörnyezeti verzió teljesítményszámlálóinak kezeléséhez egyetlen beállításkulcs-beállítást kell módosítania az alábbi táblázatban látható módon.
Érték | |
---|---|
Kulcs | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\. NETFramework\Teljesítmény |
Bejegyzés | ProcessNameFormat |
Típus | REG_DWORD |
Érték | 2 (0x00000002) |
A 0 ProcessNameFormat
érték azt jelzi, hogy az alapértelmezett viselkedés engedélyezve van, vagyis Perfmon.exe alkalmazásonként jeleníti meg a teljesítményszámlálókat. Ha ezt az értéket 2-re állítja, Perfmon.exe egyértelműsíti egy alkalmazás több verzióját, és futásidejű teljesítményszámlálókat biztosít. A beállításkulcs-beállítás bármely más értéke ProcessNameFormat
nem támogatott és jövőbeli használatra van fenntartva.
A beállításkulcs-beállítás frissítése ProcessNameFormat
után újra kell indítania Perfmon.exe vagy a teljesítményszámlálók bármely más felhasználóját, hogy az új példányok elnevezési funkciója megfelelően működjön.
Az alábbi példa bemutatja, hogyan módosíthatja az ProcessNameFormat
értéket programozott módon.
// Create or open registry key.
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(
@"System\CurrentControlSet\Services\.NETFramework\Performance");
// Create or overwrite value.
key.SetValue("ProcessNameFormat", 1,
Microsoft.Win32.RegistryValueKind.DWord);
key.Close();
' Create or open registry key.
Dim key As Microsoft.Win32.RegistryKey
key = Microsoft.Win32.Registry.LocalMachine.CreateSubKey( _
"System\CurrentControlSet\Services\.NETFramework\Performance")
' Create or overwrite value.
key.SetValue("ProcessNameFormat", 1, _
Microsoft.Win32.RegistryValueKind.DWord)
key.Close()
Ha módosítja ezt a beállításjegyzéket, és .NET-keretrendszer 4 vagy újabb verzió van telepítve, Perfmon.exe az alkalmazások nevét application_p
processID azonosítóként jeleníti meg, ahol az alkalmazás az alkalmazás neve, a processID pedig az alkalmazás folyamatazonosítója. Ha például egy myapp.exe nevű alkalmazás betölti a közös nyelvi futtatókörnyezet két példányát, Perfmon.exe az egyik példányt myapp_1416, a másodikat pedig myapp_3160 azonosíthatja.
Feljegyzés
A folyamatazonosító kiküszöböli a futtatókörnyezet korábbi verzióit használó két alkalmazás feloldásának kétértelműségét. A korábbi verziókhoz nem szükséges futtatókörnyezet-azonosító, mert a közös nyelvi futtatókörnyezet korábbi verziói nem támogatják az egymás melletti forgatókönyveket.
Ha a .NET-keretrendszer 4-es vagy újabb verziója nincs jelen, vagy eltávolították, a beállításkulcs beállításának nincs hatása. Ez azt jelenti, hogy két azonos nevű alkalmazás továbbra is megjelenik a Perfmon.exe alkalmazásként és az 1. alkalmazásként (például a myapp és a myapp#1 néven).
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: