这是在 aws ami linux ec2 实例(4 个 CPU 核心、Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz、8GB RAM)上运行 64 位 rar。
我有一个包含 8568 个文件的文件夹。当我创建一个 rar 文件并向其中添加所有文件时,大约需要 3 分钟才能开始处理添加文件。这是正常的吗?您知道延迟的原因可能是什么(分析文件吗?)?我正在使用的命令:
/usr/local/bin/rar a -r -iddpq -ierr /path/to/compress/myfile.rar /path/to/compress/*.log
每个文件只有大约 980 字节。
答案1
运行缩小范围的测试后,我发现二进制文件在最终打开文件读取内容之前对每个文件rar
调用了7 次。stat
我本想追查源代码中的行为,但它不可用(至少在 debian 中)。
$ strace -o rar.strace rar a -r -iddpq -ierr path/to/compress/myfile.rar path/to/compress/*.log
...
$ grep /5.log rar.strace
execve("/usr/bin/rar", ["rar", "a", "-r", "-iddpq", "-ierr", "path/to/compress/myfile.rar", "path/to/compress/1.log", "path/to/compress/2.log", "path/to/compress/3.log", "path/to/compress/4.log", "path/to/compress/5.log"], [/* 16 vars */]) = 0
stat64("path/to/compress/5.log", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
stat64("path/to/compress/5.log", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
stat64("path/to/compress/5.log", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
stat64("path/to/compress/5.log", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
stat64("path/to/compress/5.log", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
stat64("path/to/compress/5.log", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
stat64("path/to/compress/5.log", {st_mode=S_IFREG|0644, st_size=980, ...}) = 0
open("path/to/compress/5.log", O_RDONLY|O_LARGEFILE) = 5