40

There is an observation to be made for Windows 10 on my laptop running with 24G memory available, and 2.5G used. There is no 'memory pressure'. Other questions have looked at memory consumption (which isn't the problem here). In all the related questions here and elsewhere, I havn't been able to find an adequate explanation to the issue of this exccessive cpu utilization over the last month or two after one of the Windows 10 updates.

I can accept that there is value in this service or process, but to run continually, and to use additional cpu resources, and as a consequence, use battery power less efficiently, that is the issue I am trying to resolve.

In some article on this site, it was suggested that I turn off SuperFetch, and set a registry entry for PrefetchParameters to 0. I did both and performed a reboot.

I reboot the machine, turn off screen saver, and start the task manager. After a few minutes, the service labeled as 'System and compressed memory' starts taking 5% of my cpu, consistently. My base cpu utilization is maybe 1%, which keeps the fan low. But when the 'system and compressed memory' service runs at the 5%, the fans ramp up. And just keeps running.

Sillyness. Why does that service need to be running consistently like that with no memory pressure? Any additional mechanisms I can try for turning it off or determining what it is actually doing? Are there logs file entries somewhere? Or an in-depth diagnostic tool?

how-to-disable-windows-10-memory-compression -- no real answers here

windows-10-system-process-taking-massive-amounts-of-ram

17993-windows-10-memory-compression

desktop-build-10525-and-windows-10-memory

www.techish.net/system-and-compressed-memory/

windows-10-build-1511-overheating-cpu-fan-always

Windows Performance Recorder - now need a link for info on how to interpret the info

scrub maintenance

  • 1
    Yeah, I have never understood why Windows uses the pagefile when there is plenty of memory, disabling the pagefile may solve your issue, I would like to know. – Moab Jan 02 '16 at 00:42
  • 1
  • @Moab: The perception that Windows "uses the pagefile when there is plenty of memory" comes from a mistaken label on Windows XP's task manager - they labeled the graphs "PF usage" when it should have been "commit charge". If you user PerfMon to examine the actual pagefile usage you'll generally find it far smaller than expected. – Jamie Hanrahan Jan 02 '16 at 11:07
  • 2
    capture a trace of the CPU usage. Install the WPT from Win10 SDK: dev.windows.com/en-us/downloads/windows-10-sdk, run WPRUI.exe, select CPU, Disk, VirtualAlloc, ResidentSet and capture 1-2 minute of the SYSTEM usage and save it into a ETL file. Zip the ETL + the NGENPDB folder into a 7z/RAR file, upload the compressed file to OneDrive, create a share link and post the share link here – magicandre1981 Jan 02 '16 at 16:56
  • @magicandre1981: thank you for offering a possible methodology. The file can be found at http://www.oneunified.net/files/rpb.20160102.WPR.7z . If you see something, would you be able to post your methodology? I'm sure lots of other posts around could make use of the technique. ... again thanx. – Raymond Burkholder Jan 02 '16 at 19:29
  • For me, it was a process restarting over and over. Prey was running/killing multiple times per second. – Mateen Ulhaq Sep 08 '16 at 00:15

4 Answers4

30

Analyzing the ETL file with WPA shows, that the CPU usage doesn't come from system memory compression. It comes from ntoskrnl.exe!MiScrubMemoryWorker:

Line #, DPC/ISR, Process, Stack Tag, Stack, Count, TimeStamp (s), % Weight
8, , , ,    |    |    |- ntoskrnl.exe!MiScrubMemoryWorker, 79667, , 12,45
9, , , ,    |    |    |    ntoskrnl.exe!MiScrubNode, 79667, , 12,45
10, , , ,   |    |    |    ntoskrnl.exe!MiScrubNodeLargePages, 79667, , 12,45
11, , , ,   |    |    |    ntoskrnl.exe!MiScrubNodeLargePageList, 79667, , 12,45
12, , , ,   |    |    |    |- ntoskrnl.exe!MiScrubPage, 79663, , 12,45
13, , , ,   |    |    |    |    |- ntoskrnl.exe!RtlScrubMemory, 79653, , 12,45
14, , , ,   |    |    |    |    |    |- ntoskrnl.exe!RtlpGenericRandomPatternWorker, 38549, , 6,02

This is a function to test the memory for errors by filling / reading some patterns (ntoskrnl.exe!RtlpGenericRandomPatternWorker).

This is by design and happens when the idle maintenance task kicks up when your device is idle.

magicandre1981
  • 98,168
  • 30
  • 181
  • 248
  • Thank you for that. That sheds some light on the activity. Now that you mention the word idle, two comments can be made. 1) The ETI file you evaluated was made while I was active on the console, and the cpu was around 10% to 15% for 'system and compressed memory', and finally ended. So I was able to capture some kind of activity. And you've evaluated it to idle maintenance. 2) in the next comment.... – Raymond Burkholder Jan 02 '16 at 20:31
  • As I write this, 'system and compressed memory' is running at 0.1%. After I don't do anything for a while, 'system and compressed memory' will go to 5%. If I collect ETI from the time I stop doing anything, till the time (several minutes later) it goes to 5%, can the ETI file be evaluated at specific time frames to determine activity at that later time point? [because the 5% is at idle time, and when I move the mouse or touch the keyboard, the activity stops, so I can't catch it manually].
  • – Raymond Burkholder Jan 02 '16 at 20:33
  • I might be able to answer my own question. Am watching the ETL with WPA link. – Raymond Burkholder Jan 02 '16 at 20:43
  • I was able to confirm that the same thing was happening at other times. Thank you for mentioning the tool! I am just going to let things run now for a while and see if it finally finishes. – Raymond Burkholder Jan 02 '16 at 23:28
  • 11
    For closure, on Win 10, I went to:

    Start->Control Panel->Administrative Tools->Task Scheduler

    Task Scheduler Library->Microsoft->Windows->MemoryDiagnostic

    There are two line items. Running of the task may be dependent upon log events. I'm not sure if they just have to exist, or if they trigger upon entry into the log. I disabled the RunFullMemoryDiagnosticEntry. I no longer see the 5% to 12% utilization after a few minutes delay. In the properties of the Task, on the settings tab, in may be possible to adjust things to not run very often. .... testing for another time.

    – Raymond Burkholder Jan 03 '16 at 04:01
  • 2
    nice to hear that it solves your issue. – magicandre1981 Jan 03 '16 at 08:04
  • 1
    To add to the comment, I had 2 tasks defined - RunFullMemoryDiagnostic and ProcessMemoryDiagnosticEvents, the most important is the second one. It had 4 triggers enabled - "Log: System, Source: Application Popup", "Log: Application, Source: Application Error" and two remaining. Disabling the 2 triggers solved my problem, issue was that some apps I'm developing write to Event Log errors and that causes memory checks. Two remaining triggers are completely system related so it's better to not to disable them – zihotki Jun 06 '16 at 13:02
  • 4
    ok a troll downvoted it. Yes, xperf/WPR/WPA is Level 500 expert stuff so not for you uneducated idiotic troll facepalm – magicandre1981 Jun 18 '16 at 07:06
  • @RaymondBurkholder Aaaaa how quiet it runs now. It ran with high cpu for a couple of years and cut down CPU lifetime by 30%, but not anymore. Every time I leave my laptop, my fan starts to rotate after being idle a couple of minutes Thanks! – Legends Feb 07 '19 at 23:36