짧은 대답 : 당신이 플래시 디스크에 글을 쓰고 있다는 것을 감안할 때, 나는 스레드의 수가 많은 편이라는 것을 기대하지 않을 것입니다. 그러나 차이가 있다면 다중 스레드가 단일 스레드보다 빠르지 만 느리지는 않을 것입니다.
더 이상 답 :
난 당신이 약 6 년 전 설명하는 하나의 유사한 프로그램을 작성 -이 내장 된 파워 리눅스 카드에서 실행 및 읽기/하드 SCSI로/동시에 여러 개의 오디오 파일을 작성 드라이브. I/O를 수행하는 단일 스레드로 원래 작성 했으므로 최상의 처리량을 얻을 수 있다고 생각했기 때문에이 경우가 아니 었습니다.
특히, 여러 스레드가 동시에 읽거나 쓰는 경우 SCSI 계층은 모든 다른 스레드의 보류중인 모든 요청을 인식하고 I/O 요청을 재정렬하여 드라이브 헤드를 검색 할 수있었습니다 최소화되었다. 반면에 단일 스레드 -IO 시나리오에서는 SCSI 계층이 단일 "다음"미해결 I/O 요청에 대해서만 알고 있으므로 최적화를 수행 할 수 없었습니다. 이것은 많은 경우에 드라이브 헤드의 여분의 이동을 의미하므로 처리량이 낮습니다.
물론 응용 프로그램이 SCSI 또는 탐색에 필요한 헤드가있는 회전 드라이브를 사용하지 않으므로 문제가되지 않을 수도 있지만 파일 시스템/하드웨어 계층에서 수행 할 수있는 다른 최적화가있을 수 있습니다 동시에 여러 개의 I/O 요청을 인식합니다. 알아내는 유일한 방법은 다양한 모델을 시도하고 결과를 측정하는 것입니다.
제 제안은 디스크 I/O를 스레드 풀로 이동하여 네트워크 I/O에서 디스크 I/O를 분리하는 것입니다. 그런 다음 I/O 스레드 풀의 최대 크기를 1에서 N까지, 그리고 각 크기 측정에서 시스템 성능을 변경할 수 있습니다. 그러면 코드를 두 번 이상 다시 작성할 필요없이 특정 하드웨어에서 가장 잘 작동하는 것이 무엇인지 명확하게 알 수 있습니다.
CF 카드는 실제 플래시 메모리 기반입니까, 아니면 microHDD (Microdrive)입니까? – osgx
실제 플래시이지만 사용 된 컨트롤러로 인해 OS에서 ATA 장치로 인식됩니다. – Nick