AWS EC2 T4g 타입 인스턴스
1. Amazon EC2 T4g 인스턴스란
Amazon EC2 T4g 인스턴스는 Arm 기반 AWS Graviton2 프로세서로 구동되며, T3 인스턴스보다 최대 40% 더 나은 가격 대비 성능을 제공합니다.
T4g 타입 인스턴스 소개 페이지
https://aws.amazon.com/ko/ec2/instance-types/t4/?nc1=h_ls
북미 리전 출시는 2020년 9월 15일이며, 서울 리전 출시는 2021년 2월 23일로 오래되지는 않았습니다. 인스턴스 크기는 아래와 같이 제공됩니다.
2. AWS Graviton 프로세서란
T4g의 g는 AWS Graviton 프로세서를 의미하는데요. 이는 마치 T3a 타입의 a가 AMD CPU를 의미하는 것처럼 CPU의 종류를 인스턴스 타입에서 나타냅니다.(별다른 표기가 없는 T3의 경우 인텔 CPU) AWS Graviton 프로세서란 64비트 Arm Neoverse 코어(클라우드 컴퓨팅 및 고성능 컴퓨팅을 위한 ARM CPU)를 사용하여 Amazon Web Services에서 맞춤형으로 구축한 제품이며, Graviton 프로세서가 적용된 인스턴스 유형은 Amazon EC2 T4g, M6g, C6g 및 R6g 인스턴스 유형이 있습니다. 성능은 7배, 메모리는 5배나 빨라졌으며 컴퓨팅 코어는 4배, 캐시는 2배 늘어났습니다.
AWS Graviton 프로세서 소개 페이지
https://aws.amazon.com/ko/ec2/graviton/
ARM 네오버스(NEOVERSE) CPU 소개 페이지
https://www.arm.com/products/silicon-ip-cpu/neoverse-kr
3. 가격
t4g 타입의 경우 t3 타입보다 20%, t3a 타입보다 10% 저렴한 가격으로 이용할 수 있습니다.
4. 성능
sysbench를 이용하여 CPU 성능의 벤치마크 결과를 비교해봤습니다. t4g.micro(2vCPU, 1GB Mem) 타입의 인스턴스 1개와 t3.micro(2vCPU, 1GB Mem) 타입의 인스턴스를 각각 준비하여 아래와 같이 2개의 쓰레드로, 300초 동안 1~10만까지의 모든 소수를 찾는 루프를 실행하였습니다.
sysbench cpu run --threads=2 --time=300 --cpu-max-prime=100000
t4g.micro 타입 인스턴스
t3.micro 타입 인스턴스
"total number of events" 결과 값은 지정된 시간(300초) 동안 1~10만까지의 모든 소수를 찾는 행위를 몇 번 완료했는지를 나타냅니다. 해당 값을 비교하여 두 CPU 간의 성능을 비교해봤을 때, 약 3배의 차이가 발생했습니다. 물론 테스트 방식에 따른 차이가 있을 수 있기 때문에 해당 결과만으로 "t4g 타입의 CPU가 t3 타입의 CPU보다 3배 뛰어나다"라고 단적으로 말하기는 어려운 점이 있지만 t4g 타입의 인스턴스가 CPU 성능 면에서 일정 부분 앞서는 것은 확인할 수 있었습니다.
5. 문제점
성능면에서는 t4g 타입의 인스턴스가 기존 t3 타입의 인스턴스보다 좋은 결과를 보여줬으나, 실 서비스 구성을 위해 사용하기에는 아직 부족한 점이 있습니다. 기존 시스템과의 호환성 문제인데요. CPU 아키텍쳐가 기존 인텔 혹은 AMD의 x86-64 아키텍쳐와 다른 arm64 아키텍쳐이기 때문에 AMI 이미지부터 다른 이미지를 사용해야합니다.
AWS 마켓플레이스에서 금일 기준 모든 AMI 개수는 5,307개이고, 그중 x86-64 아키텍쳐의 이미지가 5,227개, arm64 아키텍쳐의 이미지가 79개로 지원하는 이미지의 수에서 압도적으로 차이가 있습니다.
현재 지원하는 AMI 이미지는 대표적으로 아래와 같으며, 앞으로 arm 아키텍쳐의 사용이 점점 늘어남에 따라 지원하는 AMI 이미지도 점점 늘어날 것으로 생각됩니다. CentOS의 경우 7 버전은 없으며, 8 버전(올해 말까지 지원 종료)만 있습니다. Windows 운영체제는 arm64 AMI가 없습니다.
Amazon Linux 2 AMI (HVM), SSD Volume Type (64-bit Arm)
CentOS 8 (arm64) - with Updates HVM
Red Hat Enterprise Linux (RHEL) 7.6 (HVM) (Arm)
Red Hat Enterprise Linux 8 (ARM)
Debian GNU/Linux 9 (Stretch) (arm64)
Debian 10 Buster (ARM)
Ubuntu 18.04 LTS - Bionic (Arm)
Ubuntu 20.04 LTS - Focal (Arm)
Ubuntu 20.10 - Groovy (Arm)
SUSE Linux Enterprise Server for Arm 15
arm 아키텍쳐가 기존 모바일이나 IOT 기기와 같은 저전력이 필요한 장비에서 통상적으로 사용되었고, PC, 서버 등 고성능을 요구하는 시장에는 최근에서야 사용되기 시작했기 때문에 아직은 arm 아키텍쳐에 대한 지원 및 호환성 부분에서 부족한 점 있습니다.
예를 들어, zabbix 서버를 구성한다고 했을 때, 아래와 같이 zabbix 레포 자체가 arm64 아키텍쳐를 지원하지 않는 경우라면, 직접 소스 컴파일해서 모든 패키지를 설치해야합니다. (CentOS 기본 레포나 EPEL 레포는 arm64 지원하여 사용이 가능하며, amazon linux도 기본 레포 및 extras 패키지가 arm64 아키텍쳐를 지원합니다.)
때문에 기본적인 패키지(apache, mysql, 기타 라이브러리 등)라면 arm64 를 지원하기 때문에 어느정도 호환이 가능하지만, 특정 솔루션이나 오픈소스 프로젝트 패키지를 사용하시는 경우 해당 프로젝트가 arm64 아키텍쳐를 지원하는지 먼저 확인이 필요합니다.
6. 마치며
가격이나 성능 면에서 기존 x86-64 아키텍쳐의 CPU를 사용하는 인스턴스 타입보다 나은 점이 있으나, 아직은 AMI 이미지 및 프로그램 호환성 부분에서 제약 사항이 많을 것으로 생각됩니다. 때문에 t4g 타입의 인스턴스를 사용하려면 사용하고자하는 개발 언어, 프로그램, 라이브러리 등을 꼼꼼히 체크하여 arm64 아키텍쳐에 대한 지원 여부를 확인한 후 도입하는 것이 필요할 것으로 생각됩니다.