티스토리 뷰

서버용 CPU의 대부분을 차지하는 Intel의 CPU는

하나의 물리적 CPU 코어에서 2개의 논리적 코어를 가진 것처럼 동작하도록 Hyper-Threading(HT) 기술을 제공합니다.

즉, 운영체제 상에서는 확인해보면 실제 물리코어보다 2배의 코어수를 가지고 있는 것으로 확인할 수 있습니다.

각 코어는 thread를 가지고 있으며, 애플리케이션에서도 운영체제에서 할당받은 thread를 기반으로 동작하기 때문에,

Intel의 hyper-threading을 이용한다면, 애플리케이션에서 멀티쓰레드 처리시 성능 향상을 가져올 수 있습니다.

Intel에서는 최대 30%정도까지의 CPU 처리량 향상을 가져온다고 합니다.

 

최근 빠른 속도로 서버시장 점유율을 높혀가고 있는 AMD도 hyper-threading와 동일한 기술은 아니지만,

유사한 효과를 나타내는 Simultaneous MultiThreading(SMT) 기능을 제공합니다.

이 기술 역시 물리적 코어수이 비해 두배 많은 논리적 코어를 제공합니다.

 

가상머신에 자원을 구성할때 CPU는 vCPU라고 불리는 가상의 CPU 단위로 분배합니다.

가상머신은 할당받은 vCPU를 기반으로 컴퓨팅을 구성하며, 애플리케이션은 해당 할당된 vCPU를 이용하여 동작합니다.

Hyper-threading 기능은 개별 가상머신에서 설정하는 것이 아니라 CPU 하드웨어 기반에서 구성되며,

BIOS에서 해당 기능을 enable하거나 disable할 수 있습니다.

 

만약 hyper-threading이 BIOS에서 켜져 있다면, 총 논리 CPU 수까지만 가상머신을 할당한다고 가정했을때,

24코어 물리서버에 48코어까지 할당이 가능할 것이고, 즉  4코어짜리 가상머신을 12대까지 돌릴 수 있습니다.

반대로 꺼져있다면, 24코어 물리서버는 24코어까지만 할당가능하며, 4코어짜리 가상머신 6대만 돌릴 수 있을 것입니다.

즉, hyper-threading enable 여부에 따라 서버의 CPU 활용폭이 두배까지 차이나게 됩니다.

 

그럼, AWS의 Intel 기반 EC2(x86_64)는 hyper-threading이 켜져 있을까요? 아니면 꺼져 있는 상태일까요?

정답은 그때그때 달라요입니다. 대부분의 인스턴스는 켜져 있지만, 종종 꺼져 있는 CPU도 있습니다.

 

그럼 내가 사용하고자 하는 인스턴스가 hyper-threading이 켜져 있는지 꺼져 있는지 어떻게 확인해야 할까요?

물론 인스턴스 생성후 CPU 정보를 확인하여 확인할 수 있습니다만, 아래 링크에서 미리 확인도 가능합니다.

 

CPU 옵션 최적화 - Amazon Elastic Compute Cloud

c5.18xlarge 72 36 2 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36 1, 2 c5.24xlarge 96 48 2 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48 1, 2 c5a.24xlarge 96 48 2 1, 2, 3, 4, 8, 12, 16, 20, 24, 28

docs.aws.amazon.com

위 링크에서 인스턴스 유형별 vCPU 정보를 보면, 코어당 기본스레드가 1과 2가 있습니다.

코어당 기본스레드가 1인 인스턴스는 hyper-threading이 꺼져 있는 CPU를 사용하는 것이며,

코어당 기본스레드가 2인 인스턴스는 hyper-threading이 켜져 있는 CPU를 의미합니다.

 

그럼 실제로 동일한 vCPU 코어수와 메모리를 제공하는 인스턴스에서 직접 확인해 보겠습니다.

t2.2xlarge와 t3.2xlarge는 세대는 다르지만, 둘다 x86 기반의 8코어 vCPU와 32GiB 메모리를 제공합니다.

 

  • t2.2xlarge : 기본 CPU 코어 8 * 코어당 기본 스레드 1 = 8vCPU
  • t3.2xlarge : 기본 CPU 코어 4 * 코어당 기본 스레드 2 = 8vCPU

 

1. t2.2xlarge : 172.31.0.79

 

siblings가 총 논리 CPU의 코어수이며, cpu cores는 물리 CPU의 코어수입니다.

siblings가 8이고, cpu cores가 8임으로, 실제 물리코어와 논리코어수가 동일합니다.

즉, 물리 CPU인 Xeon E5-2676 v3는 12코어 CPU로 24 thread를 제공할 수 있습니다만,

t2.2xlarge 인스턴스의 CPU는 hyper-threding이 enable 되어 있지 않습니다.

 

 

2. t3.2xlarge : 172.31.61.189

 

siblings가 8임에 비해, cpu cores가 4임으로, 실제 물리코어와 논리코어의 수가 딱 2배 차이가 발생합니다.

물리 CPU인 8259CL은 24코어 CPU로 48 thread를 제공할 수 있으며,

t3.2xlarge 인스턴스의 CPU는 hyper-threding이 enable 되어 있습니다.

 

 

댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
최근에 올라온 글
Total
Today
Yesterday
링크