Po kilku minutach kopiowania staje się coraz wolniejszy. Czemu?
np. Zaczyna się od 20 MB / s, a kiedy z nim skończy, wynosi @ 10 MB / s.
Różne pliki, duże, małe itp.
AKTUALIZACJA: pytanie dotyczy różnych systemów operacyjnych, więc jest to „pytanie ogólne”
usb-flash-drive
file-transfer
LanceBaynes
źródło
źródło
Odpowiedzi:
To zachowanie nie jest specyficzne dla twojego dysku flash, możesz to również zobaczyć na dyskach twardych. Ma to związek z mechanizmem buforowania wykorzystywanym przez większość systemów operacyjnych i dysków w celu przyspieszenia małych zapisów.
20 Mb / s, które widzisz, to dane zapisywane w pamięci podręcznej dysku (zwykle szybka, ale niewielka pamięć). Gdy pamięć podręczna jest pełna, należy ją opróżnić na dysk - a teraz wolniej działa dysk.
Przykład 1: Efekt jest naprawdę wyraźny, gdy masz kontroler z dużą pamięcią podręczną (jak dobry kontroler RAID5), w którym ~ 500mb danych może zostać szybko zbuforowanych, zanim będzie trzeba je zrzucić na dysk.
Przykład 2: Możesz zobaczyć pamięć podręczną podczas odtwarzania, jeśli wyciągniesz dysk flash w tym samym czasie, gdy kopia pliku „zakończyła się”. W tym momencie plik jest dzielony między dysk a pamięć podręczną - więc kopia jest „gotowa”, jeśli chodzi o system operacyjny, ale kontroler dysku nadal musi zapisać na dysku to, co zostało w pamięci podręcznej. Jeśli ponownie włożysz dysk flash i sprawdzisz plik, zobaczysz, że to nie wszystko.
Oświadczenie: Te przykłady nie będą działać, jeśli nie masz włączonego buforowania zapisu w systemie operacyjnym / na dysku.
Co więcej, jeśli nie działa buforowanie dysku w pracy, prawdopodobnie jest to efekt fragmentacji. Gdy dysk się zapełnia i jest coraz pełniej, dostępne jest coraz mniej wolnego miejsca, a system plików musi ciężej pracować, aby znaleźć miejsca na umieszczenie plików.
źródło
Chociaż buforowanie powoduje niektóre z tych przyczyn, nie jest to jedyny czynnik. Gdyby buforowanie było jedynym czynnikiem, spodziewalibyśmy się, że prędkość zapisu szybko spadnie z kilkuset MB / s do rzeczywistej prędkości zapisu bardzo szybko i pozostanie tam przez resztę zapisu. Nie zaobserwowałem tego jednak podczas wykonywania dużych transferów na dysk iz dysku (np. Podczas nagrywania obrazów rozruchowych). Zamiast tego obserwuję, że prędkość stopniowo maleje w trakcie całej operacji.
To spowolnienie jest spowodowane przez remanencję danych na chipach flash używanych do przechowywania danych, co wymaga, aby niektóre bloki zostały zapisane więcej niż jeden raz.
Wewnątrz układu flash znajduje się blok danych, w którym można zapisać. Podczas pisania są tylko dwie rzeczy, które komputer może zrobić: może usunąć cały blok lub zmienić niektóre (lub wszystkie) bity w bloku od 0 do 1.
Jednak niektóre z tych bloków są lepsze od innych, szczególnie w dyskach flash o niższej jakości, w wyniku czego podczas zapisywania na nich nowych danych niektóre bity mogą czasem same same wrócić do zera zaraz po zapisaniu i nie się nie zmieniają. Dlatego podczas zapisywania do bloku system operacyjny musi sprawdzić, czy wszystkie dane zostały poprawnie zapisane, a jeśli nie, musi powtórzyć blok, zapisując te same dane w tym samym bloku dwa lub trzy razy aż dane się zatrzymają.
Tak więc, gdy komputer zapisuje na dysku flash kilka danych, oto (nie do końca dokładne, ale wystarczająco dobre) wyjaśnienie, w jaki sposób to robi:
Gdy komputer pisze na dysk, zgłasza szybkość, z jaką zapisuje bloki na dysku po raz pierwszy. Ponieważ będzie musiał również przepisywać wcześniejsze bloki w tym samym czasie, całkowita przepustowość, którą można zastosować dla dziewiczych bloków, maleje wraz ze wzrostem liczby ponownych zapisów, które również muszą się zdarzyć. Zatem pozorna prędkość zapisu maleje z czasem.
źródło
Gdy plik jest zapisywany na dysku, niezależnie od tego, czy jest to dysk flash USB, czy dysk twardy, dane NIE są / NIGDY nie odczytywane, aby sprawdzić, czy są zgodne. To zajmie wieczność. weryfikacja zapisu odbywa się sprzętowo (cykliczna kontrola nadmiarowa), a jeśli wystąpi błąd, jest on przesyłany z powrotem do aplikacji ze sprzętu wykrył błąd. Przeciąganie, które występuje i spowalnia (nawet do pauzy), jest powodowane przez procesor piszący szybciej, niż urządzenie może sobie z tym poradzić. Nie znajdziesz tego na wewnętrznych dyskach twardych. Nigdy nie zobaczysz, co tak naprawdę dzieje się w systemie operacyjnym Windows, ale w systemie Linux widać, że procesor zatrzymuje się, dopóki sprzęt USB nie powie OK, aby kontynuować
źródło