2013-10-15 2 views
0

Java에서 많은 파일을 읽고, 처리하고 업데이트해야한다고 가정합니다. 16 코어의 컴퓨터 한 대를 사용할 예정입니다. IO 바인딩 (읽기 및 업데이트 파일)과 CPU 바인딩 (처리) 작업이 모두 있으므로 2 개의 스레드 풀을 할당합니다.스레드 풀 크기를 선택하는 방법은 무엇입니까?

16 개의 스레드 (스레드 수 == CPU 수)로 CPU 바인딩 된 작업을위한 하나의 풀을 할당합니다. 이제 IO 바인딩 풀 크기가 무엇인지 궁금합니다. 어떤 크기의 풀을 제안하겠습니까?

+3

테스트를 제안합니다. 아는 실제 결과를 이길 수는 없습니다. – Kayaman

+1

사용할 수있는 프로세싱 코어의 수는 말할 수 있습니다 ... – Thihara

+0

운영 체제 용으로 적어도 1 개의 CPU를 남겨두고 실제 사용 가능 지역에서 병목 현상이 있는지 확인하기 위해 사용 가능한 도구로 테스트 해보십시오. – RamonBoza

답변

4

저장 용량 및 수행하려는 IO 종류에 따라 다릅니다. 예를 들어, 하드 디스크의 긴 순차 쓰기는 단일 IO 스레드를 선호하지만 요구 사항에 따라 크기를 조정할 수 있습니다.

이 대답에서는 https://stackoverflow.com/a/2821025/2855891입니다. BlackAura는 실험과 프로파일 링이 왜 실제로 알아낼 수있는 유일한 방법인지 설명합니다.

이 주제에 대해서는 이미 매우 좋은 기사가 있습니다.

관련 문제