为什么解压软件的 cpu 利用率很低?

75 天前
 xdcatus
我用的是 7zip ,当解压缩文件时我打开任务管理器查看 CPU 的利用率才 2%,用什么方法能使解压缩和压缩文件时充分利用 CPU 的性能?
2176 次点击
所在节点    问与答
15 条回复
killgfat
75 天前
硬盘读写吃满了吗
xdcatus
75 天前
@killgfat 这个倒没注意,我通常解压缩的是 nas 里的文件,读写可以达到 110MB/S
ochatokori
75 天前
@xdcatus #2 这是你网络带宽瓶颈了吧
catalysia
75 天前
主流系统的 cpu 利用率( windows mac 安卓 ios linux )并不完全代表 cpu 的繁忙程度

现代 cpu 十分复杂 每种晶体管都有自己独特的作用

所以硬件调度器会根据预先的判断来给正在进行的工作一个预期

对每个晶体管是否繁忙进行加权 最后生成一个百分比

这个百分比就是 cpu 利用率

所以 cpu 利用率低 也并不代表 cpu 就不繁忙

解压缩就是其中之一

cpu 的内从控制器要进行复杂的从硬盘到内存再到 3 级缓存 2 级缓存的调度工作

而且类似 7z 等压缩算法 是一环套一环的 你必须完成了前面的才能解压缩后面的

这就导致内存控制器和三级缓存很容易跑满

由于 cpu 利用率对内存控制器和三级缓存的加权并不高 所以才会让你觉得 cpu 不忙 但解压缩速度却不能更快

使用更大的三级缓存的 cpu 比如 x3d 系列 或者更高带宽的内存 可以加快解压缩速度
yyzh
75 天前
@catalysia 别想那么多,单纯楼主这个只是带宽问题罢了.不过的确现在压缩解压缩算法一堆都是一核有难 N 核围观的.遇到大小核的 U 如果调度出问题了情况更糟
charlie21
75 天前
视频格式转换的时候 cpu 利用率是很高的
Love4Taylor
75 天前
ZSTD:
zstd -T$(nproc) 或 export ZSTD_NBTHREADS="$(nproc)"

XZ:
export XZ_OPT="-T$(nproc)"

保证你 CPU 起飞
ysc3839
75 天前
@catalysia 否的,据我所知大多数情况下用户能看到的“CPU 利用率”就仅仅是一段时间内 CPU 非空闲时间所占百分比。即使是最简单的无限循环,用户看到的也是 100%。你说的需要进行复杂计算得出的真实 CPU 使用率或许是存在的,但是用户用工具看到的一般不是这个。

另外 Windows 任务管理器有个“特性”,就是看到的 CPU 使用率是乘以了当前 CPU 频率比例的。比如说 CPU 基础频率是 2GHz ,目前频率是 4GHz ,那当 CPU 使用率是 50%时,实际会显示 100%。
min
75 天前
压缩解压缩对 cpu 要求偏低,无法达到你的充分利用 cpu 的期望,就不是个吃 cpu 的任务类型
catalysia
75 天前
@ysc3839 并不是

微软就曾经出面说过 intel 的 atom 和标准 cpu 以及高通 arm 和 amd 的算法都不一样 不能进行横向对比
一个比较明显的例子是 在 windows xp 酷睿和 Phenom 时期 跑 julia 的时候 amd 的 cpu 会显示跑满了 cpu 而 intel 的标压产品就不会显示跑满 atom 则和 amd 的一样会显示跑满

这是因为 intel 和 amd 的设计原理和权重不一样 对纯浮点算法 intel 的 cpu 可以再跑个整数指令 而 amd 的 3d now !指令集会接管 julia 算法的大多数运算

当然 windows 11 后微软重构了任务管理器的代码 win11 的 cpu 利用率的实现方式似乎和之前有区别了 大多数第三方工具读取利用率的时候都需要调用额外的 api 不过我仍然不认为微软纯使用了占空比
ysc3839
75 天前
@catalysia 那如何解释最简单的无限循环会显示为 100%呢?
daimiaopeng
75 天前
换个软件,或者试一下在任务管理器把压缩软件 cpu 的优先级设置为高
sandylaw
75 天前
开启多线程:
echo "${ALLFILES[*]}" | xargs 7z a -t7z -mx=6 -mmt=on ${VERSION_NAME}.7z
kokutou
75 天前
解压是单核的, 好多算法都是这样的...

如果你单核性能差 那就是很慢

你看看硬盘占用吧,110m 不就是千兆网, 已经跑满了
ccpp132
75 天前
具体情况不清楚很难排查

比如一个可能的情况是解压出来大量的小文件,导致大部分时间花在创建新文件这种 i/o 操作上。这些其实都依赖额外的信息从描述是判断不出来的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1055491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX