[Martin Li has provided today's post]

The task sequence (TS) feature was introduced in Configuration Manger 2007 to enable Operating System deployment scenarios. As a good "side effect", it also provides a convenient mechanism for administrators to perform a series of arbitrary tasks on selected client computers, with reporting and logging support. Therefore, many administrators utilize TS to deploy massive applications, software updates, and other custom tasks that fulfill their specific business requirements.

When you work with a very large task sequence using the Admin Console TS editor, there might be high memory pressure on the WMI instance hosting the SMS provider. Depending on the size and complexity of the TS, you might encounter the following error while saving a task sequence:

 

You might also find the error 0x80041006 in theTaskSequenceProvider.log, which means: WBEM_E_OUT_OF_MEMORY.

The TS editor does not save the task sequence to the site database directly; instead, it initiates a WMI call to the SMS Provider, which will then write the data to the site database. For a very large and complex task sequence, the WMI call can cause the WMI process hosting the TaskSequenceProvider to exceed its memory quota. When this occurs, the out-of-memory error is returned to the TS editor which displays the above dialog.

One way to prevent this issue is to adjust the memory quota of the WMI Provider, namely the MemoryPerHost and MemoryAllHosts properties of the __ProviderHostQuotaConfiguration configuration class under the root namespace.

  • MemoryPerHost defines the amount of private memory (in bytes) that can be held by each host process.
  • MemoryAllHosts defines the combined amount of private memory (in bytes) that can be held by all host processes.

More information can be found in this blog article by Mark Ghazai on the definitions of these quotas and how to adjust them using wbemtest.exe.

 

On the Windows Server 2008 R2 site server in our lab, the default MemoryPerHost value is 536870912 (512MB) and MemoryAllHosts is 1073741824 (1GB). The default values might be different on your SMS Provider server.

How much you should increase the quota depends on your specific situation. For example, take into consideration the TS size and complexity, your existing WMI memory load excluding the SMS Provider, and the available physical memory on your server. As memory resources are limited on a given server system, the quota cannot be set infinitely high. You should only increase the quota when necessary.

You can use the Task Manager or Performance Monitor (perfmon) to measure the memory usage (private bytes) of WMI processes. There are usually multiple WMI provider host processes (WmiPrvSE.exe) running on each system. You can find out which WMI process hosts the TaskSequenceProvider by running "listdlls.exe -d TaskSequenceProvider.dll".

Besides adjusting the WMI provider quota, also consider reducing the size of the task sequence. There is a 4-Megabyte (MB) limit on the task sequence file size, documented in http://technet.microsoft.com/en-us/library/bb932192.aspx.

--Martin Li

This posting is provided "AS IS" with no warranties, and confers no rights.