복사 할 때 플래시 드라이브 속도가 느려지는 이유는 무엇입니까?


27

몇 분 동안 복사하면 속도가 느려지고 느려집니다. 왜?

예를 들어 20MByte / sec로 시작하고 완료되면 @ 10MByte / s입니다.

다양한 파일, 크고 작은 등

업데이트 : 질문은 다양한 운영 체제와 관련이 있으므로 "일반적인 질문"입니다.


컴퓨터에 얼마나 많은 양의 복사 가능한 메모리가 있습니까?
KCotreau

PC-> USB-FLASH 드라이브 : 수백 기가 바이트 무료-> 몇 기가 바이트 무료
LanceBaynes

1
처음에는 메모리에 캐시 된 파일이 있으므로 빨리 전송 한 다음 하드 드라이브에서 이동하기 시작하면 속도가 느려집니다. 그래도 나는 확신 할 수 없다.
KCotreau

"sync"명령을 더 자주 사용하라고 조언하십니까?
LanceBaynes

sync 명령의 의미를 이해하지 못합니다. 당신은 그 질문에 대한 문맥을 제시하지 않았습니다. 나는 어떤 OS인지 확실하지 않습니다.
KCotreau

답변:


25

이 동작은 플래시 드라이브에만 국한된 것이 아니며 하드 드라이브에서도 볼 수 있습니다. 대부분의 운영 체제와 디스크는 작은 쓰기 속도를 높이기 위해 사용하는 캐싱 메커니즘과 관련이 있습니다.

20mb / s는 디스크 캐시에 기록되는 데이터입니다 (보통 빠르지 만 작은 메모리). 이 캐시가 가득 차면 디스크로 플러시되어야합니다. 이제 디스크 속도가 느려 병목 현상이 발생합니다.

예 1 : 큰 캐시 (예 : RAID5 컨트롤러와 같은)가 큰 컨트롤러가 있고 디스크에 플러시하기 전에 최대 500MB의 데이터를 캐시 할 수있는 경우 효과가 실제로 두드러집니다.

예 2 : 파일 복사가 "완료"된 상태에서 플래시 드라이브를 동시에 꺼내면 캐시가 재생중인 것을 볼 수 있습니다. 이 시점에서 파일이 디스크와 캐시간에 분할되므로 운영 체제와 관련하여 사본이 "완료"되지만 디스크 컨트롤러는 여전히 캐시에 남아있는 내용을 디스크에 기록해야합니다. 플래시 드라이브를 다시 넣고 파일을 검사하면 파일이 모두 없다는 것을 알 수 있습니다.

면책 조항 : 운영 체제 / 디스크에서 쓰기 캐싱을 활성화하지 않으면이 예제가 작동하지 않습니다.

또한 직장에서 디스크 캐싱 이 아닌 경우 보고있는 것이 조각화의 영향 일 수 있습니다. 디스크 용량이 커지고 사용 가능한 공간이 줄어들면 파일 시스템을 파일 위치를 찾기 위해 더 열심히 노력해야합니다.


또한 플래시 드라이브임을 명심하십시오. 하드웨어는 속도에 최적화 된 적이 없지만 경제성에 있습니다.
surfasb

긴 파일 복사 중에 성능이 저하되는 이유를 설명하지는 않습니다. 오히려 드라이브 수명 동안 성능이 저하 될 것입니다.
ta.speot.은 (는)

완벽하게 이해됩니다. 지속적인 작동이 아니라 버스트 속도에 최적화되어 있습니다. 플래시 드라이브에로드되는 파일의 평균 크기를 생각하십시오. 30 초 길이의 파일 전송을 최적화하거나 2 초 길이의 전송을 최적화 하시겠습니까? 두 예제에 추가하면 충분하게 설명됩니다.
surfasb

한 번에 평균 문을 통해 두 사람을 때려 눕히는 것과 같습니다. 처음에는 계산할 수 있습니다. 와, 나는 제로 사람들에서 그 문을 통해 한 번에 두 명으로 갔다. 내 속도는 훌륭하다. 그러면 선이 길어지고 샘플링이 좋아지고 결국 작은 샘플 = 나쁜 수학이라는 것을 알게됩니다. . .
surfasb

@ ta.speot.is 언급 한이 디스크 캐시가 하드 디스크의 OS에 의해 처리되며 하드 드라이브가 내부에 가지고있는 하드웨어 캐시와 다릅니다.
sepehr

1

캐싱으로 인해이 중 일부가 발생하지만 이것이 유일한 요인은 아닙니다. 캐싱이 유일한 요인이라면 쓰기 속도가 수백 MB / s에서 드라이브의 실제 쓰기 속도로 매우 빠르게 떨어질 것으로 예상하고 나머지 쓰기 동안 그대로 유지합니다. 그러나 이것은 디스크로 또는 디스크에서 대량 전송을 수행 할 때 관찰 한 것이 아닙니다 (예 : 부팅 이미지 굽기). 대신, 내가 관찰 한 것은 전체 작업 과정에서 속도가 점차 감소한다는 것입니다.

이러한 속도 저하는 데이터를 저장하는 데 사용되는 플래시 칩의 데이터 잔상으로 인해 발생하며 일부 블록은 두 번 이상 기록되어야합니다.

플래시 칩 내부에는 쓸 수있는 데이터 블록이 있습니다. 기록 할 때 컴퓨터가 할 수있는 것은 두 가지뿐입니다. 전체 블록을 지우거나 블록의 비트 일부 또는 전부를 0에서 1로 변경할 수 있습니다.

그러나 이러한 블록 중 일부는 다른 것보다 낫습니다. 특히 저품질 플래시 드라이브에서 새 데이터를 쓸 때 일부 비트는 때로는 쓰기 직후에 0으로 다시 전환 될 수 있습니다. 변하지 않아 따라서 블록에 쓸 때 OS는 모든 데이터가 올바르게 기록되었는지 확인해야하며 그렇지 않은 경우 동일한 데이터를 동일한 블록에 두세 번 기록하여 블록을 다시 실행해야합니다. 데이터가 고착 될 때까지

따라서 컴퓨터가 플래시 드라이브에 많은 양의 데이터를 쓰는 경우 다음은 그 방법에 대한 설명입니다 (완전히 정확하지는 않지만 충분합니다).

  1. 기록 할 첫 번째 블록 세트를 가져 와서 모두 작성하십시오.
  2. 방금 작성한 모든 블록을 읽고 일치하지 않는 블록 목록을 만듭니다.
  3. 지난 번에 올바르게 작성되지 않은 블록과 함께 다음 블록 세트를 작성하십시오.
  4. 모든 블록이 올바르게 쓰여질 때까지 2-3을 반복하십시오.

컴퓨터가 드라이브에 쓰는 중이면 처음으로 드라이브에 블록을 쓰는 속도를보고합니다. 또한 이전 블록을 동시에 다시 작성해야하므로 처녀 블록에 사용할 수있는 총 처리량은 다시 작성 횟수도 증가함에 따라 줄어 듭니다. 따라서 겉보기 쓰기 속도는 시간이 지남에 따라 감소합니다.


NTFS로 포맷 된 새로운 USB 3.0 플래시 드라이브에 12 Gig 7zip 파일을 작성하고 있습니다. 처음 1 분 동안 약 100MB / s로 이동 한 후 약 1 분 동안 25ish MB / s로 떨어졌다가 약 10 분 동안 11 정도로 떨어졌습니다. 서서히 내려가는 경사면이 아니고 3 개의 별개의 고원이었습니다.
Eric

16 기가 RAM의 오래된 i7 랩탑에서 아카이브를 복사하고있었습니다. RAM이 32GB 인 새 Xeon 랩톱에서 동일한 썸 드라이브에서 동일한 7zip 아카이브를 복사하는 데 2 ​​분이 걸렸으며 속도 저하가 없었습니다.
Eric

0

파일이 드라이브에 쓰여질 때 플래시 USB 드라이브 또는 하드 드라이브인지 여부는 데이터가 일치하는지 확인하기 위해 읽거나 읽지 않습니다. 그것은 영원히 걸릴 것입니다. 쓰기 검증은 하드웨어에 의해 수행되며 (Cyclic Redundancy check) 오류가 발생하면 하드웨어에서 오류를 감지하여 애플리케이션에 다시 게시됩니다. CPU 정지는 장치가 처리 할 수있는 것보다 빠르게 쓰기 때문에 발생하고 속도가 느려지는 정지 (일시 중지까지도)가 발생합니다. 내부 하드 드라이브에서는 이런 일이 발생하지 않습니다. Windows OS에서는 실제로 어떤 일이 일어나고 있는지 알 수 없지만 Linux에서는 USB 하드웨어가 계속 OK라고 말할 때까지 CPU가 일시 중지되는 것을 실제로 볼 수 있습니다


예를 들어 기존 SD 카드의 쓰기 속도와 SATA III SSD의 쓰기 속도를 비교하면 다른 저장 장치의 쓰기 속도 차이가 극도로 클 수 있습니다.
karel

3
개인적인 모욕을 삼가십시오. 게시물이 정확할 수 있지만 커뮤니티 표준을 준수하도록 게시물을 편집 해야합니다 .
벤 N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.