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

Con*_*ngo 5 compression windows-7 ntfs

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

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

compact e: /i /c /s
compact f: /i /c /s
compact g: /i /c /s
Run Code Online (Sandbox Code Playgroud)

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

由此产生的CPU负载只有3%左右

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

有谁知道Win7实时压缩/解压内核是否在幕后使用SSE3SSSE3SSE4.2指令?

Mok*_*bai 4

我预计您的 CPU 使用率会如此之低,原因有很多,但首先请记住,压缩算法是为速度而不是高压缩率而设计的。

这里的根本问题是您是压缩成千上万的小文件还是几 GB 的巨大文件。

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

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

我真的认为硬盘驱动器寻道时间是您的问题,否则您需要专门查看压缩时正在工作的核心,可能压缩例程一次只能由一个线程使用,尽管我会怀疑情况是否如此。