온프레미스에서 마이그레이션 시 vCPU와 Core 비교
- Aws
- January 19, 2024
온 프레미스에서 Amazon으로 마이그레이션 할때 동일하게 스펙 전환하기가 애매한 경우가 있다.
대표적으로 CPU인데 고객사에서 주는 온프레미스에 CPU 스펙은 core 단위로 표시하고 반면에 AWS에서는 vCPU로 주로 표시한다.
물론 AWS 인스터스도 코어를 가지고 있지만 잘 표시하지는 않는다.
그렇다 보니 온 프레미스에 AWS에서 마이그레이션 할 때 어떤 기준으로 스펙을 선정해야할지 어렵다.
다행히 세상에는 나와 같은 고민을 하신 분이 계셨고 이와 관련된 글을 공유해 주셨다.
AWS vs GCP vs on-premises CPU performance comparison
글이 워낙 길고 영어로 되어 있어서 이해하는데 오래걸렸지만 결론은 vCPU ≈ Core이다.
우선 이 글에서 테스트 한 방식은 도커에서 container CPU 지정 할당하여 테스트 하였다.
docker run --cpus 1 --rm -ti severalnines/sysbench sysbench cpu --cpu-max-prime=20000 --threads=1 --time=900 run
docker run --cpus 2 --rm -ti severalnines/sysbench sysbench cpu --cpu-max-prime=20000 --threads=2 --time=900 run
docker run --cpus 8 --rm -ti severalnines/sysbench sysbench cpu --cpu-max-prime=20000 --threads=8 --time=900 run
온프레미스 퍼포먼스 CPU의 1 Core를 기준으로 잡고 2 Core일때와 1 Core에서 나온 퍼포먼스의 곱하기 2 이런식으로 먼저 비교를 하셨다.
블로그에서 보여주신 표는 최신CPU 일수록 멀티코어가 단순 1 Core에서 곱한 값보다는 퍼포먼스가 좋다고 한다.
년식이 다른 CPU의 멀티 코어들을 같은 수로 해서 비교를 하였을때는 멀티코어의 이점이 좀 더 줄어들었다.
그리고 위 블로그에서는 AWS가 하이퍼 스레드가 가능한 논리적 vCPU를 판매하고 일반적으로 초과 프로비저닝을 못하지만 “best effort” CPU cores를 공유 하지는 않는다고 한다. 그리고 다른 사용자간에 최적화를 수행하지 않는다는 보장도 없다.고 한다
이 글에서 내가 가장 알고 싶었던 내용은 바로 아래 부분이었는데
실험을 한 결과 온프레미스의 코어개수의 27% 더 많은 vCPU로 설정하면 된다고 한다.
근데 실질적으로 1/4 더 많은 vCPU의 타입은 없으며 그냥 동일하게 가거나 정 불안하면 2배 높은 vCPU로 하면 될 것 같다.
instance에 관한 더 자세한 글은 아래의 블로그를 참고하면 된다.