25

When I built my new computer, I gave my old one to my parents who were in dire need of an upgrade, after cleaning everything out of it, of course, leaving just the OS and a few programs. It worked fine for a while, before it started to fail to load Windows (it would just get stuck). After investigating this behavior and asking around, I decided that it might be a failing hard drive, so I pulled it out and plugged it into my own computer to run chkdsk on it (I initially did this to try and boot to the drive, but since my computer is set up with RAID and that Windows installation didn't have RAID drivers, I just booted into my own Windows 7 installation and ran chkdsk on it).

I did this last Friday evening, and it's been running since then (which makes it about 6 days so far). I am not surprised since it can be slow, it's a 1 TB hard drive, and a Western Digital "green" one at that, so it's likely running at a slower RPM anyway. I do see it make progress, so I know it's not stuck, and the hard drive light has been perpetually on, on my computer, which I haven't used for much of anything else, other than sharing files over the network and light web browsing, while this has been running.

My computer has 16 GB of RAM, and is running Windows 7 Pro x64. Why does chkdsk take up 90% of that? It's holding that level steady, and has been for days, going between 90% and 91%, as it frees and fills memory constantly. CPU usage is very low (which I expect since this is a very I/O heavy operation).

It doesn't look like anything bad is going on, but I am curious. Why is chkdsk taking up so much memory? I am at least glad that it seems to be doing this intelligently, as it's maintaining a high level without starting to thrash the main HDD by paging.

Does anyone know? Is this normal?

6 Answers 6

20

If it's been running for several days, I'm assuming that you ran chkdsk with the /r flag.

With Windows 7, using that much RAM is normal. Source

The file system team immediately began to look into the issue. [...][F]rom their perspective the memory usage was by design and was a specific Windows 7 change for this scenario (the /r flag grabs an exclusive lock and repairs a disk and so our assumption is you'd really like the disk to be fixed before you do more stuff on the machine[...]).

6
  • I am using the GUI, but I did check the checkbox to scan for and attempt repair of bad sectors, which is the equivalent. Thanks for the link! Commented Aug 26, 2011 at 1:42
  • It's not just Windows 7; Windows 2008 R2 gets into this unimaginable state as well. I bring down a single disk for checking, and chkdsk absolutely needed to consume 20GB of RAM for that single disk and slowing the rest of the server down. That is not a mistake, 20GB of memory.
    – icelava
    Commented Mar 9, 2012 at 8:02
  • @icelava: Considering that 2008 R2 is a continuation of the Windows 7 code base, that's not surprising. This will probably affect all newer OSes as well.
    – afrazier
    Commented Mar 9, 2012 at 14:52
  • I checked my external 2TB NTFS disk without the /r (or any other) switches and it still consumed almost all RAM (I have 5 GB). Windows 7 64bit. Commented Aug 30, 2012 at 11:19
  • 2
    Its a crap design when the computer becomes unusable and message boxes can't even allocate resources to show messages. Why fill RAM completely if you don't have the CPU power to process the data as at least as fast as you can fill it. Sounds more like a bug.
    – crokusek
    Commented Oct 9, 2014 at 7:47
8

I am running CHKDSK /r on a Seagate 1TB SATA 3GBs drive at the moment - Windows 7 x64 Ultimate, CHKDSK is consuming 31GB of my 32GB RAM. However, if you load up another program such as After Effects, CHKDSK releases RAM to allow the program to run quite well.

6

If you have more than 4 GB RAM then you can limit chkdsk RAM usage to 4 GB by using the chkdsk 32bit version. It is found in C:\Windows\SysWow64\chkdsk.exe

This may be an advantage, because other already loaded programs will not be swapped to disk and disk cache not be emptied. So running chkdsk in parallel with other programs does not hurt the other programs performance, except if they use the same disk.

1
  • Great tip! My dev machine has 48GB for a reason and I noticed a big drop in performance with new processes (and as a developer, new processes are started very, very often).due to running chkdsk in the background, consuming almost all of it. This saved the day ;)
    – Abel
    Commented Jan 16, 2016 at 23:54
3

As already posted, this is by design in Windows 7. The "design" is fixed starting with Windows 8 and now chkdsk uses less RAM. If you want the Win7 way to use all RAM to improve performance run chkdsk with the parameter /perf.

/perf NTFS only: (Must be used with "/scan") Uses more system resources to complete a scan as fast as possible. This may have a negative performance impact on other tasks running on the system.

2

This appears to be by design. Unused RAM is a wasted resource. There is no reason whatsoever to minimize ram use and keep RAM in "reserve" when it can be almost instantly re-purposed as needed. Windows 8 will use ram for anything rather than let it sit idle. Perhaps this philosophy started back in Windows 7 and involved CHKDSK. I don't know what benefit CHKDSK obtains from high RAM use, but I am willing to believe there is a benefit. I learned long ago that just because I don't understand, doesn't mean there isn't a good reason. As long as its memory use decreases as other programs need memory, this is not a problem.

2
  • 2
    Unused Ram is only wasted until it gets used by some other program that needs it. If you consume all of RAM and then want to start another program, you've just increased load time by orders of magnitudes because first you have to flush all that stuff in ram out to the disk which is painfully slow. No one would have noticed this issue if this didn't cause a problem. Always having RAM in reserve for starting new processes is a good idea. I'd like to know who's brilliant idea it was to consume all RAM.
    – horta
    Commented Jun 8, 2015 at 0:15
  • 2
    Some programs, such as VMware, will refuse to start VMs unless a sufficient amount of RAM is available (it doesn't attempt to consume RAM, it simply gives up without trying, meaning chkdsk doesn't even have the opportunity to release). Killing chkdsk has potentially damaging effects, so your choices are 1) wait an unreasonable amount of time or 2) risk data loss on the drive being checked. Yay Microsoft. Commented Jul 30, 2016 at 17:00
1

It's a bug. I've had this crash my machine by using too much memory, and that's with 8GB ram and a 4GB swap file. There's no way that should be happening. They can call it 'by design', but that's meaningless. It is clearly a bug. There is no single valid basis for a chkdsk program to store that much data in ram.

2
  • 3
    The site's Q&A format reserves answers for solutions to the question. This post is really a comment rather than an answer. You can always comment on your own posts, and once you have sufficient reputation you will be able to comment on any post. Non-answers tend to attract downvotes and are subject to deletion.
    – fixer1234
    Commented Nov 29, 2015 at 1:43
  • 1
    In my view it is an answer to the question that the Poster asked and is therefore a solution, not a comment. Commented Nov 30, 2015 at 0:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .