2013-08-05 7 views
7

Quando eseguo cp folder1 folder2 -rf, per la prima volta ci vogliono circa 10 minuti. Ma quando eseguo il secondo comando cp folder1 folder3 -rf, ci vuole circa 1 minuto. folder1 contiene circa 100 000 file.perché il comando cp per la seconda volta è più veloce

Perché c'è un miglioramento del tempo di esecuzione per la seconda volta?

+3

Solo supposizione: Forse perché il contenuto di 'cartella1' è in memoria in modo che possa essere copiato più velocemente? – fedorqui

risposta

10

Questo a causa della memorizzazione nella cache della pagina. Esegui sync ; echo 3 > /proc/sys/vm/drop_caches per rallentare di nuovo.

Ulteriori approfondimenti:

+0

Small nitpick: L'invocazione di 'sync' qui è piuttosto inutile. Il motivo per cui si vorrebbe sincronizzare è che gli oggetti sporchi non possono essere eliminati. Tuttavia, 'sync' solo _initiates_ writeback, non è realmente" sync "(cioè blocco fino al completamento della writeback). Quindi abbandonare le cache immediatamente dopo aver chiamato la sincronizzazione equivale a non sincronizzare. – Damon

5

La prima volta che i file vengono letti dal disco rigido.

La seconda volta che i file vengono letti dalla memoria.

Linux, come la maggior parte dei sistemi operativi, ha memorizzato nella cache file/blocchi a cui è stato effettuato l'accesso.

1

Questo perché il file ora viene memorizzato nella memoria cache. La prima volta che questo comando è stato eseguito, ha dovuto leggere il file dal disco, che è molto più lento. È anche importante ricordare se si desidera eseguire qualsiasi forma di benchmark che utilizza l'accesso al disco, ad esempio aggiungendo un "gatto MYFILE>/dev/null" prima dell'esecuzione del benchmark effettivo per ottenere risultati coerenti.

Problemi correlati