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

김남현님의 프로필 이미지
김남현

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

스레드 컨텍스트 스위칭

작성

·

298

0

안녕하세요.
스레드 개수가 많아지면 컨텍스트 스위칭이 자주 일어나서 해당 비용때문에 서버가 느려진다고 하셨는데요.
만약 코어가 4개이고 스레드 풀 사이즈가 8개 였는데 16개로 늘린다고 가정하겠습니다.
사용자 수는 계속해서 16명씩 들어온다고 했을때 스레드 풀사이즈가 8개거나 16개거나 상관없이 컨텍스트 스위칭 빈도수는 같지 않나요?
어차피 컨텍스트 스위칭이 일어나는 시간은 동일하니까 같을거라 생각하고 있습니다.
또한 스레드 개수가 많아지면 CPU와 메모리 사용량이 증가한다고 하셨습니다. 물론 스레드 풀 사이즈가 8개에서 16개로 늘어나서 대기하는 스레드가 16개 이니까 그만큼 메모리 사용량은 증가할것 같습니다.
그런데 cpu 사용률은 코어 갯수보다 스레드 풀 사이즈가 크고 동시 접속자수도 코어 수보다 계속해서 많으면 스레드 풀 사이즈 증가에 따라 cpu 사용률은 똑같지 않나요? 그리고 cpu 사용률은 높으면 좋은거 아닌가요?
물론 여기서 스레드 갯수가 많아짐에 따라 스레드 하나만 봤을때 해당 스레드가 cpu에 할당되기 까지의 시간이 길어지니까 응답시간은 낮아져서 문제가 발생할거 같긴 합니다.
너무 헷갈리는 개념인것 같습니다 ㅠㅠ
늘 좋은 강의 감사합니다.

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김남현님

만약 코어가 4개이고 스레드 풀 사이즈가 8개 였는데 16개로 늘린다고 가정하겠습니다.

사용자 수는 계속해서 16명씩 들어온다고 했을때 스레드 풀사이즈가 8개거나 16개거나 상관없이 컨텍스트 스위칭 빈도수는 같지 않나요?

-> 컨텍스트 스위칭 빈도수가 더 늘어납니다.

풀 사이즈가 8개이면 8/4 -> 2번

풀 사이즈가 16개이면 16/4 -> 4번

그런데 cpu 사용률은 코어 갯수보다 스레드 풀 사이즈가 크고 동시 접속자수도 코어 수보다 계속해서 많으면 스레드 풀 사이즈 증가에 따라 cpu 사용률은 똑같지 않나요? 그리고 cpu 사용률은 높으면 좋은거 아닌가요?

-> 컨텍스트 스위칭도 계산이 필요합니다. 그리고 CPU 자원은 무제한이 아닙니다.

컨텍스트 스위칭 비용은 최적화가 잘 되어 있습니다. 실무에서 주로 문제가 되는 부분은 쓰레드가 데이터베이스 조회, 외부 네트워크 등을 호출하면서 block 되는 부분이 주로 문제가 됩니다. 따라서 적절한 쓰레드 숫자를 확보하는 것이 필요합니다.

감사합니다.

김남현님의 프로필 이미지
김남현

작성한 질문수

질문하기