2009-06-25 11 views
11

He heredado el código que realiza numerosas llamadas WMI remotas. Cuando paro repetidamente la ejecución y miro la pila de llamadas, casi siempre aparece en una llamada ManagementScope.Connect(). Parece que se hace una nueva conexión con cada consulta WQL.¿Cómo puedo mejorar el rendimiento de WMI en .NET?

A pesar de la prueba y error limitados, aún no he encontrado grandes ganancias para mejorar el rendimiento de las llamadas WMI.

He intentado almacenar en caché los resultados anteriores, reutilizando las conexiones y evitando el temido "select *". Estos no me han dado las mejoras de rendimiento que me gustaría. Estoy interesado en comprender el impacto del entorno en el rendimiento de WMI, pero el código debe ejecutarse en una amplia variedad de entornos que probablemente estén fuera de mi control.

En caso afirmativo, ¿qué es lo que se debe y no se debe al acceso WMI orientado al rendimiento en .NET?

+0

¿Está realizando múltiples llamadas a la misma máquina o a muchas máquinas? Si esto último, ¿ha considerado multi-threading? – serialhobbyist

+0

Por ahora es la misma máquina; el código es para instalaciones remotas automáticas. El código primero determina qué dependencias ya se han instalado, consulta el sistema operativo (determinando cosas como la arquitectura del procesador, el directorio del sistema, el directorio de archivos de programa, la versión del sistema operativo, etc.); hace esto para configurar la instalación, luego usa WMI para iniciar y monitorear la instalación. Se ha solicitado una función para permitir que estos se pongan en cola y se ejecuten en paralelo (por ejemplo, 5 a la vez). Buena sugerencia. – devgeezer

+0

Ah-hah. He hecho algo muy similar en vbscript. El mío fue desagradable y doloroso. Te deseo lo mejor. – serialhobbyist

Respuesta

6
No

mi área de especialización, pero esto podría ser de alguna ayuda:

WMI: Improving your WMI application performance in fan-out scenario

"En este blog, voy a hablar de tres maneras diferentes de conectarse a un equipo remoto mediante WMI para realizar múltiples Las operaciones de WMI y sus diferencias de rendimiento ".

+0

Gracias por el excelente contenido. Mi publicación original indicó que intenté "reutilizar conexiones" como indica la publicación del blog vinculado. Hice algunos otros experimentos y obtuve mejoras significativas que planeo escribir para el beneficio de todos. Sospecho que hay ciertas propiedades en los objetos .NET que cuando se configuran provocan que las operaciones posteriores se vuelvan a conectar. Planeo escribir esto pronto. Tiene sentido que todo lo que se aplica al acceso DCOM WMI probablemente también se aplique a las clases .NET también. ¡Gracias! – devgeezer

+2

@Devgeezer ¿cómo hiciste tus mejoras en .NET? ¿Escribiste un contenedor? – JSC

+0

@Devgeezer Sí, estoy interesado en sus mejoras de WMI también ... – LamonteCristo

Cuestiones relacionadas