cp命令时间差异

时间:2011-08-19 18:41:37

标签: linux cp

我不确定究竟是什么类别。

我尝试在系统Centos 5.5上使用7.7GB的文件执行以下操作

time cp original copy

time cp copy copy2

副本的副本大约是原件副本的一半。

我想也许操作系统正在缓存或者其他东西,所以我去了另一个目录并复制了一些小文件和东西,然后又回去制作副本的副本,它仍然更快。

这里有什么想法吗?操作系统是否缓存了文件?

是什么让我注意到这个问题是我有一些处理这个文件的代码。我想在两个文件上测试它,所以我只是制作了一个副本。然后我注意到原始文件的处理时间最长。我可以对此运行什么样的诊断?

2 个答案:

答案 0 :(得分:1)

操作系统不会缓存文件,因为它会缓存它读取的磁盘块。

在运行计时测试时,有几种方法可以尝试缓存缓存。您可以尝试通过分配大量内存来刷新操作系统磁盘缓冲区(我通常运行perl -e '"\0"x1024x1024x1024'来执行此操作); free之前和之后应该让您了解操作系统缓存了多少数据(在bufferscached列下)。

或者当您计时时,忽略系统时间 - 主要是I / O - 并且只是观察用户时间。当然,不同的运行可能会很好地处理不同数量的数据,因此您可能会有不同的I / O数量。

最可靠的方法是多次运行测试并使用最快的时间作为比较值。

答案 1 :(得分:0)

sync && echo 3 > /proc/sys/vm/drop_caches
time cp original copy
sync && echo 3 > /proc/sys/vm/drop_caches
time cp copy copy2