많은 양의 작은 파일을 전송할 때 병목 현상이 발생합니까?

많은 양의 작은 파일을 전송할 때 병목 현상이 발생합니까?

소스 코드가 포함된 폴더 모음을 백업하는 동안(나중에 와 같은 라이브러리 파일이 포함된 특정 폴더를 제외할 수 있다는 것을 깨달았습니다 node_modules) 파일 전송 속도가 크롤링 수준으로 느려지는 것을 발견했습니다(일반적인 60mb/s에 비해 몇 kb/s). 백업 드라이브가 허용하는 경우).

병목 현상이 발생하는 위치를 이해하고 싶습니다. 순수 I/O와 인터리브하여 전체 속도를 늦추는 계산을 수행해야 합니까? 아니면 대상 드라이브의 파일 시스템 인덱스에 파일 간에 획득하고 해제해야 하는 중앙 잠금 장치가 있습니까?

대상 백업 드라이브에서 NTFS를 사용하고 있는데 HDD입니다.

답변1

문제는 하드 디스크에서 파일이 어디에 있는지 알려주는 파일 시스템 카탈로그에 여러 번 액세스해야 한다는 것입니다.

각 파일에 대해 복사는 다음을 수행해야 합니다.

  • 소스 카탈로그에서 소스 파일 열기
  • 대상 카탈로그에 대상 파일을 생성합니다.
  • 파일 복사
  • 소스 파일을 닫고 카탈로그 항목을 읽음으로 표시합니다.
  • 대상 파일을 닫고 카탈로그 항목을 생성된 것으로 표시합니다.

이로 인해 원본 및 대상 디스크의 헤드가 각 파일을 복사하는 동안 카탈로그의 파일 메타데이터에서 파일 자체로 여러 번 전환됩니다.

SSD에서는 그다지 중요하지 않지만 HDD에서는 많은 수의 작은 파일 복사본을 크롤링하는 속도가 느려질 수 있습니다. 기본적으로 HDD는 대부분 헤드를 이동하므로 읽기나 쓰기보다 훨씬 느린 작업입니다.

파일을 닫으면 해당 파일이 디스크에 플러시되므로 Windows는 RAM을 캐시로 효과적으로 사용할 수도 없습니다.

관련 정보