Service Host SysMain, previously known as Superfetch, is a caching service that preloads boot files and commonly used programs into the RAM to improve load times.
SysMain is supposed to improve system performance, and normally it does. But ironically enough, it can sometimes malfunction and worsen performance via high disk, memory, and CPU usage.
In the article below, we’ve detailed the reasons for this and how to resolve the SysMain / Superfetch High Disk Usage issue.
What is Service Host SysMain (Superfetch)
As stated, SysMain is a Windows feature that attempts to reduce load times. The way it does this is by analyzing application usage patterns and timing.
For instance, let’s say you power up your laptop in the morning and usually launch Chrome, Outlook, Spotify, and Discord. Over time, SysMain not only learns what programs you run most often but also the timing and order. Using this info, it preloads the applications into the Standby Memory.
Standby Memory contains cached data that isn’t actively in use. You may be worried that background programs are occupying the memory and affecting system performance. But this is not the case. As this memory is marked at low priority, if the memory is required for something else, it will be given up.
To sum it up, Service Host SysMain preloads frequently used programs into cached memory without affecting system performance. At least, when it’s working as intended anyway.
Why is SysMain Using So Much Disk CPU Memory
When analyzing program usage patterns, SysMain will sometimes overdo it and overtax the HDD. In some cases, the PC basically becomes unusable for the first 10-15 minutes after booting because it attempts to load too many programs at once.
Other reasons for high resource usage include running an application with faulty backend code, as addressed by Microsoft, or attempting to preload very large files (AAA game files, for instance).
How to Fix Service Host SysMain High Disk Usage
Ideally, you could upgrade your RAM or switch to an SSD to resolve this issue. But we realize this advice isn’t very practical. Instead, we recommend that you turn off the SysMain service.
Disable SysMain from Services
For most users, disabling SysMain via the Services utility will be most intuitive; so here are the steps to do so:
- Press Win + R and type
services.msc
- Press Enter.
- Scroll down and double-click SysMain.
- Click on Stop, set the startup type to Disabled, and press OK.
- If you wish to enable it later, start the service, set the startup type to Automatic, and apply the changes.
Disable SysMain Using Registry Editor
It’s always a good idea to back up the registry before modifying anything. With that said, here’s how to disable Service Host SysMain using the Registry Editor:
- Press Windows + R, type
regedit
, and press Enter. - Navigate to:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
. - Double-click the EnablePrefetcher or EnableSuperfetch key.
- Enter 0 as the new value data and press OK. This will disable the service.
- If you wish to change it back later, repeat the same steps but change the value to 3.
Modify SysMain via Command Line
If the previous methods didn’t work, you should try the command line approach. You can modify SysMain via Powershell or CMD as you prefer.
Using CMD
Here’s how to enable/disable Service Host SysMain via CMD:
- Press Win + R, type
cmd
, and press CTRL + Shift + Enter. - To disable it, execute the following command:
sc config sysmain start=disabled & sc stop sysmain
- To ensure it’s disabled, you can check the service status with the following command:
sc queryex sysmain
- If you wish to enable it later, execute the following command:
sc config sysmain start=auto & sc start sysmain
Using Powershell
Here’s how to enable/disable Service Host SysMain via Powershell:
- Press Win + R, type
powershell
, and press CTRL + Shift + Enter. - To disable it, execute the following commands:
stop-service -name sysmain
set-service -name sysmain -startuptype disabled - To ensure it’s disabled, execute the following command:
Get-Service -Name sysmain
- If you wish to enable it later, execute the following command:
set-service -name sysmain -startuptype automatic -status running
How to Fix Service Host SysMain High CPU Usage?
The solutions listed in the guide above will be helpful to resolve SysMain high CPU usage as well. But in addition to that, we also recommend disabling BITS and performing Windows Update.
Is It Safe to Disable Service Host SysMain? Should I Disable It?
SysMain is only necessary for optimization. Even without this, Windows will run completely fine. The only difference you may notice is that the boot time and application responsiveness might change slightly.
In most cases, SysMain will do its job quietly in the background and improve system performance overall. As such, it’s best not to disable it unless you have an actual reason to.
Of course, if you’re on an SSD, or SysMain is causing high disk usage, or something similar, those are good reasons to disable it.
Is Service Host SysMain a Virus?
Service Host SysMain is a legitimate Windows service. If SysMain is hogging an excessive amount of resources, it’s understandable that users may mistake it for a virus. But the actual reason for high resource usage is actually application conflict or malfunction, as we’ve discussed in the article above.