È più lento copiare due file contemporaneamente che copiarli uno dopo l'altro? [duplicare]


15

Questa domanda ha già una risposta qui:

Il mio capo stava dicendo che ci vuole più tempo per copiare due file contemporaneamente rispetto a fare uno e poi l'altro perché il disco rigido deve continuare a cambiare la testa tra le due posizioni sul disco. È vero? Mi sembra che il sistema operativo dovrebbe essere abbastanza intelligente da risolvere questo problema (vale a dire, dovrebbe sapere copiarli in sequenza). È vero quando si copia su un'unità collegata a una porta USB?

EDIT: ci sono altri fattori riguardanti il ​​filesystem che tengono conto? Ad esempio, fa la differenza copiando 1 directory contenente 10 file rispetto a copiare 10 file da tutto il disco? Mi chiedo solo un mezzo di origine e un mezzo di destinazione (nessuna lettura da più unità).


A volte, a volte no.
Daniel R Hicks,

Penso che questa domanda potrebbe trarre vantaggio da un punto di riferimento reale, piuttosto che dalle ipotesi istruite dalla maggior parte dei rispondenti qui. Qualcuno aveva un disco rotante e del tempo libero? Credo che per SSD le differenze siano probabilmente trascurabili; per quanto riguarda il disco rigido, credo che la risposta potrebbe variare da una grave penalizzazione delle prestazioni a un leggero vantaggio a seconda del numero e delle dimensioni dei file e delle prestazioni relative dei dischi di origine e di destinazione (se diversi).
Lie Ryan,

1
Inoltre, se stai trasferendo tramite USB2, probabilmente non ci saranno differenze; la velocità di lettura tipica dell'hard disk è di circa 50-100 MB / s mentre la velocità massima di USB2 è di 32 MB / s, quindi il collo di bottiglia sarà probabilmente la porta USB anziché la caratteristica dell'hard disk a causa del buffering. In altre parole, è difficile dire in un modo o nell'altro.
Lie Ryan,

@LieRyan è un peccato che tu non abbia pubblicato il commento come risposta perché si adatta meglio alla domanda che intendevo porre riguardo alla copia da 1 disco rigido a 1 disco rigido esterno tramite USB 2.
Celeritas

Risposte:


12

Ti rimanderò a questa domanda . Sembra che l'esecuzione simultanea di due operazioni di copia sullo stesso disco (sebbene avviata tramite operazioni di copia separate) richiederebbe effettivamente più tempo a causa della latenza generata dalla testa che cerca avanti e indietro tra le operazioni concorrenti.

Se, tuttavia, le operazioni di copia vengono avviate contemporaneamente, la maggior parte dei moderni sistemi operativi è come hai detto abbastanza intelligente da mettere in coda i trasferimenti uno dopo l'altro e dovrebbe produrre un tempo di copia un po 'più veloce.

Apparentemente ci sono un certo numero di applicazioni disponibili per forzare le operazioni di copia dei file in coda ed eseguire in sequenza come Teracopy e FastCopy

Tuttavia, l'esecuzione di operazioni di copia simultanee su più volumi fisici è completamente un'altra questione. Come sta trasferendo i file attraverso protocolli alternativi.

Per quanto riguarda la tua domanda sulla copia su un'unità connessa a una porta USB, dipende fortemente dal tipo di memoria utilizzata dall'unità e dalle specifiche USB utilizzate (sicuramente un notevole collo di bottiglia per USB 1.0 e 2.0), nonché dal precedente citati fattori riguardanti il ​​volume di origine della copia.


1
non dipende anche dalla capacità del processore del sistema?
Raghunandan,

@Raghunandan Un punto giusto: credo che dipenda totalmente dalla circostanza. Più core / hyperthreading migliorerebbero sicuramente la velocità di copia se si leggono dati da più volumi fisici o SSD / RAMDisk, ma nello scenario di un singolo HDD i fattori limitanti della velocità di copia risiederebbero probabilmente nelle velocità di I / O del disco e nella presenza di head latenza del movimento (sono sicuro che ci deve essere un termine più appropriato per quello ...).
bosco,

3
@Raghunandan - Potrebbe non essere il sistema operativo tanto quanto il file system (NTFS vs EXT4).
Enigma,

2
@Raghunandan PC-24000 DDR3 ha una larghezza di banda di 24 GB / se non è ancora un limite per le CPU moderne, quindi non penso che sia davvero una questione di CPU, anche se le operazioni dell'HDD sarebbero 100 volte meno efficaci delle operazioni RAM , La CPU potrebbe ancora gestire almeno 245 MB / se questa è ancora più della larghezza di banda dell'SSD più veloce.
gronostaj,

1
@Raghunandan la tua partizione Linux potrebbe anche trovarsi su una parte più veloce del disco rispetto alla partizione di Windows (ad es. All'esterno di v.
Inside

16

Ci sono molti fattori qui che potrebbero influenzare questo.

  • Unità di origine: questo disco rotante o SSD? Se si gira il disco, il layout dei file potrebbe influire sulle prestazioni. Poiché i due file sono probabilmente su diverse parti del disco, ciò comporterà penalità per la testa. Come hai detto, se selezioni due file contemporaneamente e avvii la copia in quel modo, il sistema operativo gestirà le copie in sequenza.
  • Layout dei file: la frammentazione dei file (sia sull'origine che sulla destinazione) potrebbe influire sulle prestazioni delle unità non SSD
  • Destinazione: se hai due flussi di scrittura che scrivono su un singolo target, allora sei di nuovo alla testa del problema di ricerca (di nuovo, supponendo che non sia un SSD) e potresti intercalare pesantemente i file. Lavoravo per un'azienda che produceva storage ad alte prestazioni e uno dei maggiori problemi era il numero di flussi di video in tempo reale che potevano leggere o scrivere (il video 2k richiede ~ 300 mega al secondo). Alternare le scritture rallenterà il processo di copia e renderebbe più lenta la lettura del file. Naturalmente, se il tuo disco è frammentato per iniziare, il tuo file verrà comunque scritto interlacciato.
  • sorgente / destinazione singola / multipla - a seconda che i tuoi file provengano tutti da un'unità o siano tutti scritti su una singola unità, il problema di ricerca della testa potrebbe essere più o meno
  • dimensione del file - per file di dimensioni molto ridotte, il problema di ricerca della testa non ha importanza, poiché la testa dovrebbe cercare di trovare comunque il file successivo (il che significa che invece di andare avanti e indietro tra i file, la testa dovrebbe leggere i file in sequenza)

Per quanto riguarda se il sistema operativo è abbastanza intelligente da risolvere questo, in generale, lo sono. Cioè, se copi più file contemporaneamente (ad esempio, pensa di selezionare più file contemporaneamente e trascina la selezione).

Ovviamente, se si cpeseguono due comandi, verranno eseguiti i due comandi, oppure in Windows se si copiano / incollano file separati e si ottengono due finestre di avanzamento "copia" sullo schermo, l'ottimizzazione non avverrà. In questo caso, hai esplicitamente detto al sistema operativo che vuoi eseguire le due copie contemporaneamente, quindi non deciderà che una copia è più importante dell'altra e inizia a metterle in coda.


+1 L'unica cosa che manca è la configurazione RAID , cui si fa riferimento con "sorgente / destinazione singola / multipla".
David Harkness,

1
-1 la maggior parte di ciò che viene detto non è correlato alla domanda
Celeritas,

1

Se selezioni e copi più volte - da una GUI, o usando un comando come "copia C: \ cartella * D: \ cartella \" - i file SARANNO comunque copiati in sequenza, rendendo discutibile la domanda.

Se copi alcuni file e mentre li stanno copiando, inizia a copiare più file - con due operazioni separate dalla GUI o con due comandi separati eseguiti simultaneamente come "cp -r / usr / bin / / opt / bin / & cp -r / usr / local / bin / / opt / local / bin / "- quindi le tue prestazioni quasi sicuramente diminuiranno - forse di un po '(unità a stato solido di fascia alta, file di grandi dimensioni in entrambe le operazioni di copia) o forse di un TON (disco rotante, file relativamente piccoli in una o entrambe le operazioni). Sistemi operativi migliori possono mitigare la penalità delle prestazioni in una certa misura - per esempio, i moderni kernel Linux usano lo scheduler I / O CFQ (Completely Fair Queuing), che in qualche modo bloccherà le operazioni "batch" per aumentare l'efficienza - ma continuerai a prendere un colpo di scena. In alcuni casi il colpo può essere ENORME,

TL; DR: esegui solo un'operazione di copia alla volta, indipendentemente dal numero di singoli file inclusi in tale operazione , se sei preoccupato per le prestazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.