2011-08-19 89 views
0

林不知道究竟把什么类别此英寸cp命令时间差异

我试图做一个文件,该文件是7.7GB我的系统在CentOS 5.5

time cp original copy 

以下
time cp copy copy2 

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

我想也许是操作系统缓存或其他什么东西,所以我去了另一个目录,并复制了一些小文件和东西,然后再次复制副本,它仍然更快。

任何想法这是怎么回事?操作系统缓存文件或什么?

什么让我注意到这个问题是我有一些代码来处理这个文件。我想测试两个文件,所以我只是做了一个副本。然后我注意到原始文件花费最长时间处理。我可以运行哪种诊断?

+0

删除C++标记 –

回答

1

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

运行计时测试时,有几种方法可以尝试并考虑缓存。您可以尝试通过分配大量内存来刷新操作系统磁盘缓冲区(我通常运行如perl -e '"\0"x1024x1024x1024'这样的操作); free之前和之后应该给你一个操作系统缓存了多少数据的想法(在bufferscached列下)。或者当你计时运行时,忽略系统时间 - 这将主要是I/O - 并且只是看用户的时间。当然,不同的运行可能会很好地处理不同数量的数据,所以您会希望有不同数量的I/O。

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

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