Megosztás a következőn keresztül:


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_pprocessID_rruntimeID 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_pprocessID-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_pprocessID 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).