인프런 커뮤니티 질문&답변

김경민님의 프로필 이미지
김경민

작성한 질문수

김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성

컨텍스트 스위칭

CPU 코어 개수와 Worker Thread 개수 설정 관련 질문

해결된 질문

작성

·

248

·

수정됨

2

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)


3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
CPU Bound task가 주를 이룬다고 가정하더라도, 코어수 = Thread 수로 설정하는 것이 의미가 있는지 궁금합니다.

[상세]

nginx나 webflux 같은 논블럭킹 IO를 사용하는 경우, 영한님께서 강의에서 말씀해주셨듯이 worker thread 수를 core 수에 맞추라고 가이드를 주고 있는데,

저는 항상 궁금한 점이 서버에 프로세스가 nginx나 웹 애플리케이션만 있는 것이 아닌데, 저런 설정이 정말 의미가 있을까 하는 점이었습니다.

다수의 프로세스가 병렬로 처리되고 있으면, 설령 worker thread 수 = core 수로 설정하더라도 다른 프로세스가 core를 점유할테니 core를 점유하기 위해 기다리는 worker thread가 분명히 있을 것 같다는 생각이 들었기 때문입니다.

제가 생각한 부분에 오류가 있는 것일까요? 아니면 가이드에서 그런 환경까지는 생각하지 않고 idle한 제안을 해준 것 뿐일까요?

답변 1

3

안녕하세요. 김경민님, 공식 서포터즈 코즈위버입니다.

말씀하신것처럼 멀티프로세싱 환경에서는 코어를 다른 프로세스가 차지하고 있을 수 있으므로, 쓰레드를 코어수와 일치시켜도 비효율적인 컨텍스트 스위칭이 발생할 수 있습니다.

 

쓰레드와 코어 수 일치를 시작점으로 생각하시는 것이 맞고, 실제 성능은 테스트를 진행하며 측정후에 결정하는것이 맞습니다.

 

감사합니다.

김경민님의 프로필 이미지
김경민
질문자

답변 감사합니다.

김경민님의 프로필 이미지
김경민

작성한 질문수

질문하기