为什么chkdsk使用90%的RAM?


24

当我建造新计算机时,我将旧计算机交给了急需升级的父母,在清除了其中的所有内容之后,只剩下了操作系统和一些程序。在开始无法加载Windows之前,它工作了一段时间了(它会卡住)。在研究了这种行为并四处询问之后,我认为这可能是故障的硬盘驱动器,因此我将其拔出并将其插入到自己的计算机上以在其上运行chkdsk(我最初是这样做来尝试引导至该驱动器,但是由于我的计算机设置了RAID,并且Windows安装没有RAID驱动程序,因此我只是启动到自己的Windows 7安装并在其中运行chkdsk)。

我上周五晚上做了这个,自那时以来一直在运行(到目前为止已经有6天了)。我并不感到惊讶,因为它可能很慢,它是1 TB硬盘,而Western Digital则是“绿色”硬盘,因此无论如何它都可能以较低的RPM运行。我确实看到它取得了进步,所以我知道它没有卡住,并且硬盘指示灯一直在我的计算机上一直亮着,除了通过网络和网络共享文件以外,我还没有做过很多其他事情浏览,而这一直在运行。

我的计算机有16 GB的RAM,并且正在运行Windows 7 Pro x64。为什么chkdsk占了90%?它保持稳定的水平,并且已经连续数天保持在90%到91%之间,因为它不断释放和填充内存。CPU使用率非常低(我期望这是非常I / O繁重的操作)。

看起来没有什么坏事发生,但我很好奇。为什么chkdsk占用了这么多内存?我至少感到高兴的是,它似乎可以智能地执行此操作,因为它一直保持较高的级别,而没有开始通过分页来破坏主HDD。

有人知道吗?这正常吗?

Answers:


19

如果已经运行了几天,我假设您已经运行chkdsk了该/r标志。

在Windows 7中,使用那么多的RAM是正常的。 资源

文件系统团队立即开始调查此问题。[...] [F]从他们的角度来看,内存使用是设计使然的,并且是此情况下Windows 7的特定更改(/ r标志获取了排他锁并修复了磁盘,因此我们的假设是您确实希望在机器上进行更多操作之前要修复的磁盘[...]。


我正在使用GUI,但是我确实选中了该复选框以扫描并尝试修复坏扇区,这是等效的。感谢您的链接!
本·理查兹

不只是Windows 7;Windows 2008 R2也进入这种不可想象的状态。我关闭了一个磁盘进行检查,而chkdsk 绝对需要为该单个磁盘消耗20GB的RAM,并减慢服务器的其余部分的运行速度。没错,20GB的内存。
icelava 2012年

@icelava:考虑到2008 R2是Windows 7代码库的延续,这并不奇怪。这可能也会影响所有较新的操作系统。
afrazier 2012年

我检查了没有/ r(或任何其他)开关的外部2TB NTFS磁盘,它仍然消耗了几乎所有RAM(我有5 GB)。Windows 7 64位。
大卫·巴拉西奇(DavidBalažic)2012年

有趣。我只是在1.5 TB的磁盘上运行它,而在8 GB的系统上它甚至没有达到1 GB。我希望只读检查仅使用所需的RAM。
afrazier 2012年

8

目前,我CHKDSK /r在Seagate 1TB SATA 3GB硬盘上运行-Windows 7 x64 Ultimate,CHKDSK占用了32GB RAM中的31GB。但是,如果您加载诸如After Effects之类的其他程序,则CHKDSK会释放RAM以使该程序运行良好。


5

如果您有4 GB以上的RAM,则可以使用chkdsk 32位版本将chkdsk RAM的使用限制为4 GB。可以在C:\ Windows \ SysWow64 \ chkdsk.exe中找到

这可能是一个优点,因为其他已经加载的程序将不会交换到磁盘,并且磁盘缓存不会被清空。因此,与其他程序并行运行chkdsk不会损害其他程序的性能,除非它们使用相同的磁盘。


大提示!我的开发机有48GB的容量,原因是我注意到新进程的性能大大下降(而且作为开发人员,新进程非常频繁地启动)chkdsk,这是因为它在后台运行,几乎消耗了所有内存。这节省了一天;)
Abel

3

如前所述,这是Windows 7中的设计。从Windows 8开始,“设计”已修复,现在chkdsk使用的RAM更少。如果要使用Win7方式使用所有RAM来提高性能chkdsk,请使用参数运行/perf

/ perf 仅限于NTFS :(必须与“ / scan”一起使用)使用更多的系统资源来尽快完成扫描。这可能会对系统上运行的其他任务产生负面的性能影响。


2

这似乎是设计使然。未使用的RAM是浪费的资源。当几乎可以根据需要立即重新利用内存时,没有任何理由可以最大限度地减少内存使用并保持RAM处于“保留”状态。Windows 8将ram用于任何事情,而不是让它闲置。也许这种哲学可以追溯到Windows 7并涉及CHKDSK。我不知道CHKDSK从高RAM使用量中能获得什么好处,但我愿意相信这样做会有好处。我很久以前就了解到,仅仅因为我不理解,并不意味着没有充分的理由。只要其他程序需要内存,它的内存使用量就会减少,这不是问题。


2
未使用的Ram只会被浪费,直到被其他需要它的程序使用为止。如果您消耗了所有RAM,然后又要启动另一个程序,则只是将加载时间增加了几个数量级,因为首先必须将所有的RAM中的东西冲洗到磁盘上,这很慢。如果没有引起任何问题,没人会注意到这一问题。始终保留用于启动新进程的RAM是一个好主意。我想知道谁是个绝妙的主意,那就是消耗掉所有RAM。
奥尔塔2015年

2
某些程序(例如VMware)将拒绝启动VM,除非有足够的可用RAM(它不会尝试消耗RAM,它只是在没有尝试的情况下放弃了,这意味着chkdsk甚至没有机会释放)。杀死chkdsk具有潜在的破坏作用,因此您的选择是1)等待一段不合理的时间,或者2)检查被检查驱动器上的数据丢失的风险。是的,微软。
aggregate116​​6877

0

这是一个错误。我使用过多的内存使机器崩溃,并且内存为8GB,交换文件为4GB。绝不可能发生。他们可以称其为“设计使然”,但这毫无意义。显然这是一个错误。chkdsk程序在ram中存储大量数据没有唯一有效的依据。


2
该站点的“问答”格式保留了问题的答案。这篇文章实际上是评论而不是答案。您可以随时对自己的帖子发表评论,一旦您拥有足够的声誉,就可以对任何帖子发表评论。非答案往往会吸引人们投票,并可能被删除。
fixer1234

我认为这是对发帖人提出的问题的答案,因此是解决方案,而不是评论。
变态
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.