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

bigpel66님의 프로필 이미지
bigpel66

작성한 질문수

Node.js 교과서 - 기본부터 프로젝트 실습까지

cluster로 멀티 프로세싱 하기

Cluster를 통한 Multi Processing에 질문이 있어요.

해결된 질문

작성

·

229

0

안녕하세요!

Cluster를 통해서 Multi Processing을 학습 중에 궁금한 것이 생겨서 질문을 남기게 되었습니다.

현재 이용하고 있는 컴퓨터는 8 Core 16 Thread로 동작하고 있습니다.

Cluster 강의를 진행하면서 os.cpus().length만큼 Worker Process를 생성하다가 알게 된 것인데, Worker Process가 16개가 생성이 되는 것을 확인할 수 있었습니다.

Core와 Process는 분명 다른 것으로 알고 있고, Worker Process가 Core 수에 맞춰 8 생성이 될 줄 알았는데, Thread의 수만큼 생성이 되는 이유가 무엇인가요?

답변 4

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

1. 네 맞습니다.

2. 물리적인 코어 8개는 그냥 하드웨어일 뿐입니다. 그걸 각각 2개로 인식시켜주는 기술이 인텔같은 곳에서 내놓은 하이퍼쓰레딩이고요. 컴퓨터는 그저 16개(논리적 코어)라고 인식합니다.

3. 코어의 숫자는 고정입니다. 달라지지 않습니다. 노드는 기본적으로 1개의 코어(논리적 코어)를 씁니다.

4. 8코어/16쓰레드는 그냥 8물리코어/16논리코어라고 보시면 됩니다. 프로그래밍에서 쓰는 쓰레드는 저기의 쓰레드와 의미가 완전히 다릅니다. 프로세스와 쓰레드 이 부분은 운영체제를 공부하셔야 합니다.

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

컴퓨터는 코어를 16개라고 인식합니다. 코어8개는 물리적인 코어이고 os는 코어를 16(쓰레드 수)로 생각합니다. 참고로 여기의 쓰레드는 프로세스/쓰레드랑 다른겁니다.

0

bigpel66님의 프로필 이미지
bigpel66
질문자

감사합니다 !! 헷갈려 하던 부분들이 이해가 되었습니다!!

0

bigpel66님의 프로필 이미지
bigpel66
질문자

답변 감사합니다..! 추가적으로 질문이 있습니다!!..

1. os에서 인식하는 16개의 코어로 clustering을 하게 되었을 때, 16개의 코어는 각각 Server를 만들어서 Client의 Request를 나누어 받으면서 Request에 대한 로직을 처리하게 되는 것이라고 이해를 하면 될까요?

2. 그럼 8코어 16쓰레드에서 "16쓰레드"라는 것은 위와 같이 작용한다면, 선생님께서 말씀하신 물리적인 코어 8개는 어떤 역할을 하는 것인가요?

3. 또한 Node.js를 Run하면 사용되는 "물리적인" Core의 수는 사용자의 작업에 따라서 달라지는 것인가요 아니면 1개의 "물리적인" Core만 사용이 되는 것인가요?

4. "참고로 여기의 쓰레드는 프로세스/쓰레드랑 다른겁니다."라는 말씀에서 "여기의 쓰레드"라는 os가 인식하는 쓰레드와 8코어/16쓰레드의 표기에서의 쓰레드와 어떻게 다른 것인가요?

질문이 많네요...ㅠㅠㅠㅠㅠ

bigpel66님의 프로필 이미지
bigpel66

작성한 질문수

질문하기