Czy kopiowanie dwóch plików jest wolniejsze niż kopiowanie jeden po drugim? [duplikować]

15

Mój szef powiedział, że kopiowanie dwóch plików zajmuje więcej czasu niż wykonywanie jednego, a potem drugiego, ponieważ dysk twardy musi ciągle przełączać głowę między dwiema lokalizacjami na dysku. Czy to prawda? Wydaje mi się, że system operacyjny powinien być wystarczająco inteligentny, aby to naprawić (tzn. Powinien umieć je kopiować sekwencyjnie). Czy to prawda, gdy kopiujesz na dysk podłączony do portu USB?

EDYCJA: czy są jeszcze jakieś inne czynniki dotyczące systemu plików, które uwzględniają? Na przykład czy robi to różnicę, kopiując 1 katalog zawierający 10 plików, czy kopiując 10 plików z całego dysku? Zastanawiam się tylko nad jednym nośnikiem źródłowym i jednym nośnikiem docelowym (brak odczytu z wielu dysków).

Celeritas
źródło
Czasami czasem nie.
Daniel R Hicks,
Myślę, że to pytanie mogłoby skorzystać z rzeczywistego punktu odniesienia, a nie z wykształconych domysłów większości obecnych tutaj odpowiedzi. Czy ktoś miał wirujący dysk i trochę wolnego czasu? Uważam, że w przypadku dysków SSD różnice będą prawdopodobnie nieistotne; podczas gdy dla dysku twardego, wierzę, że odpowiedź może wahać się od znacznego obniżenia wydajności do możliwie niewielkich korzyści w zależności od liczby i rozmiarów plików oraz względnej wydajności dysków źródłowych i docelowych (jeśli są różne).
Lie Ryan
1
Ponadto, jeśli przenosisz przez USB2, prawdopodobnie nie będzie żadnych różnic; typowa prędkość odczytu dysku twardego wynosi około 50-100 MB / s, podczas gdy maksymalna prędkość USB2 wynosi 32 MB / s, więc wąskim gardłem będzie prawdopodobnie port USB, a nie charakterystyka dysku twardego ze względu na buforowanie. Innymi słowy, trudno powiedzieć w ten czy inny sposób.
Lie Ryan
@LieRyan to szkoda, że ​​nie opublikowałeś komentarza jako odpowiedzi, ponieważ najlepiej pasuje do pytania, które chciałem zadać, które dotyczyło kopiowania z 1 dysku twardego na 1 zewnętrzny dysk twardy przez USB 2.
Celeritas

Odpowiedzi:

12

Odłożę cię na to pytanie . Wydaje się, że jednoczesne uruchomienie dwóch operacji kopiowania na tym samym dysku (choć rozpoczęte przez osobne operacje kopiowania) rzeczywiście zająłoby więcej czasu w wyniku opóźnienia generowanego przez głowę szukającą w przód iw tył między konkurującymi operacjami.

Jeśli jednak operacje kopiowania są uruchamiane jednocześnie, znaczna większość współczesnych systemów operacyjnych jest, jak powiedziano, wystarczająco inteligentna, aby umieszczać w kolejce transfery jeden po drugim i powinna zapewnić nieco szybszy czas kopiowania.

Najwyraźniej istnieje wiele aplikacji, które zmuszają operacje kopiowania plików do kolejkowania i wykonywania po kolei, takie jak Teracopy i FastCopy

Wykonywanie jednoczesnych operacji kopiowania na wielu woluminach fizycznych to jednak zupełnie inna sprawa. Podobnie jak przesyłanie plików za pomocą alternatywnych protokołów.

Jeśli chodzi o pytanie dotyczące kopiowania na dysk podłączony do portu USB, jest to w dużej mierze zależne od rodzaju pamięci używanej przez dysk i wykorzystywanej specyfikacji USB (z pewnością godne uwagi wąskie gardło dla USB 1.0 i 2.0), a także wcześniej wymienione czynniki dotyczące wolumenu źródła kopiowania.

bosco
źródło
1
czy to również nie zależy od możliwości procesora systemu?
Raghunandan
@Raghunandan Uczciwa kwestia - uważam, że całkowicie zależy to od okoliczności. Wiele rdzeni / hyperthreading z pewnością zwiększy szybkość kopiowania, jeśli odczytuje dane z wielu woluminów fizycznych lub dysku SSD / RAMDisk, ale w scenariuszu z jednym dyskiem HDD czynniki ograniczające prędkość kopiowania prawdopodobnie nadal będą znajdować się w prędkościach IO dysku i obecności głowy - opóźnienie przenoszenia (jestem pewien, że musi być bardziej odpowiedni termin na to ...).
bosco
3
@Raghunandan - Może nie tyle system operacyjny, co system plików (NTFS vs EXT4).
Enigma
2
@Raghunandan PC-24000 DDR3 ma przepustowość 24 GB / s i wciąż nie jest limitem dla współczesnych procesorów, więc nie sądzę, że to tak naprawdę kwestia procesora - nawet jeśli operacje HDD byłyby 100 razy mniej skuteczne niż operacje RAM , Procesor może nadal obsługiwać co najmniej 245 MB / s, a to wciąż więcej niż najszybsza przepustowość SSD.
gronostaj
1
@Raghunandan twoja partycja linux może również znajdować się na szybszej części dysku niż partycja Windows (np. Poza v. Wewnątrz)
ernie,
16

Istnieje tutaj wiele czynników, które mogą mieć na to wpływ.

  • Napęd źródłowy - czy to wirujący dysk lub dysk SSD? W przypadku wirującego dysku układ plików może mieć wpływ na wydajność. Ponieważ dwa pliki prawdopodobnie znajdują się w różnych częściach dysku, będzie to wiązało się z karami za szukanie głowy. Jak powiedziałeś, jeśli wybierzesz dwa pliki jednocześnie i zainicjujesz kopiowanie w ten sposób, system operacyjny będzie obsługiwał kopie sekwencyjnie.
  • Układ plików - fragmentacja plików (zarówno źródłowa, jak i docelowa) może mieć wpływ na wydajność dysków innych niż SSD
  • Miejsce docelowe - jeśli masz dwa strumienie zapisu do jednego celu, wrócisz do problemu wyszukiwania głowy (ponownie, zakładając, że nie jest to dysk SSD) i możesz mocno przeplatać pliki. Pracowałem kiedyś dla firmy, która produkowała pamięci masowe o wysokiej wydajności, a jednym z głównych problemów było to, ile strumieni wideo w czasie rzeczywistym mogliby czytać lub pisać (filmy 2k wymagają ~ 300 megawatów na sekundę). Naprzemienne zapisy spowolnią proces kopiowania, a także spowolnią odczytywanie pliku. Oczywiście, jeśli dysk jest pofragmentowany, plik i tak zostanie zapisany z przeplotem.
  • pojedynczy / wiele źródeł / celów - w zależności od tego, czy wszystkie pliki pochodzą z jednego dysku, czy wszystkie są zapisywane na jednym dysku, problem wyszukiwania głowy może być mniej więcej taki
  • rozmiar pliku - w przypadku naprawdę małych plików problem z przeszukiwaniem głowy nie będzie miał znaczenia, ponieważ i tak musiałby znaleźć następny plik (co oznacza, że ​​zamiast przechodzić między plikami, szef będzie odczytywał pliki sekwencyjnie)

Jeśli chodzi o to, czy system operacyjny jest wystarczająco inteligentny, aby to naprawić, ogólnie rzecz biorąc, są. Oznacza to, że jeśli kopiujesz wiele plików jednocześnie (np. Pomyśl o wybraniu wielu plików jednocześnie i przeciągnij i upuść).

Oczywiście, jeśli cpuruchomisz dwa polecenia, uruchomią one dwa polecenia lub w systemie Windows, jeśli skopiujesz / wkleisz osobne pliki i uzyskasz dwa okna postępu „kopiowania” na ekranie, wówczas optymalizacja nie nastąpi. W takim przypadku wyraźnie powiedziałeś systemowi operacyjnemu, że chcesz uruchomić dwie kopie jednocześnie, więc nie będzie decydować, że jedna kopia jest ważniejsza od drugiej i nie zaczniesz ich umieszczać w kolejce.

ernie
źródło
+1 Brakuje tylko konfiguracji RAID , o której mowa w „pojedynczym / wielu źródłach / celach”.
David Harkness
1
-1 większość wypowiedzi nie ma związku z pytaniem
Celeritas,
1

Jeśli wielokrotnie wybierzesz i skopiujesz - albo z graficznego interfejsu użytkownika, albo za pomocą polecenia takiego jak „kopiuj C: \ folder * D: \ folder \” - pliki i tak zostaną skopiowane sekwencyjnie, co sprawi, że pytanie będzie dyskusyjne.

Jeśli skopiujesz niektóre pliki, a podczas ich kopiowania zacznij kopiowanie kolejnych plików - albo przez dwie oddzielne operacje z GUI, albo przez dwie osobne komendy uruchomione jednocześnie, jak „cp -r / usr / bin / / opt / bin / & cp -r / usr / local / bin / / opt / local / bin / "- wtedy twoja wydajność prawie na pewno spadnie - może nieco (może być to wysokiej klasy dysk SSD, duże pliki w obu operacjach kopiowania) lub może TON (wirujący dysk, stosunkowo małe pliki w jednej lub obu operacjach). Lepsze systemy operacyjne mogą w pewnym stopniu złagodzić spadek wydajności - na przykład współczesne jądra Linuksa używają harmonogramu we / wy CFQ (Całkowicie uczciwa kolejkowanie), który do pewnego stopnia blokuje operacje wsadowe w celu zwiększenia wydajności - ale nadal będziesz podejmować hit wydajności. W niektórych przypadkach trafienie może być OGROMNE,

TL; DR - uruchamiaj tylko jedną operację kopiowania na raz, niezależnie od liczby poszczególnych plików zawartych w tej operacji , jeśli martwisz się o wydajność.

Jim Salter
źródło