W połączeniu gigabitowym Teracopy ma prędkość 31 MB / s, ale Windows 8 robi to z prędkością około 109 MB na sekundę?
Co dokładnie to powoduje? Czy mogę włączyć takie prędkości za pomocą Teracopy? Naprawdę odkrywam dodatkowe funkcje, które ma Teracopy, na pewno będę ich teraz brakować: D
Dwa słowa: weryfikacja i pamięć podręczna
Wyjaśnienie techniczne
Oto ogólna procedura kopiowania pliku za pomocą Eksploratora Windows:
- Odczytaj fragment danych z napędu źródłowego do pamięci
- Wyślij porcję przez system (y)
- Zapisz fragment na dysku docelowym
- Jeśli jeszcze tego nie zrobiono, wróć do kroku 1
To wydaje się proste i wystarczająco krótkie. Dzięki temu algorytmowi przesyłania każdy bajt pliku jest przetwarzany tylko dwa razy: jeden odczyt, jeden zapis.
Ponadto system Windows używa pamięci (podobnie jak sam dysk) do buforowania niektórych danych. Zamiast więc czekać na napisanie poprzedniego fragmentu, a następnie odczytanie kolejnego fragmentu, można odczytać nowy fragment, gdy poprzedni jest jeszcze w trakcie pisania. Oczywiście nie może to trwać wiecznie, ale system Windows może wykorzystać całą pozostałą wolną pamięć jako tymczasowy bufor do przechowywania większości, jeśli nie całego pliku, który jest odczytywany w pamięci.
Możesz zobaczyć buforowanie w akcji, kopiując duży plik - lub folder zawierający wiele plików - z jednego dysku na drugi, a następnie natychmiast porównując oba. W tym momencie porównanie będzie znacznie szybsze, niż jeśli zrobisz to później, ponieważ pliki są nadal w pamięci, więc w rzeczywistości nie odczytuje ich z napędu.
Ponieważ pamięć jest bardzo szybka, a prędkości odczytu są zwykle nieco szybsze niż prędkości zapisu, ostateczna szybkość transferu jest ograniczona tylko prędkością zapisu napędu docelowego.
Teracopy może zrobić dwie rzeczy, które mogą spowolnić przesyłanie plików, których nie robi Explorer:
Zrezygnuj z pamięci podręcznej i czytaj bezpośrednio z dysku
Sprawdź, czy miejsce docelowe zostało poprawnie zapisane
W przeciwieństwie do Eksploratora, który sprawdza tylko podstawowe błędy podczas przesyłania, Teracopy może faktycznie sprawdzić, czy dane zostały poprawnie zapisane na dysku docelowym, aby zapobiec uszkodzeniu danych, które mogłoby się zdarzyć z powodu problemów z nośnikiem transferu (sieć / kabel napędu / etc.). ) lub sam dysk (uszkodzony sektor itp.). Oznacza to, że musi odczytać plik z miejsca docelowego, aby porównać go z oryginałem.
W zależności od zastosowanego algorytmu i wielkości pliku, weryfikacja może być zoptymalizowana tak nisko jak (ale nie mniej niż) trzy operacje na dysku dla każdego pliku / fragmentu pliku w przeciwieństwie do dwóch Eksploratora: odczytaj plik ze źródła, napisz plik do miejsca docelowego i przeczytaj plik z miejsca docelowego.
Zobacz, co się stanie, gdy skopiujesz plik za pomocą Teracopy (z algorytmem zoptymalizowanym do HDD):
- Przeczytaj fragment z napędu źródłowego
- Hash fragment odczytany z napędu źródłowego
- Wyślij porcję przez system (y)
- Zapisz go na dysku docelowym
- Wyczyść skrzynki
- Przeczytaj fragment z dysku docelowego
- Hash fragment z dysku docelowego
- Porównaj skróty
- Określ następny krok
- Jeśli skróty nie pasują, podaj błąd i monituj użytkownika o działanie
- Jeśli skróty są dopasowane i nie zostały ukończone, wróć do kroku 1
Problem polega na tym, że jeśli buforujesz pliki podczas przesyłania, porównanie staje się bezużyteczne, ponieważ nie odczytujesz rzeczywistych danych na dysku docelowym, czytasz kopię buforowaną w pamięci ze źródła. Dlatego, aby poprawnie zweryfikować, musisz wyczyścić pamięć podręczną. Można to zrobić po każdym odczycie i zapisie (co jest dodatkową operacją, która skończyłaby się niezliczoną ilością razy dla plików o znacznych rozmiarach) lub tylko raz po przesłaniu całego pliku.
Zgodnie z poniższym zrzutem ekranu TeraCopy przeprowadza weryfikację po przesłaniu plików, a nie podczas. Oznacza to, że zamiast tego wykorzystuje algorytm transferu zoptymalizowany pod kątem procesora / pamięci RAM:
- Przeczytaj fragment z napędu źródłowego
- Wyślij porcję przez system (y)
- Zapisz go na dysku docelowym
- Jeśli jeszcze tego nie zrobiono, wróć do kroku 1
- Kopiowanie zakończone, więc wyczyść pamięć podręczną i zweryfikuj
- Przeczytaj fragment z napędu źródłowego
- Hash fragment z dysku docelowego
- Przeczytaj fragment z dysku docelowego
- Hash fragment z dysku docelowego
- Porównaj skróty
- Określ następny krok
- Jeśli skróty nie pasują, podaj błąd i monituj użytkownika o działanie
- Jeśli skróty są dopasowane i nie zostały ukończone, wróć do kroku 6
Chociaż ten algorytm nieco mniej obciąża procesor i pamięć RAM, znacznie bardziej obciąża dyski, ponieważ teraz każdy plik musi być przetwarzany cztery razy: odczytać cały plik ze źródła, zapisać go w miejscu docelowym , a następnie przeczytaj go ponownie ze źródła i ponownie z miejsca docelowego.
(Gdyby TeraCopy zostało zoptymalizowane pod kątem transferów sieciowych, mogłoby to uniknąć ponownego przesłania całego pliku do weryfikacji i wysłania tylko skrótów, które są znacznie mniejsze, ale obecnie tak się nie dzieje, a sterowniki sieciowe są traktowane tak samo jako dysk lokalny, więc faktycznie ponownie odczytuje źródło).
Domyślnie TeraCopy nie weryfikuje ani nie korzysta z pamięci podręcznej. Nie weryfikacji byłoby przyspieszyć transfer do góry (lub bardziej dokładnie, nie zwalniać go w dół), a nie przy użyciu pamięci podręcznej będzie zwalniać.
Podanie
Aby określić konkretne wyniki prędkości, musisz sprawdzić ustawienia, aby sprawdzić, czy je zmieniłeś. Następnie możesz spróbować oszacować, jakie prędkości uzyskasz przy różnych ustawieniach (pamiętaj, że prawdopodobnie będą one oddziaływać, więc nie jest to proste dodawanie lub odejmowanie).
Powiedziawszy to, zróbmy pobieżne obliczenia, używając twoich liczb:
- Lokalny transfer plików: 875 Mb / s (tzn. Prędkość dysku)
- Szybkość sieci: 1 Gb / s = 119,21 MB / s
- Kopiuj za pomocą Eksploratora Windows: 109 MB / s
- Kopiuj przez TeraCopy: 34 MB / s
Od samego początku widzimy, że transfer plików Explorer prawie maksymalizuje przepustowość sieci. 1 Gbps link jest równa 1000000000 bitów na sekundę, w jednostkach binarnych z bajtów , jest 119MBps. Eksplorator ma taktowanie 109 MB / s, a pozostałe 10 MB / s (co w zabawny sposób było twoim poprzednim maksimum :^Þ
) można łatwo obliczyć narzutem, obciążeniem tła i fragmentacją.
(Ponieważ szybkość transferu jest prawie równa prędkości sieci, możemy przypuszczać, że transfer plików Eksploratora jest jednokierunkowy i wysyłana jest tylko jedna kopia każdego pliku.) Eksplorator dostaje 110 MB / s dla dwóch dostępów do pliku na plik.
Teraz dla TeraCopy. Wygląda na to, że TeraCopy uzyskuje prawie dokładnie jedną trzecią prędkości Eksploratora.
W zależności od tego, czy okno preferencji dokładnie wskazuje algorytm, którego używa, TeraCopy może faktycznie wysłać cały plik źródłowy dwukrotnie, aby mógł sprawdzić kopię. Od razu zmniejsza to przepustowość o połowę. Jeśli pamięć podręczna jest włączona, to również zmniejsza szybkość, ponieważ musi czekać na zakończenie każdego zapisu, zanim będzie mogła wysłać nową porcję. W połączeniu z weryfikacją może jeszcze bardziej powalić.
Szybkość transferu 34 MB / s wydaje się rozsądna, jeśli masz włączoną weryfikację i buforowanie. Jeśli wyłączysz weryfikację i buforujesz, powinieneś uzyskać mniej więcej tyle samo, co Eksplorator (nadal możesz uzyskać nieco mniej, a nawet nieco więcej, w zależności od tego, jak różni się kod transferu plików używany przez TeraCopy od kodu używanego przez Eksploratora).
Jeśli masz ochotę przenieść prawie 10 GB, możesz również spróbować zmienić ustawienia i powtórzyć przesyłanie dla każdej z czterech permutacji i zanotować otrzymane prędkości (dla bezpieczeństwa zamów to, aby pamięć podręczna była między przerwami:) V+C+, V+C-, V-C+, V-C-
.