Physical CPU와 Logical CPU의 차이 (processor, cpu, thread 개념)
운영체제나, 멀티 스레딩 등 개발에 대하 공부를 하다보면 Physical CPU와 Logical CPU에 대한 개념이 헷갈릴 때가 많다.
최대한 예제들을 첨부해서 설명할 예정이다.
Term 정의
CPU는 꽤나 모호하게 쓰이는 단어 중 하나다.
Processor
, Core
, hardware thread
등 글들을 읽다보면 다양한 term을 통칭하듯이 쓰이는 경우가 많다.
하지만 일반적으로 Core
가 CPU라는 단어에 가장 일치하는 개념이라고 할 수 있다.
단어 정의를 찾아봐도, 멀티스레딩이나 고루틴 등의 개념을 이해할 때, CPU의 구조와 주요 term에 대한 이해가 필요할 때가 많다. 따라서 본 글에서는
해당 용어들을 디테일하게 정리해보겠다.
- Processor : 소켓에 장착되는 물리적인 chip을 읨한다. Processors에는 다수의
Core
와Hardware thread
가 존재한다. - Core : 멀티코어 프로세서의 독립적인 CPU 인스턴스다. procesor를 scale하기 위해 코어를 늘리는 것을 chip-level multi-processing이라고 한다.
- Hardware Thread : 한 개의 코어 내에서 multiple thread를 동시에 실행가능한 CPU 아키텍쳐에서 각 thread는 독립적인 CPU instance로 기능한다. 이러한 scaling approach를 multithreading이라고 한다.
Physical CPU vs Logical CPU
즉, 그림을 통해서 Physical CPU와 Logical CPU의 차이를 구분할 수 있다.
Physical CPU는 실제 프로세서 칩에 있는 Physical Core를 의미한다. 멀티스레딩이 enable돼있는지 여부와 관계없이 Processor의 Physical CPU 갯수에는 영향이 없다. 위 그림을 보면 한 개의 프로세서에 4개의 Physical CPU가 존재한다.
반대로 Logical CPU는 각 Core가 동시에 몇 개의 작업을 할 수 있는가와 관련이 있다. Core가 동시에 다수의 작업을 하기 위해서는 hyperthreading을 enable해야 한다. 각각의 physical core는 다수의 logical core로 나누는 것이다. 위 그림을 보면 hyperthreading이 enable된다면 4개의 physical core가 있더라도 각 core마다 2개의 thread가 존재하기 때문에, 운영체제에서는 8개의 logical cpu가 있는 것으로 인지한다.
즉 이걸 숫자로 정리해서 보면
1 Processor, 4 Physical core, 8 Logical core가 있는 것이다. 이를 다르게 표현하면 1P4C - with 2 threads per core 라고 할 수 있다.
리눅스 서버 예시
리눅스 서버에서 lscpu 명령어를 통해 한번 조회해보자
위처럼 조회를 햇을 때 1P2C - with 2 threads per core and 4 logical CPU가 있는 것을 확인할 수 있다.
어떻게 확인했냐면
CPU socket : 1 -> 1 Processor
Cores per socket : 2 --> 2 Cores
Thread per core : 2 --> 2 Threads
CPU : 4 -> 4 logical CPUs in total
4 Logical CPUs = 2 Core * 2 Thread
위와 같이 이해하면 되는 것이다.
다른 프로세서를 탑재한 서버를 하나더 조회해보자
위와 같은 경우 2개의 프로세서가 탑재된 서버인데,
[2P8C - with 2 threads per core, 16 Logical CPUs]인 것을 확인할 수 있다.
이것도 자세히 보면
Sockets : 2 --> 2 Processors
Cores per socket : 4 --> 4 Cores per processor (2*4 = Total 8core)
Threads per core : 2 --> 2 Threads
CPUs : 16 --> 16 Logical CPUs
- 2 Processors X 4 Cores/processor X 2 Threads/core
참고 자료:
https://www.linkedin.com/pulse/understanding-physical-logical-cpus-akshay-deshpande