Filesystem and storage

EnablePrefetcher and SysMain

Prefetch, Superfetch and the SSD myth

Last updated

Should you disable Prefetch and SysMain on an SSD?

Prefetch records which pages an application touches at startup so Windows can read them in one efficient pass next time. SysMain, formerly Superfetch, uses usage patterns to keep likely-needed data resident in memory. The advice to disable both on SSDs dates from early solid-state drives and is no longer good advice: Windows already adapts its behaviour to the drive type.

Registry location and values

EnablePrefetcher

Location
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Value name
EnablePrefetcher
Type
REG_DWORD
Default
3
ValueWhat it does
0Disabled.
1Application launch prefetching only.
2Boot prefetching only.
3Both. The default.

EnableSuperfetch

Location
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Value name
EnableSuperfetch
Type
REG_DWORD
Default
not present on current builds; superseded by the SysMain service
ValueWhat it does
0Disabled.
3Enabled for boot and applications.

What Windows actually does with this

The prefetcher writes trace files to C:\Windows\Prefetch describing the page access pattern of an application's startup, then uses them to issue larger sequential reads instead of many scattered ones. SysMain extends the idea to memory residency, populating otherwise-idle RAM with data it predicts will be needed.

What it affects

Application and boot launch times, and how idle memory is used. SysMain's memory use is opportunistic -- it releases memory on demand and is not the same as memory being unavailable.

Is it worth changing?

Leave both alone. The SSD argument was that prefetching optimised for seek time, which SSDs do not have, and that the writes cost endurance. Windows detects SSDs and adjusts, the write volume is trivial against modern endurance ratings, and disabling SysMain measurably slows down launching applications you use often. Disable SysMain only if you can point at it in Resource Monitor as the cause of sustained disk or CPU load -- a real but uncommon failure mode.

What can go wrong

Slower application launches. Loss of a mechanism that turns idle RAM into a cache, for no corresponding gain.

How to undo it

Set EnablePrefetcher back to 3, set the SysMain service back to Automatic, and restart.

Create a System Restore Point before editing the registry. Every setting on this page is reversible, but a restore point is the difference between undoing one change and reinstalling Windows.

Which Windows versions this applies to

Windows 10, Windows 11. Superfetch was renamed SysMain in Windows 10 version 1809.

EnablePrefetcher and SysMain: common questions

SysMain is using all my RAM.

That is what it is for. Free RAM does no work. SysMain populates otherwise-unused memory with data it expects to be needed and releases it immediately when an application asks. Task Manager reports it as Standby, not In Use.

Does prefetching wear out my SSD?

The prefetch trace files are small and written infrequently. Against the endurance rating of any modern drive the contribution is not meaningful.

Sources

Does JINSHI Tweaks change this?

This page documents a setting that corresponds to the following toggle in JINSHI PC Tweaks: Disable Prefetch & Superfetch.

The reference above is written to be usable without the product. Everything here can be applied by hand for free. What the application adds is that the change is applied in one pass, a System Restore Point is created first, and each toggle can be reversed individually.

What JINSHI Tweaks changes

Related settings