System Memory May Run Low With WinSAT Included On A Standard 7 Runtime

 

Some developers may have run into issues when using Enhanced Write Filter (EWF) and Performance Monitoring  on their Windows Embedded Standard 7 or Windows Embedded Standard 7 SP1 devices. Consider the following scenario: 

  • You develop a Windows Embedded Standard 7 or Windows Embedded Standard 7 Service Pack 1 image for your device.
  • You added "Performance Monitoring" package in your answer file using Image Configuration Editor.
  • You added "Enhanced Write Filter with HORM" package in your answer file to protect the system (C:) volume.
  • You deployed your image without executing "winsat prepop".
  •  You enabled EWF for the runtime image.

 In this scenario, you may see the EWF RAM overlay is dramatically consumed when the system becomes idle. The cause for this is that when the system becomes idle, subsequent to the first boot, the WinSAT assessments will run if they were not prepopulated. The assessments include the one for disk, and this consumes the overlay area if EWF is protecting the system drive because the assessment actually writes and reads a file to estimate the I/O performance.

 

To work around this behavior, you can choose one of the following options:

1.   Don't include WinEmb-Diagnostics-Performance (Diagnostics\Performance Monitoring) in your answer file.

This is a configuration level workaround. If the WinEmb-Diagnostics-Performance package is included, it will register the "WinSAT" task under \Microsoft\Windows\Maintenance, and this will start winsat.exe when the system becomes idle, leading to the consumption of the overlay. "schtasks.exe /query /tn "\Microsoft\Windows\Maintenance\WinSAT" /fo LIST /v" command may show you the details of the task.

 

2.   Execute "winsat prepop" before mass deployment.

This is a runtime level workaround, mainly targeting the image mastering phase. You'll find %IdentifierDerivedFromDate% %Component%.Assessment(Prepop).WinSAT.xml under %WINDIR%\performance\winsat\datastore after executing "winsat prepop". By using this method, task scheduler may start winsat.exe as registered, but winsat.exe may not run its full assessment. For more information on configuring WinSAT and pre-populating WinSAT assessments, read the following TechNet article:

Title: Configure Windows System Assessment Tests Scores

URL: https://technet.microsoft.com/en-us/library/dd744241(WS.10).aspx

 

3.   Execute "schtasks.exe /DELETE /TN "\Microsoft\Windows\Maintenance\WinSAT" /F" from an elevated command prompt.

This is the most straightforward way to prevent the system from running WinSAT. This can be executed at any time. Sysprep won't re-register the WinSAT task.

 Hope this info is useful to you.

 -        Kazuhiko

This blog article is written by Kazuhiko Sugimoto, one of the Embedded Escalation Engineers in Japan.