How to clear Windows File Cache?

7

3

For testing purposed I need to clear file cache (for example to measure file operation performance).

I found CacheSet from sysinternals, but pressing Clear there doesn't help. A file that I just copied to Nil when copied again do this in a blink of an eye (while the initial operation took significant 2 seconds).

Does it mean that HD has its own caching that can't be canceled or cleared?

Maksee

Posted 2009-12-03T09:18:11.760

Reputation: 413

1Copying a file is not a good way to test your file-cache, the time may vary by file fragmentation and the spot where it is saved. It may also depend on the used file system. – Michael K – 2011-05-18T10:32:30.370

Answers

2

I'm not sure how much relevance this has to your question, but to answer your 2nd part, yes, hard-drives have their own internal hardware cache - usually 2, 8, 16, 32 or recently 64 megabytes.

Aside from that, Windows has a feature called Disk Write Caching which may help you. It can be enabled/disabled on a per-drive basis doing the following (directly copied from here):

  1. Right-click My Computer, and then click Properties.
  2. Click the Hardware tab.
  3. Click Device Manager.
  4. Click the plus sign (+) next to the Disk Drives branch to expand it.
  5. Right-click the drive on which you want to enable or disable disk write caching, and then click Properties.
  6. Click the Disk Properties tab.
  7. Click to select or clear the Write Cache Enabled check box as appropriate.
  8. Click OK.

glenneroo

Posted 2009-12-03T09:18:11.760

Reputation: 1 800

4The hard-drive cache has no relation to the windows file cache, disabling it does only decrease the hdd r/w performance. – Michael K – 2011-05-18T10:30:18.127

Agree with Michael K: The hard-drive cache has no relation to the windows file cache, disabling it does only kills the hdd r/w performance – Ultralisk – 2013-12-02T13:27:35.773

2

Here is the easy solution:

Start one (or more) instance(s) of MemAlloc. Allocate an amount of RAM equal with about 80% of total amount of RAM you have installed in your computer. This will force Windows to release the memory it reserved for file caching. Close all MemAlloc instances. Done.

Note: MemAlloc can allocat maximum 2GB of RAM. So, if you have more than 2GB of RAM in your computer, start additional instances of MemAlloc.

Ultralisk

Posted 2009-12-03T09:18:11.760

Reputation: 1 749

3That’s hardly an ideal solution. If you are going to use a kludgy solution like this, then you may as well simply read a large file instead. At least by reading a large file, you only flush the drive cache. Allocating RAM as you suggested has the side-effect of pushing things into the pagefile which will kill performance for quite a while afterward. – Synetech – 2013-12-01T00:38:37.227

He only needs this 'for testing purposes'. I this scenario I don't think he cares much about the swapping issue. Which is not that big anyway. – Ultralisk – 2013-12-02T13:29:00.343

0

I've answered this question on StackOverflow -- you need to open the volume in a certain way.

user541686

Posted 2009-12-03T09:18:11.760

Reputation: 21 330

Your solution is based on undocumented Windows behavior. Some users reported that your solution is not working on all systems. – Ultralisk – 2013-12-02T13:32:01.123

@Altar: Your point...? – user541686 – 2013-12-02T21:05:54.940