새소식

CS

[매일메일] 스레드, 프로세스, 코어의 수는 많을 수록 좋을까?

  • -

우선 결론부터 말하자면 아닐 확률이 크다.

스레드가 많으면?

스레드가 많으면 운영체제는 컨텍스트 스위칭을 자주 수행해야 하고 CPU의 자원이 이러한 스레드 관리에 소모된다. 이로 인해 다른 작업의 수행 효율이 떨어질 수 있으며, 많은 스레드가 동시에 실행될 경우 메모리, 캐시, 락 등의 자원을 경쟁하게 되어 성능 저하나 데드 락이 발생할 가능성이 높아진다. 또한 스레드가 많아지면 동기화와 상태 관리가 복잡해져 버그 발생 가능성도 커진다.

 

서블릿이 뭐에요?

스프링 MVC에 대해 공부하던 중 서블릿에 대한 나름대로의 정리가 필요할 것 같았다. 그래서 먼저 위키에 서블릿이 뭔지 찾아봤다.뭐 그렇다는데, 영한님의 강의에서는 이렇게 서블릿을 설명해

dockerel.tistory.com

스프링의 경우 요청이 들어오면 스레드 풀에서 스레드를 꺼내어 요청을 처리하는데, 스레드가 너무 많은 경우 위와 같은 문제들이 발생할 수 있지만 그렇다고 너무 적게 설정해 놓는 경우 성능이 제대로 나오지 않는 경우가 발생하기 때문에 적절한 개수를 유지하는 것이 중요하다.

프로세스가 많으면?

스레드와 달리 프로세스는 각각 독립된 공간을 가진다. 그래서 많은 프로세스가 동시에 실행되면 메모리 사용량이 급격하게 증가할 수 있다. 또한 프로세스의 생성과 관리에도 많은 시스템 자원이 소모되며, 만약 프로세스 간 통신(IPC, Inter Process Communication)이 필요할 경우 성능 저하가 발생할 수 있다. 또한 스레드의 컨텍스트 스위칭보다 더 많은 오버헤드를 가진다. 운영체제는 동시에 실행할 수 있는 최대 프로세스 수가 존재하는데, 이를 초과하면 새로운 프로세스의 생성이 불가능해지거나 시스템이 불안정해질 수 있다.

코어가 많으면?

CPU의 코어가 많아지면 병렬 처리 성능을 향상시킬 수 있지만, 만약 소프트웨어가 멀티코어 환경에 최적화되어 있지 않고 단일 스레드 작업이 주를 이루는 경우, 이러한 이점을 제대로 활용하지 못할 수 있다. 또한 CPU의 코어수가 늘어날수록 전력 소비가 증가할 수 있으며, 발열 관리도 복잡해진다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.