High with Hyper Threading

이전에 이런글을 쓴적이 있는데요

vSphere 7 까지는 HyperThreading 을 VM 에 노출시킬 수 없었습니다. 그러니까 8vCPU 를 할당하면 그냥 8Core 가 할당되는 식이죠. 그리고 ESXi 호스트상에서 CPU 스케쥴링등을 할 때 Hyperthreading 을 활용하는 정도 였습니다.

퍼블릭 클라우드중 AWS 의 환경에서 8CPU 의 경우는 인스턴스별로 차이가 있긴 하지만, 대체로 4 Cores, 8 Threads 가 할당됩니다. (아닌것도 있습니다.) 즉 실제로는 8 CPU 만큼의 리소스를 가지고 있지 않다는 이야기 입니다.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html

vSphere 8 부터는 vHT (Virtual Hyper Threading) 를 VM 에 켜줄 수 있습니다. (디폴트로는 disable) 입니다. 그런데 이걸 할려면 Latency Sensitive 설정을 통해서 해주어야 합니다. 이 이야기는 달리 말하면 CPU 와 Memory Reservation 100% 이 설정을 해야한다는 이야기입니다.

다만 실제로 해보지 않아서 잘 모르겠는데, vHT 를 설정하게 되면, Core 가 아닌 Thread 를 하나의 vCPU 로 할당하는 개념인것으로 보입니다.

Without vHT activated on ESXi, each virtual CPU (vCPU) is equivalent to a single non-hyperthreaded core available to the guest operating system. With vHT activated, each guest vCPU is treated as a single hyperthread of a virtual core (vCore).

아마 게스트 OS 상에서 보이는것은 코어와 쓰레드가 동일한 숫자로 보이지 않을까 싶습니다. (아직 해보지 않아서 그냥 추측입니다) 다만 내부적으로는 8vCPU + High with Hyper Threading 설정을 하게 되면, 실제로는 4 Core 를 단독으로 점유해서 사용할 것으로 생각이 됩니다.

CPU Reservation 의 경우에도 다음과 같이 절반만 잡힙니다.

그럼 남아있는 질문은 이거겠죠. “이걸 언제 쓰지?”

결국은 Hyperthreading 에 대해서 인식하고 이것을 최대한 당겨 쓸 수 있는 Application 을 돌릴 때는 유용할 수 있겠는데, 그 외의 경우는 “과연?” 입니다. 실제로 어떤 application 들이 있을지 나중에 한번 봐봐야 겠네요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다