백만 개의 파일을 처리하려면 몇 개의 스레드를 사용해야 합니까? 당신의 대답을 어떻게 정당화합니까? 작년 운영체제 시험에 나왔던 문제인데 여러분의 생각이 궁금합니다. 10,000개의 스레드가 각각 100개의 파일을 처리하는 것이 좋은 비율이라고 생각합니다.
답변1
일반적으로 I/O가 한계입니다. I/O를 기다리는 스레드가 너무 많아도 소용이 없습니다.
n개의 CPU 코어가 풀타임으로 작동하고 I/O가 100%가 되도록 최적의 비율을 정의할 수 있습니다. 그런 다음 최적의 스레드 수는 파일을 처리하는 데 필요한 시간과 입력을 읽고 출력을 쓰는 데 필요한 시간의 비율로 정의됩니다.
예:
- 파일을 읽고 쓰는 것이 파일을 처리하는 것보다 오래 걸리는 경우 하나의 스레드로 충분합니다. 항상 I/O 요청을 사용할 수 있도록 두 번째 스레드/프로세스를 갖는 것이 합리적일 수 있습니다. 그러나 두 번째 스레드는 유휴 I/O 우선순위로 실행되어야 합니다.
- 파일을 처리하는 데 파일 I/O 시간의 10배가 소요된다면 10개의 스레드가 최선의 선택이 될 것입니다.