Aracılığıyla paylaş


Performans Sayaçları ve In-Process YanBy-Side Uygulamaları

Uyarı

Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.

Performans İzleyicisi 'ni (Perfmon.exe) kullanarak performans sayaçlarını çalışma zamanı temelinde ayırt etmek mümkündür. Bu konu başlığında, bu işlevselliği etkinleştirmek için gereken kayıt defteri değişikliği açıklanmaktadır.

Varsayılan Davranış

Performans İzleyicisi varsayılan olarak uygulama başına performans sayaçlarını görüntüler. Ancak, bunun sorunlu olduğu iki senaryo vardır:

  • Aynı ada sahip iki uygulamayı izlediğiniz zaman. Örneğin, her iki uygulama da myapp.exeolarak adlandırılırsa, örnek sütununda birimyapp, diğeri myapp#1 olarak görüntülenir. Bu durumda, bir performans sayacını belirli bir uygulamayla eşleştirmek zordur. myapp#1 için toplanan verilerin ilk myapp.exe'a mı yoksa ikinci myapp.exe'e mi atıfta bulunduğu net değildir.

  • Bir uygulama ortak dil çalışma zamanının birden çok örneğini kullandığında. .NET Framework 4, işlem içi yan yana barındırma senaryolarını destekler; diğer bir ifadeyle, tek bir işlem veya uygulama ortak dil çalışma zamanının birden çok örneğini yükleyebilir. myapp.exe adlı tek bir uygulama iki çalışma zamanı örneği yüklerse, bunlar varsayılan olarak Örnek sütununda myapp ve myapp#1 olarak atanır. Bu durumda, myapp ve myapp#1'in aynı ada sahip iki uygulamaya mı yoksa iki çalışma zamanıyla aynı uygulamaya mı başvuracakları net değildir. Aynı ada sahip birden çok uygulama birden çok çalışma zamanı yüklerse belirsizlik daha da artar.

Bu belirsizliği ortadan kaldırmak için bir kayıt defteri anahtarı ayarlayabilirsiniz. .NET Framework 4 kullanılarak geliştirilen uygulamalar için bu kayıt defteri değişikliği, Örnek sütunundaki uygulama adına bir işlem tanımlayıcısı ve ardından bir çalışma zamanı örneği tanımlayıcısı ekler. Uygulama veya uygulama#1 yerine, uygulama artık Örnek sütununda p_r_runtimeID olarak tanımlanır. Bir uygulama ortak dil çalışma zamanının önceki bir sürümü kullanılarak geliştirilmişse, .NET Framework 4'ün yüklü olması koşuluyla bu örnek application_pprocessID olarak temsil edilir.

In-Process Yan Yana Uygulamalar için Performans Sayaçları

Tek bir uygulamada barındırılan birden çok ortak dil çalışma zamanı sürümünün performans sayaçlarını işlemek için, aşağıdaki tabloda gösterildiği gibi tek bir kayıt defteri anahtarı ayarını değiştirmeniz gerekir.

Değer
Anahtar HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\.NETFramework\Performance
Giriş İşlemAdıFormatı
Türü REG_DWORD
Değer 2 (0x00000002)

için ProcessNameFormat 0 değeri, varsayılan davranışın etkinleştirildiğini gösterir; yani Perfmon.exe performans sayaçlarını uygulama başına temelinde görüntüler. Bu değeri 2 olarak ayarladığınızda, Perfmon.exe bir uygulamanın birden çok sürümünü ayırt eder ve çalışma zamanı bazında performans sayaçları sağlar. Kayıt defteri anahtarı ayarı için ProcessNameFormat herhangi diğer bir değer desteklenmez ve gelecekte kullanılmak üzere saklıdır.

Kayıt defteri anahtarı ayarını güncelleştirdikten sonra, yeni örnek adlandırma özelliğinin düzgün çalışması için Perfmon.exe'ı veya performans sayaçlarının diğer tüketicilerini yeniden başlatmanız gerekir.

Aşağıdaki örnek, ProcessNameFormat değerinin program aracılığıyla nasıl değiştirileceğini göstermektedir.

// 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()

Bu kayıt defteri değişikliğini yaptığınızda ve .NET Framework 4 veya üzeri yüklüyse, Perfmon.exe uygulamaların adlarını application_pprocessID olarak görüntüler; burada uygulama uygulamanın adıdır ve processID uygulamanın işlem tanımlayıcısıdır. Örneğin, myapp.exe adlı bir uygulama ortak dil çalışma zamanının iki örneğini yüklerse, Perfmon.exe bir örneği myapp_1416, ikinci örneği myapp_3160 olarak tanımlayabilir.

Uyarı

İşlem tanımlayıcısı, çalışma zamanının önceki sürümlerini kullanan aynı ada sahip iki uygulamayı çözümleme belirsizliğini ortadan kaldırır. Ortak dil çalışma zamanının önceki sürümleri yan yana senaryoları desteklemediğinden, önceki sürümler için çalışma zamanı tanımlayıcısı gerekli değildir.

.NET Framework 4 veya sonraki bir sürüm yoksa veya kaldırılmışsa, kayıt defteri anahtarını ayarlamanın hiçbir etkisi yoktur. Bu, aynı ada sahip iki uygulamanın Perfmon.exe uygulama ve uygulama#1 olarak görünmeye devam edeceği anlamına gelir (örneğin, uygulamam ve uygulamam#1 gibi).