软件吧
登录注册账号
/posts/i-o
电脑必备

解压日志包时硬盘狂响?我拿三种工具测了临时目录的I/O开销

码农小张 79 0 13

公司日志服务器每天凌晨推过来几十个 .tar.gz 和 .zip,每个包从几百 MB 到 3 GB 不等。我平时在测试机(i5-10400 + 16G + SATA SSD)上直接解压到 /data/logs,但最近发现解压时硬盘灯常亮,机器响应变慢,怀疑是解压工具在临时目录里来回倒腾。

测试方法:

  • 选取 5 个真实日志包(3 个 tar.gz,2 个 zip),总大小 7.2 GB。
  • 分别用 Win解压缩 5.1.2、7-Zip 23.01、Bandizip 7.32 解压到同一块 SSD 的同一目录。
  • 用 Process Monitor 记录每个工具解压过程中的磁盘写入总量和临时文件路径。
  • 每轮测试前清空系统缓存,每工具跑 3 次取中位数。

结果(写入总量 / 耗时):

  • Win解压缩:写入 1.8 GB(临时文件在 C:\Users\xxx\AppData\Local\Temp),耗时 52 秒。
  • 7-Zip:写入 7.2 GB(直接解压到目标目录,没有额外临时文件),耗时 61 秒。
  • Bandizip:写入 7.3 GB(类似 7-Zip,但临时目录里有个 100 MB 的索引文件),耗时 58 秒。

关键发现:Win解压缩 确实快,但它是把包先解到系统临时目录再移动到目标位置,所以实际磁盘写入多了一次拷贝。如果目标目录和临时目录跨盘(比如临时目录在 C 盘,目标在 D 盘),这个拷贝会变成跨盘复制,速度直接减半。我试过把临时目录改到 D 盘,耗时从 52 秒涨到 78 秒——因为默认临时目录在 SSD 上,你改到机械盘反而更慢。

我的判断:

  • 如果你只是偶尔解压个软件包,Win解压缩 的速度优势很明显,适合普通用户。
  • 如果是像我这样批量处理日志、部署包,而且源文件和目标目录都在同一块盘上,7-Zip 的写入量更实在,不会额外占用临时空间。
  • 命令行支持这块,7-Zip 完胜,Win解压缩 的 CLI 参数太少,没法自动化。

一个折中方案:我把 Win解压缩 的临时目录指到内存盘(RamDisk),解压小包(<1 GB)时速度能再快 15%,但大包会挤爆内存,不建议。

最后问一句:你们解压日志包时,有没有碰到临时目录塞满导致系统盘爆红的情况?是怎么处理的?

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

社区回应

0 Replies

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

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