Uso de las funciones del Registro para consumir datos de contador
Use las funciones del Registro para recopilar datos de rendimiento de la clave especial del HKEY_PERFORMANCE_DATA
Registro.
Los datos de rendimiento no se almacenan realmente en el registro. Llamar a las funciones del Registro hace que el sistema recopile los datos del proveedor de datos de rendimiento adecuado.
Nota:
Normalmente, no debe usar las funciones del Registro para consumir datos de contadores. En su lugar, debe usar las funciones auxiliares de datos de rendimiento (PDH). Las funciones PDH son más fáciles de usar y evitar muchos problemas de rendimiento y confiabilidad que pueden producirse a través del uso incorrecto de las funciones del Registro.
Nota:
No puede usar las funciones del Registro si está escribiendo Windows OneCore aplicaciones. En su lugar, use las funciones de consumidor perfLib V2.
Las funciones del Registro son la API de bajo nivel para recopilar datos de proveedores V1. Las funciones del Registro también admiten la recopilación de datos de proveedores V2 a través de una capa de traducción que llama a las funciones de consumidor V2.
Para obtener datos de rendimiento del sistema local, llame a la función RegQueryValueEx . Use HKEY_PERFORMANCE_DATA
como clave. La primera llamada abre la clave. No es necesario abrir explícitamente la clave primero.
Para obtener datos de rendimiento de un sistema remoto, llame a la función RegConnectRegistry . Use el nombre de equipo del sistema remoto y use HKEY_PERFORMANCE_DATA
como clave. Esta llamada recupera una clave que representa los datos de rendimiento del sistema remoto. Use esta clave en lugar de HKEY_PERFORMANCE_DATA
la clave para recuperar los datos.
Asegúrese de usar la función RegCloseKey para cerrar el identificador de la clave cuando haya terminado de obtener los datos de rendimiento. Esto es importante para los casos locales y remotos:
-
RegCloseKey(HKEY_PERFORMANCE_DATA)
no cierra realmente un identificador del Registro, pero borra todos los datos almacenados en caché y libera los archivos DLL de rendimiento cargados. -
RegCloseKey(hkeyRemotePerformanceData)
cierra el identificador en el registro de la máquina remota.
Importante
No llame a RegCloseKey(HKEY_PERFORMANCE_DATA)
durante DLL_PROCESS_DETACH
.
Use el lpValueName
parámetro de la función RegQueryValueEx para indicar la información que se va a recuperar. En la tabla siguiente se enumeran los valores que puede especificar para lpValueName
. Tenga en cuenta que las cadenas de valor no distinguen mayúsculas de minúsculas.
Valor | Descripción |
---|---|
Global |
Recupera los datos de rendimiento de todos los objetos de rendimiento registrados en el equipo, excepto los incluidos en la Costly categoría. |
OLD_Global |
Windows Vista y versiones posteriores: Recupera los datos de rendimiento de todos los objetos de rendimiento V1 registrados en el equipo, excepto los incluidos en la Costly categoría. Úselo en lugar de Global evitar la recopilación de datos innecesarios del proveedor V2 cuando sepa que los datos de interés proceden de un proveedor V1. |
n1 n2 ... |
Recupera los datos de rendimiento de uno o varios objetos de rendimiento. Especifique el índice decimal asociado a cada objeto que desea recuperar en una lista separada por espacios. Por ejemplo, si desea recuperar objetos System y Memory y ha determinado que los índices de las cadenas de nombre correspondientes son 2 y 4, especifique la cadena "2 4" . Tenga en cuenta que la consulta puede devolver un número diferente de objetos de los solicitados. Esto puede ocurrir si el objeto especificado no está disponible, si el objeto especificado depende de otro tipo de objeto o si un proveedor devuelve datos que no se solicitaron directamente. Por ejemplo, los subprocesos dependen de los procesos, por lo que si solicita datos del Thread objeto, los resultados incluirán datos del Process objeto. |
Counter n |
Recupera cadenas de nombre para el identificador de idioma especificado, por ejemplo, inglés para Counter 9 . Utilice las cadenas de nombre devueltas para buscar el índice correspondiente a un nombre determinado o para buscar el nombre correspondiente a un índice determinado. Consulte Recuperación de nombres de contadores y texto de ayuda para obtener más información. Tenga en cuenta que la lista devuelta incluye nombres de objeto (conjunto de contadores) y nombres de contadores: no hay ninguna manera sencilla de determinar si un nombre es un nombre de objeto o un nombre de contador. |
Help n |
Recupera cadenas de ayuda para el identificador de idioma especificado, por ejemplo, inglés para Help 9 . Use las cadenas de ayuda devueltas para buscar descripciones correspondientes a los índices de ayuda de objetos (conjunto de contadores) o contadores. Consulte Recuperación de nombres de contadores y texto de ayuda para obtener más información. |
Costly |
Obsoleto: Recupera los datos de rendimiento de los tipos de objeto cuyos datos son costosos de recopilar en términos de tiempo de procesador o uso de memoria. Esta colección puede tardar varios minutos en una máquina muy cargada. Debe realizar la recopilación en un subproceso de trabajo si la aplicación necesita responder al usuario durante esta recopilación de datos. |
MetadataGlobal |
Windows 10 20H1 y versiones posteriores: Recupera los metadatos de todos los objetos de rendimiento registrados en el equipo, excepto los incluidos en la Costly categoría . |
OLD_MetadataGlobal |
Windows 10 20H1 y versiones posteriores: Recupera los metadatos de todos los objetos de rendimiento V1 registrados en el equipo, excepto los incluidos en la Costly categoría. |
MetadataCostly |
Windows 10 20H1 y versiones posteriores: Recupera metadatos para objetos de rendimiento costosos . |
OLD_MetadataCostly |
Windows 10 20H1 y versiones posteriores: Recupera metadatos para objetos de rendimiento V1costosos. |
Para más información sobre el formato de los datos de rendimiento que devuelve el Registro, consulte Formato de datos de rendimiento.
Para obtener un ejemplo que obtiene los nombres y descripciones de los contadores registrados en el equipo, vea Recuperar nombres de contadores y texto de ayuda.
Para obtener un ejemplo que tenga acceso a los componentes de los datos de rendimiento, vea Mostrar los nombres de objeto, instancia y contador.
Para ver un ejemplo que recupera, calcula e imprime valores de contador, vea Recuperar datos de contador y calcular valores de contador.
Colección de metadatos
Windows 10 20H1 agrega compatibilidad con las operaciones de recopilación de solo metadatos. Estas operaciones están diseñadas para su uso al realizar una lista de los objetos y contadores de rendimiento que están disponibles en un equipo.
- La colección solo de metadatos puede ser más rápida que la recopilación de datos completa correspondiente porque puede omitir la recopilación de datos de instancia de objetos que admiten la recopilación solo de metadatos.
- La colección de solo metadatos usa menos memoria que la colección de datos completa correspondiente porque no necesita espacio para devolver datos de instancia de objetos que admiten la colección de solo metadatos.
- La colección solo de metadatos es más completa que la colección de datos completa correspondiente porque devuelve la lista de contadores disponibles aunque no haya ninguna instancia de objetos que admitan la colección solo de metadatos.
Sugerencia
El uso adecuado de la colección de solo metadatos es especialmente importante al recopilar datos de servidores con muchos procesos o subprocesos. Una recopilación normal Global
debe recopilar y devolver información sobre cada proceso y subproceso del sistema, mientras que MetadataGlobal
la recopilación no necesita recopilar información de procesos o subprocesos.
Las funciones auxiliares de datos de rendimiento (PDH) usan automáticamente la colección de solo metadatos al determinar el conjunto de objetos de rendimiento disponibles en un equipo.
La compatibilidad del sistema operativo con las operaciones de solo metadatos se indica mediante un valor distinto de cero en el valor del HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\Supports Metadata
Registro. Si este valor no está presente o se establece 0
en , use una colección de datos completa (por ejemplo Global
, ) en lugar de una colección de solo metadatos (por ejemplo, MetadataGlobal
).
No todos los objetos de rendimiento admiten la colección solo de metadatos. Al solicitar una MetadataGlobal
colección, Windows comprobará cada objeto de rendimiento para obtener compatibilidad de solo metadatos (indicado por un valor distinto de cero en el valor del HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>\Performance\Collect Supports Metadata
Registro). Si el objeto de rendimiento no admite la colección de solo metadatos, Windows realizará una colección de datos normal desde el objeto . Si el objeto de rendimiento admite la colección solo de metadatos, Windows realizará una colección de solo metadatos desde el objeto . Los datos que se le devuelven para una consulta de solo metadatos contendrán PERF_OBJECT_TYPE
bloques de datos completos y de solo metadatos. Los PERF_OBJECT_TYPE
bloques pueden contener o omitir información de instancia, dependiendo de si el bloque se recopiló de un proveedor que realiza o no admite consultas de solo metadatos.
Los datos devueltos de una colección solo de metadatos son los mismos que los datos de una colección normal, excepto:
- El
NumInstances
campo de laPERF_OBJECT_TYPE
estructura seráPERF_METADATA_MULTIPLE_INSTANCES
(lo que indica que el objeto admite 0 o más instancias con nombre) oPERF_METADATA_NO_INSTANCES
(lo que indica que el objeto siempre tiene 1 instancia sin nombre). - No habrá
PERF_INSTANCE_DEFINITION
bloques después de laPERF_OBJECT_TYPE
estructura.
Perflib
La HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib
clave del Registro admite varios DWORD
valores relacionados con la recopilación de contadores de rendimiento.
Normalmente, estos deben no establecerse para el comportamiento predeterminado, pero un administrador puede configurarlos según sea necesario para escenarios específicos.
-
Configuration Flags
: el valor predeterminado es 0. Puede establecerse en una combinación de las marcas siguientes para habilitar el comportamiento especial:-
0x01
: no pruebe los complementos para detectar errores de alineación del búfer de datos. De forma predeterminada, el sistema valida la alineación del búfer de los complementos. -
0x02
: no deshabilite automáticamente los complementos. De forma predeterminada, el sistema deshabilita los complementos que se bloquean o presentan un comportamiento incorrecto. -
0x04
: no valide la integridad del búfer del complemento. De forma predeterminada, el sistema comprueba si se superan los búferes de complementos. -
0x08
: no compruebe si hay tiempos de espera del complemento. De forma predeterminada, el sistema comprueba si el complemento se bloquea.
-
-
Disable Performance Counters
: el valor predeterminado es 0. Si se establece en 1, la colección de contadores de rendimiento V1 se deshabilitará para el sistema. -
ExtCounterTestLevel
: el valor predeterminado es 4. Controla la cantidad de validación que realiza el sistema para protegerse frente al comportamiento incorrecto del complemento. Para obtener información detallada, veaPM_COLLECT_PROC
.