2011-08-19 92 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