软件吧
登录注册账号
/posts/7-zip-mmt
电脑必备

7-Zip批处理解压日志包,-mmt开满反而更慢,我拿两台机器掐了三天

码农小张 108 0 16

上周发过一帖聊 -mmt 核数取舍,评论区有人问具体怎么测。这周我拿两台机器把参数组合全跑了一遍,数据列出来,省得大家继续拍脑袋。

测试环境

  • A机:i7-12700H,16G,NVMe,Win11 23H2,7-Zip 24.08
  • B机:i5-10400,16G,SATA SSD,Win10 22H2,同版本
  • 样本:37个日志压缩包,单包 80MB~1.2GB,共约 14GB,混合 lzma2 和 deflate

结果(37包全解,秒)

参数A机B机
-mmt=1214331
-mmt=496148
-mmt=871152
-mmt=1269159
-mmt=off88143

A机到 8 核基本吃满,12 核只快 2 秒,CPU 占用从 620% 冲到 890%,收益明显不成比例。B机反而在 8 核开始回退——SATA 盘 IO 先撞墙,多开的线程全在等盘。

我的结论

  1. 解压瓶颈是 IO 还是 CPU,先看盘。NVMe 可以往 8 核靠,SATA 或机械盘 4 核封顶。
  2. -mmt=off 是单线程,别和 -mmt=1 混用,后者在某些老版本行为不一致。
  3. 批处理里别写死核数,我最后改成按盘类型分支:NVMe 走 -mmt=8,其余 -mmt=4。
  4. 真正省时间的是把包按大小排序,先解大包让 IO 和 CPU 重叠,37 包整体能再压 10% 左右。

踩坑
一开始我把所有包塞进一个 for 循环串行解,IO 等 CPU 等得我心烦。后来改成两路并发,A机反而快了 15 秒,但 B机因为线程打架慢了 8 秒。所以并发数也得看盘,不是越多越好。

还没搞明白的:你们平时解日志包,是串行一把梭还是按大小排?有没有人试过把大包拆成多个卷并行解?我下一步想测这个。

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。