태그 보관물: benchmarking

benchmarking

나쁜 NTFS 성능 1 ~ 1.5 분

예를 들어 Linux / ext3과 비교하여 NTFS 성능이 왜 그렇게 큰가요? Subversion에서 (큰) 소스 트리를 체크 아웃 할 때 가장 자주 이것을 봅니다. 체크 아웃은 NTFS에서 약 10-15 분이 걸리며 Linux (거의 동일한 하드웨어에서)의 해당 체크 아웃은 1 ~ 1.5 분 정도 걸립니다.

어쩌면 이것은 많은 작은 파일을 처리하는 데 특정 적이며 NTFS는 큰 파일에 더 적합하지만 왜 그럴까요? 작은 파일의 NTFS 성능을 향상시키는 것이 일반적으로 Windows 성능에 큰 도움이되지 않습니까?

편집 : 이것은 “ext3에 비해 NTFS 짜증”염증성 질문으로 의미되지 않습니다; NTFS가 특정 경우에 나쁜 성능을 보이는 이유에 진심으로 관심이 있습니다. 디자인이 나쁘거나 (의심스러운) 다른 문제가 있습니까?



답변

NTFS에는 Master File Table 이라는 것이 있습니다. 당신이 그것에 대해 읽을 때 정말 멋진 소리.

ext3가 디스크 사용률을 최대 약 95 %까지 올릴 수 있다는 것을 알 수 있습니다. 반면 MFT는 NTFS가 디스크의 90 % 이상을 사용하지 않기를 원한다는 의미입니다. 그러나 나는 그것이 당신의 문제가 아니라고 가정하고 문제는 많은 작은 파일에 대한 많은 작업과 관련이 있다고 가정합니다.

여기에서 차이점 중 하나는 작은 파일을 만들 때 발생하는 것입니다. 파일이 블록 크기보다 작은 경우 파일은 자체 블록에 기록되지 않고 MFT에 저장됩니다. 파일을 만들 때와 똑같은 상태로 유지하면 좋습니다. 실제로 svn은 파일을 만들기 위해 파일을 만진 다음 파일에 추가하거나 파일에서 제거하거나 자체 블록으로 이동하기에 충분하지 않아 수정하면 작업이 느리다는 것을 의미합니다. 또한 많은 작은 파일을 읽는 것만으로도 블록 당 배수로 MFT가 모두 상주하는 MFT에 약간의 스트레스를줍니다. 왜 그렇게할까요? 사전에 조각화를 피하고 더 많은 블록을 더 효과적으로 사용하며 일반적으로 좋은 것입니다.

대조적으로 ext2 및 3에서는 모든 파일의 파일 블록이 디렉토리 메타 데이터가있는 디렉토리의 옆에 저장됩니다 (가능한 경우 디스크 조각 모음이없고 공간이 약 20 % 인 경우). 이것은 svn이 디렉토리를 열면 드라이브의 16MB 캐시에 기본적으로 많은 블록이 무료로 캐시 된 다음 다시 커널 캐시에 캐시된다는 것을 의미합니다. 이러한 파일에는 .svn 파일과 마지막 업데이트의 수정 파일이 포함될 수 있습니다. 이것은 svn이 다음에보고있는 파일 중 일부 일 가능성이 있기 때문에 편리합니다. NTFS는이 작업을 수행하지 못하지만 MFT의 많은 부분이 시스템에 캐시되어야하지만 다음에 원하는 부분이 아닐 수도 있습니다.


답변

글쎄, 당신의 특별한 문제는

  1. Subversion 자체는 UNIX 환경에서 제공되므로 Windows 버전은 유사한 성능 특성을 가정합니다.
  2. gazillions의 작은 파일로 NTFS 성능은 실제로 좋지 않습니다.

당신이보고있는 것은 단순히 그 운영 체제에 대한 성능 가정을 가진 특정 운영 체제를 위해 설계된 것의 인공물입니다. 이것은 일반적으로 다른 시스템으로 가져갈 때 심하게 손상됩니다. 다른 예로는 포크와 스레딩이 있습니다. 유닉스 계열의 경우, 무언가를 병렬화하는 전통적인 방법은 다른 프로세스를 생성하는 것입니다. 프로세스를 시작하는 데 최소 5 배 이상 걸리는 Windows의 경우 이는 매우 나쁜 생각입니다.

일반적으로 아키텍처가 매우 다른 다른 OS에 특정 OS의 아티팩트를 부여 할 수는 없습니다. NTFS에는 저널링 및 ACL과 같이 그 시점에서 널리 사용되는 UNIX 파일 시스템에는 없었던 많은 파일 시스템 기능이 있다는 것을 잊지 마십시오. 그것들은 비용이 듭니다.


언젠가는 자유 시간이 많을 때 트랜잭션 지원 ( “수백만 개의 작은 파일을 처리하는 문제”를 제거해야 함) 및 대체 데이터와 같은 NTFS의 기능을 활용하는 SVN 파일 시스템 모듈을 작성할 계획이었습니다. 스트림 (별도의 .svn디렉토리 가 필요하지 않음). 좋은 일이지만 SVN 개발자는 가까운 장래에 그러한 것들을 구현할 것입니다.

참고 사항 : 사용중인 대형 SVN 저장소의 단일 업데이트에는 약 250,000 개의 파일 작업이 필요했습니다. 약간의 작은 목소리는 이것이 변경된 24 파일에 대해 정말로 많은 것을 말해줍니다 …


답변

NTFS 작동 방식에 대한 Microsoft 정보 는 다음과 같습니다 . 찾고자하는 것은 과잉 일 수 있지만,이를 연구하면 NTFS에 어떤 시나리오가 있는지에 대한 정보가 부족할 수 있습니다.


답변