NTFS压缩如何影响性能?


57

我听说NTFS压缩会由于额外的CPU使用率而降低性能,但是我阅读的报告称,由于减少了磁盘读取,实际上可能会提高性能。NTFS压缩到底如何影响系统性能?

笔记:

  • 我正在运行一台具有5400 RPM硬盘驱动器的笔记本电脑,并且我在其中进行的许多操作都受I / O约束。
  • 该处理器是AMD Phenom II,具有四个以2.0 GHz运行的核心。
  • 使用UltraDefrag定期对系统进行碎片整理。
  • 工作负载是读写混合的,读取发生的次数比写入要多。
  • 要压缩的文件包括个人文档的选定子集(而不是完整的主文件夹)和程序,包括几个(要求不高的)游戏和Visual Studio(往往受I / O约束的频率往往更高)。

12
我认为唯一正确的答案是“在您的系统上对其进行测量”。
Mehrdad

我认为这应该是一个普遍的问题。CPU比内存快。如今。让我们假设。关于演出?不知道,但我也很好奇。
Apache

1
这是什么系统?您有几个核心?如果是cpu密集型操作,相对于要执行的操作的硬盘速度,您是否会多一点cpu?对功耗和温度的影响。数据的可压缩性。读多少,写多少?首先压缩它很慢,但是通过容易测量的数量,回读(取决于)应该更快。
Psycogeek

相关(但略有不同的情况;具体到一个文件夹中有许多图标):superuser.com/questions/38605/...
bwDraco

1
顺便说一句,您可以尝试的是碎片整理。我听说过有关UltimateDefrag的奇迹,但到目前为止,我从未尝试过。(在Diskeeper和PerfectDisk中,我使用后者,因为Diskeeper停止发布新的versios等。)
Apache

Answers:


36

我听说NTFS压缩会由于额外的CPU使用率而降低性能,但是我阅读的报告称,由于减少了磁盘读取,实际上可能会提高性能。

正确。假设您的CPU使用某种压缩算法,可以以C MB / s的速度进行压缩,而以D MB / s的速度进行解压缩,并且硬盘驱动器的写入速度为W,读取速度为R。只要C> W,当写作,只要D> R,您在阅读时就会获得性能提升。在写的情况下,这是一个过分的假设,因为Lempel-Ziv的算法(在软件中实现)具有不确定的压缩率(尽管可以用有限的字典大小来约束)。

NTFS压缩到底如何影响系统性能?

好吧,正是依靠上述不平等。只要您的CPU可以保持高于HDD写入速度的压缩/解压缩速率,您就应该会获得速度上的提升。但是,这确实会对大文件产生影响,大文件可能会遇到严重的碎片(由于算法),或者根本不会被压缩

这可能是由于以下事实:随着压缩的进行,Lempel-Ziv算法变慢了(因为字典继续增长,随着位的进入需要更多的比较)。在Lempel-Ziv算法中,无论文件大小如何,解压缩几乎总是相同的速率(因为只能使用base + offset方案来寻址字典)。

压缩还会影响文件在磁盘上的布局方式。默认情况下,单个“压缩单位”是群集大小的16倍(因此,大多数4 kB群集NTFS文件系统将需要64 kB块来存储文件),但不会增加到64 kB以上。但是,这可能会影响磁盘上的碎片和空间需求。

最后一点,延迟是讨论的另一个有趣的价值。虽然压缩数据的实际时间确实会引入延迟,但是当CPU时钟速度为千兆赫(即每个时钟周期小于1 ns)时,与硬盘驱动器寻道速率相比,引入的延迟可以忽略不计。毫秒级或数百万个时钟周期)。


要实际查看您是否会获得速度提升,可以尝试一些方法。首先是使用基于Lempel-Ziv的压缩/解压缩算法对系统进行基准测试。如果获得良好的结果(即C> W和D> R),则应尝试在磁盘上启用压缩。

从那里开始,您可能想要对实际硬盘性能进行更多基准测试。一个真正重要的基准测试(对于您而言)将是查看游戏的加载速度,并查看Visual Studio项目的编译速度。

TL,DR:对于使用许多需要高吞吐量和低延迟的小文件的文件系统而言,压缩可能是可行的。由于性能和延迟方面的考虑,大文件不会(也不应该)受到影响。


您可以链接任何基于Lempel-Ziv的基于基准的压缩/解压缩算法吗?
2013年

NTFS压缩创建的碎片(修改文件时会添加碎片)将很容易消除任何性能提升。如果您有一个非常可压缩的数据集,并且不会经常修改,并且在压缩后进行了碎片整理,那么它可以是纯收益。压缩后的修改将导致令人讨厌的碎片。回复:基准测试:今天,即使是速度较慢的CPU也能达到LZ的速度。分散问题是迄今为止最大的问题。在典型情况下,优化仅在有限的上下文中有用。选择要非常仔细地压缩NTFS的内容,这将是一个整体的胜利。
乔迪·李·布鲁雄

1
固态硬盘又如何呢?
紫罗兰色长颈鹿

如何测量C,D,W和R?
Geremia

我会为这些抽象“ C> W和D> R”提供一些实际的典型示例?例如,在带有HDD的4核笔记本电脑上压缩“程序文件”和/或“ Windows”是否有益?和固态硬盘?电池消耗会受到很大影响吗?
kxr

7

您的磁盘速度很慢,因此您的问题确实值得。NTFS压缩占用大量处理器,并且针对速度而不是压缩效率进行了调整。

我希望您会看到读操作的(很小)改进。但是,当访问驻留在系统缓存中的文件时,您会受到性能影响,因为每次访问时都必须再次将其解压缩。

您当然会看到由于额外的压缩,写操作将变慢。

在同一NTFS磁盘上复制文件需要解压缩和压缩,因此这些文件将遭受最大的损失。

NTFS压缩还会显着增加碎片,但是对于大多数在“典型”工作负载下的“典型”计算机而言,这不是问题。

许多类型的文件,例如JPEG图像或视频或.zip文件,基本上都是不可压缩的,因此这些文件使用起来会较慢,并且不会节省任何空间。

小于一个磁盘群集(通常为4K)的文件不会压缩,因为没有增益。但是,有时在压缩整个卷时建议使用较小的群集大小。

对于相对静态的卷或文件,建议使用NTFS压缩。绝不建议将其用于系统文件或“用户”文件夹。

但是,由于硬件配置因计算机模型的不同而异,具体取决于磁盘,总线,RAM和CPU,因此只有测试才能说明压缩对计算机模型的确切影响。


5

我在Wikpedia的NTFS条目中对此进行了解释:


NTFS可以使用LZNT1算法(LZ77 [23]的变体)压缩文件。文件以16个群集块压缩。使用4 kB群集,文件将压缩为64 kB块。如果压缩将64 kB的数据减少到60 kB或更小,则NTFS会将不需要的4 kB页视为空的稀疏文件簇-它们不会被写入。这允许不合理的随机访问时间。但是,随着每个64 kB块变为较小的片段,大型可压缩文件变得高度碎片化。[24] [25] Microsoft不建议对超过30 MB的文件进行压缩,因为它会降低性能。[需要引用]

压缩的最佳用途是用于重复的文件,很少写入文件,通常按顺序访问,并且自身不压缩。日志文件是一个理想的示例。压缩小于4 kB或已压缩的文件(例如.zip或.jpg或.avi)可能会使它们变大或变慢。[需要引用]用户应避免压缩.exe和.dll之类的可执行文件(它们可能是分页输入和输出4 kB页)。压缩启动时使用的系统文件,如驱动程序,NTLDR,winload.exe或BOOTMGR,可能会阻止系统正确启动。[26]

尽管对压缩文件的读写访问通常是透明的,但并不总是透明的[27],但Microsoft建议避免对具有漫游配置文件的服务器系统和/或网络共享进行压缩,因为这会给处理器带来相当大的负担。[28]

硬盘空间有限的单用户系统可以受益于小文件的NTFS压缩,压缩范围从4 kB到64 kB或更高。小于900字节左右的文件与目录条目一起存储在MFT中。[29]

计算机中最慢的链接不是CPU,而是硬盘的速度,因此NTFS压缩可以在空间和(通常)速度方面更好地利用有限的慢速存储空间。[30] (这假定压缩文件片段是连续存储的。)


我建议仅对压缩到64KB或更小(即1个)的文件进行压缩。否则,您的文件将包含许多64K或更少的分数。

MyDefrag可以更好地进行碎片整理。


我对UltraDefrag的经验是,它做得不错,比Windows内置的碎片整理程序提供了更完整的碎片整理,但是据我所知,它并不像MyDefrag一样聪明。我正在使用版本6 beta,该版本具有一些错误和未实现的功能,但比以前的版本要快得多。
bwDraco

1

这会使操作变慢。不幸的是,我们无法准确地衡量它将影响您的系统的程度。当压缩的文件打开时,它需要处理器才能解压缩该文件,以便系统可以使用它。完成操作并单击“保存”后,它将使用更多的处理器功能来再次对其进行压缩。但是,只有您可以衡量性能。


4
我认为您错过了问题的全部内容。在花费更长的时间来压缩/解压缩数据与花费更少的时间从磁盘读取数据之间(这是通过读取较少的数据)之间的权衡。因此,不能保证您的主张。当您正在阅读网络文件系统时,可以很容易地获得压缩的一个明显例子就是。对于本地文件系统,它不太清楚,但不能保证采用一种或另一种方式。
jjlin 2012年

@jjlin您有何时更快的示例吗?
加拿大卢克REINSTATE MONICA '04

@Luke假设您的CPU使用某种压缩算法,可以以C MB / s压缩,并以D MB / s解压缩,并且您的硬盘驱动器具有写入速度W和读取速度R。只要C> W,您将获得写入时的性能提升,只要D> R,读取时就可以获得性能提升。
突破

@Luke在较慢的驱动器(例如旧的IDE驱动程序或USB 1.0笔式驱动器)上使用时速度更快。
kurast

-1

凡是在今天看到这种情况的人都应该意识到,就视频游戏而言,是的,即使是定期打补丁的视频,在驱动器或文件夹上启用压缩也可以减少加载时间,即使是在今天的cpus速度较慢的情况下,甚至在ssd的情况下也是如此。多数人没有的最快的磁盘),但是您需要定期进行磁盘碎片整理,我强烈建议您购买完美的磁盘,一旦使用其“ Smart Agressive”磁盘碎片整理,压缩后,启用其自动防止碎片整理功能,它将引起您的注意进行活动并自动优化以避免碎片,很少或根本没有命中(经过测试,一直追溯到最近在现代窗户上使用过的amd和intel的第一代四核)

许多游戏文件都疯狂地很好地压缩了,有些游戏的文件却占用了磁盘空间,尽管大部分都是空白...我压缩了一段时间的游戏从其中一个文件夹中的6gb压缩到了16mb以下.....(希望我开玩笑...谈论空间浪费和I / O浪费...)

压缩了一段时间的伙伴蒸汽文件夹,花了4天进行压缩(在4TB驱动器上,它开始3/4充满),完成后.....他使用了大约1/3的驱动器,碎片整理又花了一天的时间(但是,它开始变得非常分散,因为他从来没有对它进行碎片整理.. )

不要压缩您的图片/图像文件夹,它不会有任何好处,只会在慢速的系统上使它们的访问速度变慢(即使在1/2不错的装备上也不会注意到...)

自从nt4,BUT以来,我已经选择性地压缩了每个系统上的驱动器,实际上,我将解压缩对压缩有害无益的文件夹,这是我们早在游戏玩家,极客时提出的“最佳实践”。 “(在此之前,一个人),老实说,我希望他们有一个更好的压缩方式来压缩驱动器/数据,曾经有一种工具是免费的但价格合理,可以使您更好地工作。压缩结果,而不压缩任何不应该压缩的数据。

无论如何,如果您1.运行ccleaner 2.从提升的命令提示符下运行chkdsk / f(键入y,然后重新启动并运行检查),则即使是许多较旧的双核系统也可以从总体上受益。3.压缩驱动器。4.使用mydefrag或更好的完美磁盘进行碎片整理,这将需要一些时间。.5.罚款所有包含大文件或图片/其他内容的文件夹,只要它们不能很好地压缩/解压缩文件夹或仅解压缩文件,我的经验就在这里是,您几乎不需要在此过程的一部分之后进行碎片整理,但是最好检查一下。

我知道为什么有些人反对压缩,但是在正确使用ssd或hdd,尤其是慢速旧硬盘和ssd的情况下进行测试后,正确使用压缩不仅可以大大节省空间,而且即使是大多数较旧的双硬盘也可以大大降低性能。内核可以更快地处理平均压缩/解压缩周期,然后这些系统中的驱动器可以移动,经过测试,第一代和价格更便宜的较旧设计的ssd可以从压缩中受益,在大多数情况下,它的速度不如慢速硬盘,而是伙伴有一台上网本,它的速度非常慢,很难替换其中的ssd,并且更容易替换且易于访问的ssd插槽,但是,愚蠢的事情不能从添加的ssd中引导而无需物理上删除另一个ssd ... (糟糕的BIOS,但是...对于该装置而言,它实际上不错,但看上去比它更强大。在以这种方式安装的慢速ssd之外,您必须将所有东西拆散才能使用它……),压缩该驱动器,仅在慢速情况下安装Windows和最基本的应用程序(例如office) ssd实际上加速了它,甚至在读/写过程中也是如此,因为它的cpu实际上最终是在等待该死的ssd ..它没有为他安装的更快的缓存而努力...我建议只是将引导加载程序放在内部ssd和os上在添加的but..hes上,希望通过将大部分内容用于页面文件来最终杀死愚蠢的东西。...(它的128gb速度,但绝对慢,就像我有USB3闪存驱动器具有更好的写速度....费用全部在newegg / amazon上出售...)压缩驱动器,仅在慢速ssd上安装Windows和最基本的应用程序(例如office),实际上加速了它的速度,即使在读/写时也是如此,因为它的cpu实际上最终等待着该死的ssd..it,它的速度更快他安装了一个...我建议只是将引导加载程序放在内部ssd上,将os放在添加的but..hes上,希望通过将大部分内容用于页面文件来最终杀死愚蠢的东西。...(它的128gb但是,速度太慢了,就像我有更好写入速度的USB3闪存驱动器。...在newegg / amazon上全部出售的价格……)压缩驱动器,仅在慢速ssd上安装Windows和最基本的应用程序(例如office),实际上加速了它的速度,即使在读/写时也是如此,因为它的cpu实际上最终等待着该死的ssd..it,它的速度更快他安装了一个...我建议只是将引导加载程序放在内部ssd上,将os放在添加的but..hes上,希望通过将大部分内容用于页面文件来最终杀死愚蠢的东西。...(它的128gb但是,速度太慢了,就像我有更好写入速度的USB3闪存驱动器。...在newegg / amazon上全部出售的价格……)他希望最终通过将大部分内容用于页面文件来杀死该愚蠢的东西。...(它的128GB内存,但速度太慢了,就像我有更好写入速度的USB3闪存驱动器...。 newegg / amazon ......)他希望最终通过将大部分内容用于页面文件来杀死该愚蠢的东西。...(它的128GB内存,但速度太慢了,就像我有更好写入速度的USB3闪存驱动器...。 newegg / amazon ......)

我强烈建议至少压缩您的游戏驱动器/文件夹...我的天哪,即使在快速的系统上也可以做到!


大多数游戏已经压缩了数据,无法进一步压缩
M.kazem Akhgary,

-2

Windows压缩RAM中最近不使用的数据,甚至SSD也只是我猜想性能下降的速度的一小部分。我更关心的是压缩块会产生1-2位错误,并且无法恢复部分或全部数据...或者在最坏的情况下会出现字典错误。恕我直言,任何产生在备用操作系统上不可读的磁盘并可能降低可靠性的东西,都不值得(可能)带来额外的速度。电子游戏纹理包文件等通常已经被压缩,因此我看不到分层另一组压缩将如何改善性能。我想看到一个支持在磁盘几何图形上将文件标记为线性布局的操作系统,因此不使用随机读写。对于某些用例,它甚至可以加快SSD的速度。压缩的另一个问题是,由于图像和电影已经被压缩,MS Office文档和其他许多格式也已被压缩,因此您不得不将文件标记为可压缩并进行微管理。对于linux源代码树或大型开放源代码项目,这可能会有很大帮助,因为通常对文本文件而言压缩是最佳的。


1
阐明几何线性关系主要是为了帮助HDD和超过500MB的文件。在此之前,我已经处理了500GB的TIFF文件。Windows会尝试执行此操作,但这依赖于定期对驱动器进行碎片整理以及适当的群集大小,而该大小对于其他应用程序可能不是最佳选择。为了避免这种混乱,我使用SSD进行引导,使用2TB的驱动器来进行音乐/电影项目,另外使用2TB的驱动器来存储来自DSLR的RAW文件,以及使用4TB的存储量很大的源代码,我可以对其进行压缩以获取很大的收益。空间。
Guesty McGuesterson,

1
理想情况下,我想要第二个SSD仅用于“程序文件”,以限制系统文件与系统文件之间的争用,但是Windows往往会中断尝试在几周后进行设置的尝试。我可以制作D:\ Program Files或其他任何文件,但是有太多程序经过硬编码,无法在系统驱动器上随处可见。
Guesty McGuesterson

-2

Microsoft Windows NTFS压缩不得用于日志文件或一般来说文本文件或其他高度可压缩文件以外的任何文件。

考虑一下:从历史上看,我看到文件压缩的​​性能停留在20-25 MiB / s。这是使用一个2.4-3.0Ghz处理器压缩文件的正常速度。NTFS压缩不是多线程的。这是一个很大的问题!

现在考虑将硬盘驱动器的正常速度设为100 MiB / s。如果您无法获得大约4-5倍的压缩率,那么您在阅读和书写方面的性能都会大大降低。这就是发生的情况。

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.