我听说 NTFS 压缩会因额外的 CPU 使用率而降低性能,但我读过报告称它实际上可能会因为减少磁盘读取而提高性能。NTFS 压缩究竟如何影响系统性能?
笔记:
- 我正在运行一台配备 5400 RPM 硬盘的笔记本电脑,我在其上执行的很多操作都受到 I/O 限制。
- 该处理器是 AMD Phenom II,具有四核,运行速度为 2.0 GHz。
- 系统定期使用以下方式进行碎片整理:超级碎片整理。
- 工作负载是读写混合的,读取的频率比写入的频率高一些。
- 要压缩的文件包括个人文档的选定子集(而不是完整的主文件夹)和程序,其中包括几个(要求较低的)游戏和 Visual Studio(往往受 I/O 限制)。
答案1
我听说 NTFS 压缩会因额外的 CPU 使用率而降低性能,但我读过报告说它实际上可能会因减少磁盘读取而提高性能。
正确。假设您的 CPU 使用某种压缩算法,可以以 C MB/s 的速度压缩并以 D MB/s 的速度解压缩,并且您的硬盘驱动器的写入速度为 W,读取速度为 R。只要 C > W,写入时性能就会提高,只要 D > R,读取时性能就会提高。在写入情况下,这是一个极端的假设,因为 Lempel-Ziv 的算法(以软件形式实现)具有不确定的压缩率(尽管它可以受到有限的字典大小的限制)。
NTFS 压缩究竟如何影响系统性能?
嗯,正是依靠上述不等式。只要您的 CPU 能够维持高于 HDD 写入速度的压缩/解压缩率,您就应该体验到速度提升。然而,这确实会对大文件产生影响,大文件可能会出现严重碎片化(由于算法),或者完全没有被压缩。
这可能是因为 Lempel-Ziv 算法在压缩过程中速度变慢(因为字典不断增长,随着位数的增加需要更多比较)。在 Lempel-Ziv 算法中,无论文件大小如何,解压速度几乎总是相同的(因为可以使用基数 + 偏移量方案来处理字典)。
压缩也会影响文件的放在磁盘上默认情况下,单个“压缩单元”的大小是簇大小的 16 倍(因此大多数 4 kB 簇 NTFS 文件系统将需要 64 kB 块来存储文件),但不会超过 64 kB。然而,这可能会影响磁盘上的碎片和空间要求。
最后要说的是,延迟是另一个值得讨论的有趣值。虽然压缩数据所需的实际时间确实会带来延迟,但当 CPU 时钟速度为千兆赫时(即每个时钟周期小于 1 纳秒),与硬盘寻道速率(以毫秒为单位,或数百万个时钟周期)相比,引入的延迟可以忽略不计。
要真正了解速度是否会提升,您可以尝试以下几种方法。第一种方法是使用基于 Lempel-Ziv 的压缩/解压缩算法对您的系统进行基准测试。如果结果良好(即 C > W 和 D > R),则应尝试在磁盘上启用压缩。
从那里开始,您可能希望对实际硬盘性能进行更多基准测试。一个真正重要的基准测试(就您而言)是查看游戏加载速度以及 Visual Studio 项目的编译速度。
TL,DR:压缩可能对于使用大量小文件且要求高吞吐量和低延迟的文件系统而言是可行的。由于性能和延迟问题,大文件不会受到影响(也不应该受到影响)。
答案2
我在 NTFS 的 Wikpedia 条目中对此进行了解释:
NTFS 可以使用 LZNT1 算法(LZ77 的变体 [23] )压缩文件。文件以 16 簇块的形式压缩。对于 4 kB 簇,文件以 64 kB 块的形式压缩。如果压缩将 64 kB 数据减少到 60 kB 或更少,NTFS 会将不需要的 4 kB 页视为空的稀疏文件簇 - 不会写入它们。这允许不合理的随机访问时间。但是,大型可压缩文件会变得高度碎片化,因为每个 64 kB 块都会变成一个较小的碎片。[24][25] 微软不建议对超过 30 MB 的文件进行压缩,因为这会影响性能。[需要引证]
压缩的最佳用途是用于那些重复的、很少写入的、通常按顺序访问的、本身没有压缩的文件。日志文件是一个理想的例子。压缩小于 4 kB 或已经压缩的文件(如 .zip 或 .jpg 或 .avi)可能会使它们变得更大,速度也会变慢。[需要引证] 用户应避免压缩 .exe 和 .dll 等可执行文件(它们可能以 4 kB 的页面为单位进行分页)。压缩启动时使用的系统文件(如驱动程序、NTLDR、winload.exe 或 BOOTMGR)可能会阻止系统正确启动。[26]
尽管对压缩文件的读写访问通常(但并非总是)[27] 透明,但微软建议避免在保存漫游配置文件的服务器系统和/或网络共享上进行压缩,因为这会给处理器带来相当大的负载。[28]
硬盘空间有限的单用户系统可以从 NTFS 压缩中获益,压缩后的文件大小从 4 kB 到 64 kB 甚至更大,具体取决于压缩率。小于 900 字节左右的文件与 MFT 中的目录条目一起存储。[29]
计算机中最慢的环节不是 CPU,而是硬盘的速度,因此 NTFS 压缩可以让有限的、缓慢的存储空间得到更好的利用,无论是在空间方面还是(通常)在速度方面。[30](假设压缩文件片段是连续存储的。)
我建议只对压缩到 64KB 或更小(即 1 个部分)的文件进行压缩。否则,您的文件将由许多 64K 或更小的部分组成。
MyDefrag 在碎片整理方面做得更好。
答案3
您的磁盘速度很慢,所以您的问题确实有道理。NTFS 压缩是处理器密集型的,并且针对速度而不是压缩效率进行调整。
我预计您会看到读取操作的(非常)小幅改进。但是,当访问驻留在系统缓存中的文件时,性能会受到影响,因为每次访问时都必须再次解压缩。
当然,您会发现由于额外的压缩,写入操作会变慢。
在同一个 NTFS 磁盘上复制文件需要解压和压缩,因此这些文件受到的影响最大。
NTFS 压缩也会显著增加碎片,但对于大多数在“典型”工作负载下的“典型”计算机来说,这不是问题。
许多类型的文件,例如 JPEG 图像或视频或 .zip 文件,基本上是不可压缩的,因此这些文件的使用速度较慢并且不会节省任何空间。
小于一个磁盘簇(通常为 4K)的文件不会被压缩,因为没有增益。但是,有时在压缩整个卷时建议使用更小的簇大小。
对于相对静态的卷或文件,建议使用 NTFS 压缩。切勿将其用于系统文件或用户文件夹。
但是由于硬件配置因计算机型号而异,取决于磁盘、总线、RAM 和 CPU,因此只有测试才能知道压缩对您的计算机型号的具体影响。
答案4
今天看到这个的人都应该知道,就视频游戏而言,是的,即使是定期修补的游戏,在驱动器或文件夹上启用压缩也可以减少加载时间,即使在当今较慢的 CPU 上,甚至在 SSD 上(除了大多数人没有的最快的 SSD 之外),你需要定期进行碎片整理,我强烈建议购买完美磁盘,一旦你使用它的“智能激进”碎片整理,在压缩之后,保持其自动预防碎片功能处于启用状态,它将密切关注活动并自动优化以避免碎片化,对性能的影响很小甚至没有(事实上,最近在现代 Windows 上一直测试了 amd 和英特尔的旧第一代四核处理器)
许多游戏文件的压缩效果非常好,有些游戏的文件占用了磁盘空间,尽管大部分是空白的......不久前我压缩的一款游戏从其中一个文件夹中的 6gb 压缩到了 16mb 以下.....(希望我是在开玩笑......谈论浪费的空间和浪费的 I/O......)
不久前压缩了一个好友的 steam 文件夹,花了 4 天时间才压缩(它在 4TB 的驱动器上,开始时已满了 3/4),压缩完成后......他使用了整个驱动器的 1/3 左右,碎片整理又花了一天时间(但是,一开始它碎片化严重,因为他从来没有对它进行过碎片整理...尽管上面有多个 mmo...和大量的 steam/uplay/origin/等游戏...)
请勿压缩您的图片/图像文件夹,这不会有任何好处,只会使在较慢的系统上访问它们的速度变慢(尽管在 1/2 像样的设备上甚至不会注意到...)
自从 nt4 以来,我在每个系统上都压缩过我的驱动器,但是,我会有选择地解压那些压缩弊大于利的文件夹,这是我们作为游戏玩家、极客、“it”人(在此之前有这个词)在过去想出的“最佳实践”,并且,它一直是正确的,老实说,我希望他们有一种更精细的方式来压缩驱动器/数据,曾经有一种工具,它不是免费的,但价格实惠,它可以让你获得更好的压缩结果,而不会压缩任何不应该压缩的数据......
无论如何,即使许多较旧的双核系统实际上也会受益,如果您 1. 运行 ccleaner 2. 从提升的命令提示符运行 chkdsk /f(键入 y 然后重新启动并让其运行检查)3. 压缩驱动器。4. 使用 mydefrag 或更好的完美磁盘进行碎片整理,这将需要时间。5. 清理任何包含大文件或图片/其他内容的文件夹,这些文件夹压缩效果不佳/根本无法压缩,解压缩文件夹或仅解压缩文件,我的经验是,您很少需要在完成此部分过程后进行碎片整理,但最好检查一下。
我明白为什么有些人反对压缩,但是,测试过后,如果使用得当,无论是 SSD 还是 HDD,尤其是速度较慢的旧 HDD 和 SSD,压缩如果使用得当,不仅可以节省空间,还可以提高性能,即使是大多数较旧的双核处理器,处理平均压缩/解压缩周期的速度也比这些系统中的驱动器移动速度快,测试过后,第一代和较便宜的旧设计 SSD 可以从压缩中受益,但在大多数情况下不如速度较慢的 HDD 受益那么多,但是,我一个朋友有一台上网本,里面有一块速度非常慢、很难更换的 SSD,还有一个更容易更换且易于访问的 SSD 插槽,但是,这个愚蠢的东西无法从添加的 SSD 启动,除非物理移除另一个 SSD......(糟糕的 BIOS,但是......就这个设备而言,它实际上很好,比看起来更强大......除了安装速度较慢的 SSD 之外,你必须将整个设备拆开才能使用它......),压缩那个驱动器而在慢速 SSD 上安装 Windows 和最基本的应用程序(如 Office)实际上加快了速度,即使在读/写方面,因为它的 CPU 实际上最终会等待该死的 SSD......它不会等待他安装的更快的 SSD...我建议只将引导加载程序放在内部 SSD 上,将操作系统放在添加的 SSD 上,但是......他希望最终通过将大部分用于页面文件来杀死这个愚蠢的东西......(它是 128GB,但速度非常慢,就像我有写入速度更好的 usb3 闪存驱动器......在 newegg/amazon 上全部出售......)
我强烈建议至少压缩你的游戏驱动器/文件夹...天哪,即使在快速的系统上也会造成很大的不同!!!