-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Critical] Windows not release unused standby list even cached size is full #6
Comments
Other may helpful link: Standby, active and priority: Clear standby memory API: |
Update:
At night, there are only 4.2 GB is cached, and vmdk takes 388 MB, is the maximum one. Depending on what are running on PC, settings need to adjust for example:
I here collect information every day to see if there's valuable CacheSet and vmdk result.
Conclusion:After VM boot, soon vmdk in standby will increase to how many VM RAM assigned. The maximum size limit is not matter, these cache is persistent. VMWare have no related document about vmdk and standby RAM. So the simplest thing I can do is check cached size,
Use |
I can focus on check and calculate if I need to clean standby before prefetch. Update: No, the command will show a dialog window and no method to skip show dialog. |
A test shows more detail about the kernel cache mechanism #7 |
Interesting information that shows VMWare may abuse host I/O cache: Reply by Testerhood:
|
Fun resultNo giant vmdk appears in RAMMap file summary, This setting is undocumented, I search on VMWare doucment but nothing found. ConclusionCertain application may create giant file mapping in RAM. Clear standby list is a "workaround", but not a fix. |
Since VMWare problem is solved, If you need this patch to deal with such situation, reply or create a new issue: |
Start from version 2.8, custom tray menu introduced. https://github.com/mhtvsSFrpHdE/prefetch/wiki/Best-practice#clear-standby-list For automation, you may write your own wrapper to monitor OS status, |
Steam client just downloaded a game "the witcher 2",
after that,
m/prefetch
reportTime: 43.58 Sec
every time,even if available RAM is 24.9 GB and cached is 24.8 GB.
That shows, if cached is full, Windows won't free unused cache for new cache content.
The result is low performance. This explained why my Firefox always read from disk:
when Firefox requested cache, the cached space is full.
By use
sysinternals RAMMap\File Summary
, there arepack0.dzip
,en0.w2speech
cached in standby list,
pack0.dzip
is 9.79 GB,en0.w2speech
is 1.01 GB.The computer download and update games whole night.
Until I awake and discover Firefox is slow, I never open that game before.
That shows Windows is extremely stupid to judge what are important cache to keep.
It may just a "first come, first served, until full" simple design.
New cache won't free old cache, this only happens if "in use memory" take that space.
Same situation also happen on running virtual machine,
single vmdk file can take 2~9 GB in stand by list.
Use
sysinternals CacheSet
to change Working set minimum to 1024 KB,and set maximum to 204800 KB,
open a VM still left a 2.37 GB cache in standby list.
In this case, the other thing can try is once discovered standby list space
is not enough to hold all cache content, empty it before start prefetch.
I found this: https://gist.github.com/bitshifter/c87aa396446bbebeab29
it seems there is no API to selective delete cache from standby list, and only empty all?
The text was updated successfully, but these errors were encountered: