为什么“猫”有这种奇怪的时间行为?

bra*_*ter 8 linux performance

我正在使用cat管道将不同的文件传输到一个大文件中。不同文件的数量各不相同,从两个文件到十个不等,但所有文件的总大小始终相同(几 GB)。

我的问题:每当我遇到总共有六个文件的情况时,连接它们所需的时间就会达到峰值(即明显多于五个或七个),我不知道为什么。

有人有想法吗?

文件(大小相同)

output
outputTEMP1
outputTEMP2
outputTEMP3
outputTEMP4
outputTEMP5
Run Code Online (Sandbox Code Playgroud)

命令

cat outputTEMP* >> output && rm -f outputTEMP*
Run Code Online (Sandbox Code Playgroud)

目前,机器必须执行一些计算,但我会在有新的测量结果可用时进行更新。

pbr*_*pbr 2

所以大卫的评论是正确的。为了进行准确的评估,我们需要做两件事:

  1. 保证缓存不是场景的一部分
  2. 实际测量所花费的时间。

假设您有足够的磁盘空间,我将描述一个测试场景,该场景将更准确地确定这是否是一个真正的问题。如果是这样,这种方法的支持证据将帮助开发人员知道它是真实的并能够重现它。

为了帮助隔离问题,我们这里根本不执行 rm 部分。之后让 TEMP 文件闲置。如果您愿意,您可以稍后重复执行“rm”部分的测试。

这是测试场景:

  • 创建 9 个目录 - 每个文件数量一个(2 3 4 5 6 7 8 9 和 10) - 如果你没有空间,也许只做 2、5、6、7 和 10。
  • 确保您将不同的文件放入每个目录中;任何地方都没有重复项
  • 像这样使用时间命令:

    时间(cat 输出TEMP* >> 输出)

捕获为您运行的每个测试报告的实际编号、用户编号和系统编号。

我同意雷诺兹的观点;如果这是真的,您绝对应该通过电子邮件将详细信息发送至 bug-coreutils@gnu.org。