이 설정을보고 있습니다.
- Windows Server 2012
- 1TB NTFS 드라이브, 4KB 클러스터, ~ 90 % 가득 참
- 10,000 개 폴더에 저장된 ~ 10M 파일 = ~ 1,000 개 파일 / 폴더
- 대부분 아주 작은 파일 <50KB
- 디스크 어레이에서 호스팅되는 가상 드라이브
응용 프로그램이 임의의 폴더에 저장된 파일에 액세스하면 각 파일을 읽는 데 60-100ms가 걸립니다. 테스트 도구를 사용하면 파일을 열 때 지연이 발생하는 것으로 보입니다. 그런 다음 데이터를 읽는 데 시간이 조금 걸립니다.
요약하면 이는 50 개의 파일을 읽는 데 3-4 초가 걸리며 예상보다 훨씬 많은 시간이 소요됨을 의미합니다. 쓰기는 일괄 적으로 수행되므로 여기서 성능은 문제가되지 않습니다.
나는 이미이 숫자에 도달하기 위해 SO와 SF에 대한 조언을 따랐다.
- 폴더를 사용하여 폴더 당 파일 수 줄이기 ( 파일 시스템에 백만 개의 이미지 저장 )
contig
폴더 및 파일 조각 모음을 실행 합니다 ( https://stackoverflow.com/a/291292/1059776 )- 8.3 이름 및 마지막 액세스 시간 비활성화 ( 성능을 위해 NTFS 파일 시스템 구성 )
읽기 시간에 대해 어떻게해야합니까?
- 파일 당 60-100ms가 정상이라고 생각하십시오 (그렇지 않습니까?)
- 설정을 개선 할 수있는 방법이 있습니까?
- 정확한 시간을 알 수있는 저수준 모니터링 도구가 있습니까?
최신 정보
주석에서 언급 한 바와 같이 시스템은 Symantec Endpoint Protection을 실행합니다. 그러나이 기능을 비활성화하면 읽기 시간이 변경되지 않습니다.
PerfMon은 읽기 당 10-20ms를 측정합니다. 이것은 모든 파일 읽기가 ~ 6 I / O 읽기 작업을 수행한다는 것을 의미합니다. 이것이 MFT 조회 및 ACL 검사입니까?
MFT의 크기는 ~ 8.5GB이며 주 메모리보다 큽니다.