为什么“捉弄”这种奇怪的时间行为?


8

cat用来将不同的文件传送到一个大文件中。不同文件的数量各不相同,从两个文件到最多十个文件,但是所有文件的总大小始终相同(几个GB)。

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

有人有主意吗?

文件(全部相同)

output
outputTEMP1
outputTEMP2
outputTEMP3
outputTEMP4
outputTEMP5

命令

cat outputTEMP* >> output && rm -f outputTEMP*

当前,机器必须执行一些计算,但是稍后将在有新测量可用时进行更新。


您使用的确切命令行是什么?
innaM 2009年

我添加了命令行。
brandtaetter

这绝对是奇怪的。我无法告诉您为什么这样做会如此,但是也许您应该向bug-coreutils@gnu.org提交纯文本错误报告。
雷诺兹2009年

衡量吧!并确保在测量时不缓存!
Davide

Answers:


4

调试此问题的一种方法是使用strace。

strace -tt -e trace=open,close -o /tmp/strace.cat.log cat apt.list authors.txt >/tmp/t.test
cat /tmp/strace.cat.log 

23:12:08.022588 open("apt.list", O_RDONLY|O_LARGEFILE) = 3
23:12:08.023451 close(3)                = 0
23:12:08.023717 open("authors.txt", O_RDONLY|O_LARGEFILE) = 3
23:12:08.025403 close(3)                = 0

-tt选项将系统调用的时间戳记录为毫秒分辨率。-e trace = open,仅关闭日志,仅打开,关闭API。尝试删除它们,您将看到一个非常嘈杂的日志文件。


2

因此,Davides的评论很明确。我们需要做两件事来进行准确的评估:

  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。


另一个想法:为了确保将相同的TOTAL数据量复制到输出文件中。所以,如果它的1GB总,在“2”目录,你想有一个是1/2 GB的大文件,并在“10”目录你会是一个大国标等1/10号文件
PBR
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.