2011-01-28 6 views
1

파일 (하드 디스크) I/O의 특성을 측정하는 방법은 무엇입니까? 예를 들어 하드 디스크 (속도 X)와 cpu i7 (또는 코어 수에 관계없이) 및 Y 양의 RAM (ZHz BIOS 포함)이있는 컴퓨터 (예 : Windows OS) :파일 (하드 디스크) I/O의 특성을 측정하는 방법은 무엇입니까?

  • HD에 병렬로 기록 할 수있는 최적의 파일 수는 어느 정도입니까?
  • 병렬로 HD에서 읽을 수있는 최적의 파일 수는 어느 정도입니까?
  • 더 빠른 글을 돕는 파일 시스템의 기능. (좋아요 : 다른 섹터 (또는 하드)에 바이너리 데이터의 일괄 처리를 작성한 다음 파일로 바인딩 할 수있는 기능이나 도구가 있습니까? OS의 기본 파일 입출력에 대해 많이 알지 못합니다. 그러한 도구를 가지고 있으면 합리적 이군!)
  • 이전에 그러한 도구가 있다면 .NET에도 있습니까?

최대한 빨리 (그리고 병렬로) 대용량 파일 (웹이나 다른 소스를 통해 스트리밍)을 작성하고 싶습니다. 나는 이것을 C#에서 코딩하고있다. 그리고 그것은 다운로드 관리자처럼 작동합니다. 스트리밍이 중단되면 나중에 처리 할 수 ​​있습니다.

답변

3

답변은 자주 사용하는 방법에 따라 다릅니다. 전체 운영 체제는 서로 다른 사용 시나리오 간의 큰 상충 관계입니다. NTFS 파일 시스템의 경우 블록 크기를 4k로 설정하고 MTFS에서는 블록 크기보다 작은 파일을 저장하는 NTFS, 파일 수, 파일 수, 조각화 등을 언급 할 수 있습니다.

대용량 파일을 작성하려는 경우 블록 64k의 크기가 좋을 수도 있습니다. 많은 양의 데이터를 읽으려는 경우입니다. 소량의 데이터를 읽으면 작은 크기가 좋습니다. OS는 4k 페이지에서 작동하므로 4k가 좋습니다. 압축과 암호화는 SQL과 Exchange는 물론 4k 페이지 (iirc)에서만 작동합니다.

작은 파일 (< 4k)을 쓰면 MFT 안에 저장되므로 "ekstra jump"를 할 필요가 없습니다. 이것은 쓰기 작업 (읽기에는 MFT 캐시가있을 수 있음)에서 특히 유용합니다. MFT는 파일을 순서대로 (예 : 블록 1000-1010,2000-2010) 저장하므로 조각화로 인해 MFT가 커집니다. parallell에서 디스크에 파일을 쓰는 것이 주요 원인 중 하나이며, 다른 하나는 파일을 삭제하는 것입니다. 파일에 필요한 크기를 미리 할당 할 수 있으며 Windows는 조각화를 막기 위해 디스크에서 적절한 위치를 찾으려고합니다. O&O Defrag과 같은 실시간 조각 모음 프로그램도 있습니다.

Windows는 binarystream을 디스크의 실제 위치에 거의 직접 매핑하므로 다른 읽기/쓰기 메소드를 사용하면 다른 요인만큼 성능이 향상되지 않습니다. 최대 속도 프로그램의 경우 디스크에 직접 메모리 매핑을위한 기술을 사용하십시오. http://en.wikipedia.org/wiki/Memory-mapped_file

디스크의 캐싱을 높이려면 Windows의 장치 관리자 (하드 디스크) 아래에 옵션이 있습니다. 이것은 컴퓨터가 bluescreens 또는 loose power 인 경우 ut가 파일 시스템을 손상시킬 수 있기 때문에 위험하지만, 더 작은 파일 (그리고 모든 쓰기)을 작성할 때 성능이 크게 향상됩니다. 디스크가 사용 중이면 검색 시간이 줄어들어 특히 유용합니다. Windows는 기본적으로 이동하는 방향으로 모든 응용 프로그램을 제공하기 위해 앞뒤로 표면을 통해 하드 디스크 헤드를 움직이는 것을 의미하는 엘리베이터 알고리즘을 사용합니다.

희망이 도움이됩니다. :)

+0

고마워요! 최대한 빨리 (그리고 병렬로) 대용량 파일 (웹 또는 다른 소스를 통해 스트리밍)을 작성하고 싶습니다! 나는 이것을 C#에서 코딩하고있다. –

관련 문제