Skip to content

Instantly share code, notes, and snippets.

@toriato
Created October 21, 2024 05:20
Show Gist options
  • Save toriato/f2cdc410190efee090d6e00eb6fc6c9a to your computer and use it in GitHub Desktop.
Save toriato/f2cdc410190efee090d6e00eb6fc6c9a to your computer and use it in GitHub Desktop.
SMB 프로토콜에서 발생하는 캐시되지 않은 파일의 읽기 속도 저하 문제

image

계기

윈도우 데스크탑에서 서버로 사용 중인 미니PC에 물린 DAS 내 파일 가져올 때 속도가 더럽게 느림

과정

  • 다음 명령어로 파편화 여부를 확인

    $ filefrag -v /path/to/file  
  • 리눅스에선 파일 재사용을 감안해 빈 메모리 공간이 있다면 읽은 파일을 캐시
    다음 명령어로 메모리에 쌓인 캐시를 제거할 수 있음

    https://www.kernel.org/doc/Documentation/sysctl/vm.txt

    $ free -h && sync && sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' && free -h
  • 테스트에 사용된 HDD는 ST8000DM004

  • 테스트에 사용된 모든 케이블은 모두 5Gbps 이상 지원

  • 테스트는 1회씩 진행

  • 파편화된 파일은 약 2GB 용량의 동영상 파일을 사용

  • 비파편화된 파일은 1GB, 5GB 용량의 dd 명령어로 생성한 파일을 사용

  • 캐시된 로컬 속도는 메모리에서 읽어오는거니 의미 없음

  • 캐시되지 않은 로컬 속도는 HDD의 최대 읽기 속도

  • 라우터의 최대 지원 속도가 1Gbps이므로 원격 최대 속도는 125MB/s 언저리로 표시되는 것이 정상

  • SMB+shell 은 파일 탐색기에서 직접 복사 및 붙여넣기 했을 때 속도를 뜻함

결과

테스트 캐시 X 캐시 X + 파편화 캐시 O 캐시 O + 파편화
Local 157 MB/s 44 MB/s 2000 MB/s 1250 MB/s
Remote SFTP 108 MB/s 50 MB/s 112 MB/s 112 MB/s
Remote SMB+shell 68 MB/s 38 MB/s 113 MB/s 113 MB/s
Remote SMB+robocopy 70 MB/s 35 MB/s 113 MB/s 113 MB/s

캐시되지 않은 파일에 한하여 SFTP 프로토콜이 SMB 프로토콜 대비 30-50% 가량 속도가 빠른 것을 알 수 있음
이유는... 아직 잘 몰루겠음...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment