Dlaczego prędkość mojego dysku flash spada podczas kopiowania?

27

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”

LanceBaynes
źródło
Ile kopiujesz w porównaniu do ilości wolnej pamięci w komputerze?
KCotreau
Komputer -> Napęd USB-FLASH: kilkaset GB za darmo -> kilka GB za darmo
LanceBaynes
1
Podejrzewam, że na początku masz pliki buforowane w pamięci, więc szybko się przesyłają, a potem, gdy zaczynają być przenoszone z dysku twardego, spowalnia. Nie mogę być jednak pewien w twoim przypadku.
KCotreau
więc radzisz mi częściej używać polecenia „synchronizacja”?
LanceBaynes
Nie rozumiem, co masz na myśli przez polecenie synchronizacji. Nie podałeś kontekstu dla pytania. Nie jestem nawet pewien, jaki system operacyjny.
KCotreau

Odpowiedzi:

25

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.

ta.speot.is
źródło
Pamiętaj też, że jest to dysk flash. Jego sprzęt nigdy nie był zoptymalizowany pod kątem szybkości, ale raczej przystępności cenowej.
surfasb
Nie sądzę, żeby to wyjaśniało, dlaczego wydajność spadała podczas długich kopii plików. Wydajność raczej spadałaby w trakcie eksploatacji dysku, tak?
ta.speot.is
To ma sens. Są zoptymalizowane pod kątem prędkości serii, a nie ciągłych operacji. Pomyśl o średnim rozmiarze plików ładowanych na dyski flash. Czy zoptymalizowałbyś się do transferu plików o długości 30 sekund, czy zoptymalizowałbyś się do transferu o długości 2 sekund? Dodaj to do swoich dwóch przykładów, a to wyjaśnia wiele.
surfasb
To tak, jakbyś próbował przepchnąć dwie osoby przez przeciętne drzwi naraz. Na początku możesz obliczyć. Wow, przeszedłem od zerowych ludzi przez te drzwi do dwóch na raz. Moja prędkość jest świetna. Następnie linia wydłuża się, a próbkowanie staje się lepsze, a w końcu zdajesz sobie sprawę, że mała próbka = zła matematyka. . .
surfasb
@ ta.speot.is Podejrzewam, że wspomniana pamięć podręczna dysku jest obsługiwana przez system operacyjny na dysku twardym i różni się od pamięci podręcznej sprzętu, którą dyski twarde mają wewnętrznie, prawda?
sepehr
1

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:

  1. Weź pierwszy zestaw bloków do napisania i napisz je wszystkie.
  2. Przeczytaj wszystkie bloki, które właśnie napisaliśmy i zrób listę tych, które nie pasują
  3. Napisz następny zestaw bloków wraz z tymi, które nie zostały poprawnie zapisane ostatnim razem.
  4. Powtarzaj 2-3, aż wszystkie bloki zostaną poprawnie zapisane.

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.

AJMansfield
źródło
Piszę plik 12 Gig 7zip na nowy dysk flash USB 3.0 sformatowany jako NTFS. Przez pierwszą minutę działało około 100 MB / s, a następnie spadło do 25 MB / s przez około minutę, a następnie spadło do około 11 MB na około 10 minut. Nie był to stopniowy spadek, lecz 3 wyraźne płaskowyże.
Eric
Kopiowałem archiwum ze starego laptopa i7 z 16 gigabajtami pamięci RAM. Skopiowanie tego samego archiwum 7zip z tego samego napędu thumbdrive na moim nowym laptopie Xeon z 32 gigabajtami pamięci RAM zajęło 2 minuty i prędkość nie spadła.
Eric
0

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ć

stevedonato
źródło
Różnica prędkości zapisu różnych urządzeń pamięci masowej może być ogromna, na przykład porównaj prędkość zapisu starej karty SD z prędkością zapisu dysku SSD SATA III.
karel
3
Powstrzymaj się od osobistych zniewag. Chociaż Twój post może być poprawny, musisz go edytować , aby był zgodny z naszymi standardami społeczności.
Ben N