如果启用 NTFS 压缩,为什么 CPU 负载如此之低?它在后台使用 SSE4.2 指令吗?

如果启用 NTFS 压缩,为什么 CPU 负载如此之低?它在后台使用 SSE4.2 指令吗?

我有一台运行 Windows 7 x64 的六核 Xeon X5650。

我目前正在使用以下命令同时压缩三个 NTFS 硬盘(每个 2TB):

compact e: /i /c /s
compact f: /i /c /s
compact g: /i /c /s

它获得了合理的压缩:高达 40:1,通常为 2:1。

由此产生的 CPU 负载仅为 3% 左右

有人知道为什么 CPU 负载这么低吗?

有人知道 Win7 实时压缩/解压缩内核是否使用3. SSE3 简介或者SSSE3或者安全增强4.2幕后指示?

答案1

我希望你的 CPU 使用率如此低是因为许多因素,但首先请记住,压缩算法是为了速度而不是高压缩率而设计的。

这里的根本问题在于您是否要压缩成千上万个小文件或几 GB 的巨型文件。

如果您要压缩小于 2MB 的文件,我预计压缩文件所花费的大部分时间都花在了以下操作上:在文件系统中查找文件、让硬盘驱动器提供数据、然后将压缩数据写回,然后重复处理下一个小文件。压缩算法在现代机器上可能可以处理大约 40-50MB/s(我预计但不确定),因此硬盘驱动器寻道和数据传输时间才是这些文件真正的限制因素,压缩时间可能几乎为零。

对于较大的文件,您几乎肯定会看到更高的 CPU 使用率。当我告诉它压缩系统上的大型目录时,我确实看到至少 1 个核心的 CPU 使用率上升到大约 50%(在我的 8 核处理器上大约占总 CPU 的 8-10%)...

我确实认为硬盘寻道时间是你的问题,否则你需要特别看看哪个由于在压缩过程中内核正在工作,因此压缩例程可能每次只能由一个线程使用,但我怀疑情况确实如此。

答案2

是的,新的安全增强4.2可以使用 Intel i7 和 Intel Xeon X5650 中的指令集来加速压缩。考虑到我的 CPU 使用率为 3%,同时压缩三个 2TB 硬盘,Win7 几乎肯定会使用安全增强4.2NTFS 扇区级压缩的后台操作。

使用基于硬件的 GZIP 压缩节省电量,Tony Summers 等,AHA 产品集团,Comtech EF Data Corporation

答案3

不不不,没有涉及 SSE4。没有任何 SSE4 指令可以帮助 NTFS 使用的 LZ(w/77) 方法。您的磁盘太慢,无法通过压缩使 CPU 饱和,这通常是一件好事 - 您可以忍受压缩的磁盘文件。当您对大型文件进行微小更改时,问题就开始了 - 它将重新读取并重新压缩所有文件

相关内容