IaaS/기타

Processor 기반 연산과 Multi-Thread 기반 연산 어떤 장단점이 있을까?

armyost 2022. 8. 17. 13:21
728x90

멀티 스레드(multi thread)란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다.
멀티 스레드와 멀티 프로세스 모두 여러 흐름을 동시에 수행하다는 공통점을 가지고 있습니다.

멀티 프로세스(multi process)는 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 수행하는 것을 의미합니다.
멀티 프로세스는 각 프로세스가 독립적인 메모리를 가지고 별도로 실행되지만, 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유한다는 점이 다릅니다.

멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적습니다.

또한, 하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋아집니다.

 

문맥 교환(context switching)
컴퓨터에서 동시에 처리할 수 있는 최대 작업 수는 CPU의 코어(core) 수와 같습니다.
만약 CPU의 코어 수보다 더 많은 스레드가 실행되면, 각 코어가 정해진 시간 동안 여러 작업을 번갈아가며 수행하게 됩니다. 이때 각 스레드가 서로 교체될 때 스레드 간의 문맥 교환(context switching)이라는 것이 발생합니다.

이에 따라 잦은 스레드 교체는 문맥교환이 부하를 야기하는 이슈를 낳을 수 있으며, 이로인해 멀티스레드가 꼭 정답만은 아닌 것입니다.

 

CPU를 많이 필요로하는, 즉 연산이 무거운 비즈니스의 경우에는 CPU 가용 자원이 부족한 현상이 자주발생해 문맥교환이 자주 일어날 것입니다. 이때는 멀티/하이퍼 스레드가 오히려 적합하지 않을 수도 있겠네요.