Training
Module
Explore the Windows servicing model - Training
This module examines the Windows client service module and describes the available methods for applying Windows updates.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
The Service Host (svchost.exe) is a shared-service process that serves as a shell for loading services from DLL files. Services are organized into related host groups, and each group runs inside a different instance of the Service Host process. In this way, a problem in one instance doesn't affect other instances. Service Host groups are determined by combining the services with matching security requirements. For example:
Beginning with Windows 10 Creators Update (version 1703), services that were previously grouped will instead be separated - each will run in its own SvcHost process. This change is automatic for systems with more than 3.5 GB of RAM running the Client Desktop SKU. On systems with 3.5 GB or less RAM, we'll continue to group services into a shared SvcHost process.
Benefits of this design change include:
Try This
To see the refactoring behavior, create a Windows 10 version 1703 VM and configure the memory settings as follows:
- To see grouped processes, set the RAM to 3484 MB or less. Restart the VM and then open Task Manager.
- To see separated processes, set the RAM to 3486 MB or greater. Restart the VM and then open Task Manager.
Refactoring also makes it easier to view running processes in Task Manager. You can look at Task Manager and know exactly which service is using what resources, without having to expand many separate host groups.
For example, here are the running processes displayed in Task Manager in Windows 10 version 1607:
Compare that to the same view of running processes in Windows 10 version 1703:
Some services will continue to be grouped on PCs running with 3.5 GB or higher RAM. For example, the Base Filtering Engine (BFE) and the Windows Firewall (Mpssvc) will be grouped together in a single host group, as will the RPC Endpoint Mapper and Remote Procedure Call services.
If you need to identify services that will continue to be grouped, in addition to seeing them in Task Manager and using command line tools, you can look for the SvcHostSplitDisable value in their respective service keys under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
The default value of 1 prevents the service from being split.
For example, the registry key configuration for BFE is:
Separating services increases the total number of SvcHost instances, which increases memory utilization. (Service grouping provided a modest reduction to the overall resource footprint of the services involved.)
Consider the following example:
Grouped Services (< 3.5 GB) | Split Services (3.5 GB+) |
---|---|
![]() |
![]() |
Note
The above represents the peak observed values.
The total number of service instances and the resulting memory utilization varies depending on activity. Instance counts can typically range from approximately 17-21 for grouped services, and 67-74 for separated services.
Try This
To determine the impact of splitting hosted services on a Windows 10 version 1703 PC, run the following Windows PowerShell cmdlet, before and after toggling the memory settings:
PowerShell
Get-Process SvcHost | Group-Object -Property ProcessName | Format-Table Name, Count, @{n='Mem (KB)';e={'{0:N0}' -f (($_.Group|Measure-Object WorkingSet -Sum).Sum / 1KB)};a='right'} -AutoSize
Training
Module
Explore the Windows servicing model - Training
This module examines the Windows client service module and describes the available methods for applying Windows updates.