A quick tidbit on tweaking the WMI Provider Service (WMIPRVSE.EXE). If you’re experiencing issues about performance of this service and failures in particular “Out of Memory” errors when certain WMI-related tasks are running. Within the WMI System Classes there is a configuration class for host provider processes. The name of this class is _ProviderHostQuotaConfiguration. This class allows limits to be set on host process usage of system resources. The different properties available are:
- ThreadsPerHost: Defines the number of threads owned by any one host
- HandlesPerHost: Defines the number of kernel object handles each host may have
- ProcessLimitAllHosts: Defines the total number of host processes that can be executing concurrently
- MemoryPerHost: Defines the amount of private memory that can be held by each host
- MemoryAllHosts: Defines the combined amount of private memory (in bytes) that can be held by all hosts
When the WMI Provider service reaches its quota limit, WMI queries that are being handled by that instance of WMIPRVSE.EXE will most likely fail. However, there are applications like System Center that may require more memory or handles for the process. These quotas are configurable, however – do not modify these quotas for the sake of modifying them! If the WMIPRVSE.EXE process is actually leaking handles or memory, modifying the quota will only delay the issue from occurring, not eliminate it. In instances such as these, normal leak troubleshooting must be performed to identify the root cause.