Cp命令时间不一致



我不知道该把这个放在什么类别。

我尝试在我的系统Centos 5.5上对7.7GB的文件做以下操作

time cp original copy

time cp copy copy2

复本的复本时间约为原复本的一半。

我想可能是操作系统在缓存之类的,所以我去了另一个目录,复制了一些小文件和东西,然后又回去复制了一遍,仍然快得多。

你知道这是怎么回事吗?是操作系统缓存文件还是什么?

让我注意到这个问题的是我有一些处理这个文件的代码。我想在两个文件上测试一下,所以我复制了一份。然后我注意到原始文件的处理时间最长。我可以在这上面运行什么样的诊断程序?

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

在运行计时测试时,有几种方法可以尝试并解释缓存。你可以尝试通过分配大量内存来刷新OS磁盘缓冲区(我通常运行perl -e '""x1024x1024x1024'之类的东西来做到这一点);之前和之后的free应该让您了解操作系统缓存了多少数据(在bufferscached列下)。

或者当您对运行进行计时时,忽略系统时间—这将主要是I/O—而只观察用户时间。当然,不同的运行可以很好地处理不同数量的数据,因此您会期望有不同数量的I/o。

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

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

最新更新