0

我不确定将其归入哪个类别。

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

time cp original copy

time cp copy copy2

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

我想可能是操作系统在缓存什么的,所以我去了另一个目录并复制了一些小文件和东西,然后又回去制作副本,它仍然更快。

有什么想法吗?操作系统是缓存文件还是什么?

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

4

2 回答 2

1

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

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

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

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

于 2011-08-19T18:52:45.457 回答
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
于 2011-08-19T19:30:06.170 回答