해결된 질문
작성
·
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
안녕하세요. 김경민님, 공식 서포터즈 코즈위버입니다.
말씀하신것처럼 멀티프로세싱 환경에서는 코어를 다른 프로세스가 차지하고 있을 수 있으므로, 쓰레드를 코어수와 일치시켜도 비효율적인 컨텍스트 스위칭이 발생할 수 있습니다.
쓰레드와 코어 수 일치를 시작점으로 생각하시는 것이 맞고, 실제 성능은 테스트를 진행하며 측정후에 결정하는것이 맞습니다.
감사합니다.
답변 감사합니다.