Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Contadores de rendimiento y aplicaciones en paralelo en proceso

Con Monitor de rendimiento (Perfmon.exe), es posible diferenciar los contadores de rendimiento según el runtime. En este tema se describe el cambio que hay que realizar en el Registro para habilitar esta funcionalidad.

De forma predeterminada, Monitor de rendimiento muestra los contadores de rendimiento según la aplicación. Sin embargo, hay dos escenarios en los que esto es problemático:

  • Cuando supervisa dos aplicaciones que tienen el mismo nombre. Por ejemplo, si ambas aplicaciones se llaman miapl.exe, una se mostrará como miapl y la otra como miapl#1 en la columna Instancia. En este caso, es difícil hacer coincidir un contador de rendimiento con una aplicación determinada. No está claro si los datos recopilados para miapl#1 hace referencia a la primera miapl.exe o a la segunda miapl.exe.

  • Cuando una aplicación usa varias instancias de Common Language Runtime. .NET Framework 4 admite escenarios de hospedaje en paralelo en el mismo proceso; es decir, un único proceso o aplicación puede cargar varias instancias de Common Language Runtime. Si una única aplicación llamada miapl.exe carga dos instancias en tiempo de ejecución, de forma predeterminada, se designarán en la columna Instancia como miapl y miapl#1. En este caso, no está claro si miapl y miapl#1 se refieren a dos aplicaciones que tienen el mismo nombre o a la misma aplicación con dos runtime. Si varias aplicaciones que tienen el mismo nombre cargan varios runtime, la ambigüedad es aún mayor.

Puede establecer una clave del Registro para eliminar esta ambigüedad. Para las aplicaciones desarrolladas con .NET Framework 4, este cambio del Registro agrega un identificador de proceso seguido de un identificador de instancia en tiempo de ejecución al nombre de la aplicación en la columna Instancia. En lugar de application o de application#1, la aplicación se identifica ahora como _rruntimeID depprocessIDde _de applicationen la columna de Instancia . Si una aplicación se desarrolló usando una versión anterior de Common Language Runtime, esa instancia se representa como application_pprocessID siempre que .NET Framework 4 está instalado.

Para administrar los contadores de rendimiento para varias versiones de Common Language Runtime hospedadas en una única aplicación, debe cambiar un único valor de clave del Registro, como se muestra en la tabla siguiente.

Nombre de clave

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\.NETFramework\Performance

Nombre del valor

ProcessNameFormat

Tipo de valor

REG_DWORD

Valor

1 (0x00000001)

El valor 0 para ProcessNameFormat indica que está habilitado el comportamiento predeterminado; es decir, Perfmon.exe muestra los contadores de rendimiento por aplicación. Cuando se establece este valor en 1, Perfmon.exe elimina la ambigüedad entre varias versiones de una aplicación y proporciona contadores de rendimiento por runtime. De momento, no se admite ningún otro valor para la clave del Registro ProcessNameFormat.

Después de actualizar el valor de la clave del Registro ProcessNameFormat, es preciso reiniciar Perfmon.exe o cualquier otro consumidor de los contadores de rendimiento para que la nueva característica de nomenclatura de instancias funcione correctamente.

En el ejemplo siguiente, se muestra cómo cambiar el valor de ProcessNameFormat mediante programación.


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


Cuando realiza este cambio del registro, Perfmon.exe muestra los nombres de las aplicaciones destinadas .NET Framework 4 como _rruntimeIDdepprocessIDde _deapplication, donde es el nombre application de la aplicación, processID es el identificador de proceso de la aplicación, y runtimeID es un identificador de Common Language Runtime. Por ejemplo, si una aplicación denominada miapl.exe carga dos instancias de Common Language Runtime, Perfmon.exe puede identificar una instancia como miapl_p1416_r10 y la otra como miapl_p3160_r10. El identificador en tiempo de ejecución solo elimina la ambigüedad de los runtime dentro de un proceso; no proporciona ninguna otra información sobre el runtime. (Por ejemplo, el Id. de tiempo de ejecución no tiene ninguna relación con la versión o la SKU del runtime.)

Si .NET Framework 4 está instalado, el cambio del Registro también afecta a las aplicaciones desarrolladas con versiones anteriores de .NET Framework. Aparecen en Perfmon.exe como application_pprocessID, donde es el nombre de aplicación application y processID es el identificador de proceso. Por ejemplo, si se supervisan los contadores de rendimiento de dos aplicaciones llamadas miapl.exe, una podría aparecer como miapl_p23900 y la otra como miapl_p24908.

Nota Nota

El identificador de proceso elimina la ambigüedad de resolver dos aplicaciones con el mismo nombre que usan versiones anteriores del runtime. No es necesario un identificador del tiempo de ejecución para las versiones anteriores, ya que las versiones anteriores de Common Language Runtime no admiten escenarios en paralelo.

Si .NET Framework 4 no está presente o se ha desinstalado, establecer la clave del Registro no produce ningún efecto. Esto significa que dos aplicaciones con el mismo nombre seguirán apareciendo en Perfmon.exe como application y application#1 (por ejemplo, como myapp y myapp#1).

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft