Cluster를 통한 Multi Processing에 질문이 있어요.
안녕하세요!
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
답변 감사합니다..! 추가적으로 질문이 있습니다!!..
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쓰레드의 표기에서의 쓰레드와 어떻게 다른 것인가요?
질문이 많네요...ㅠㅠㅠㅠㅠ
실제 서비스에서도 cluster를 사용하나요?
1
313
2
캐싱에 관하여
0
279
3
salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?
0
347
1
게시물 올리기 오류
0
408
1
캐슁 이후 로그인창
0
266
1
kakao passport 질문있습니다.
0
493
3
global객체 공유 질문드립니다.
1
417
1
서버가 죽어버리네요
0
1047
8
포링키 문제..
0
234
2
커넥션 플래시 설치문제
0
216
2
익스프레스 제너레이터? 설치문제
0
2586
6
redis 질문입니다.
0
305
1
9장 세션을 DB에 저장시 리다이렉션 오류 발생
0
874
8
프레임워크 선택에 관하여 질문이 있습니다.
0
300
3
시퀄라이즈 질문입니다 ! !
0
588
1
리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문
0
922
6
oAuth 질문입니다.
0
356
3
GCP 질문입니다.
0
366
1
Passport 모듈 로그인 구현관련
0
720
6
카카오 로그인 관련 질문입니다!!
0
606
4
스스로 해보기 10-16 nunjuncks 질문있습니다
0
499
5
제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.
0
317
2
gif채팅방 nunjucks관련 질문입니다!
0
337
3
현영님 몽고db관련 질문입니다.
0
233
3





