공통 환경
- OS: Ubuntu 22.04 LTS
- 스토리지: 16gb, gp3
비교스펙
t2.micro | t2.small | t2.medium | t2.large | |
---|---|---|---|---|
vCPU | 1(1코어) | 1(1코어) | 2(2코어) | 2(2코어) |
아키텍처 | i386, x86_64 | i386, x86_64 | i386, x86_64 | x86_64 |
메모리(GiB) | 1 | 2 | 4 | 8 |
t3.micro | t3.small | t3.medium | t3.large | |
---|---|---|---|---|
vCPU | 2(1코어) | 2(1코어) | 2(1코어) | 2(1코어) |
아키텍처 | x86_64 | x86_64 | x86_64 | x86_64 |
메모리(GiB) | 1 | 2 | 4 | 8 |
c5.large | c5.xlarge | r5.large | r5.xlarge | |
---|---|---|---|---|
vCPU | 2(1코어) | 4(2코어) | 2(1코어) | 4(2코어) |
아키텍처 | x86_64 | x86_64 | x86_64 | x86_64 |
메모리(GiB) | 4 | 8 | 16 | 32 |
c6g.medium | c6g.large | r6g.medium | r6g.large | m6g.large | |
---|---|---|---|---|---|
vCPU | 1(1코어) | 2(2코어) | 2(1코어) | 2(2코어) | 2(2코어) |
아키텍처 | arm64 | arm64 | arm64 | arm64 | arm64 |
메모리(GiB) | 1 | 4 | 8 | 16 | 8 |
측정방식
- 파이썬 라이브러리의 math.factorial() 사용
- 4번의 반복 후 평균값을 사용
import math
import time
times = []
for i in range(4):
start = time.time()
math.factorial(500000)
end = time.time()
times.append(end - start)
avg = sum(times)/4
print(f"{avg:.5f} sec")
결과
t2, t3 비교
- 결과
- t2와 t3의 연산결과는 서로 비슷한 양상을 보였다.
- 평균적으로는 t3의 성능이 더 좋았다.
- 원인
- 팩토리얼 연산은 CPU 집중적인 작업이지만, T2와 T3 인스턴스 유형 모두 충분한 CPU 성능을 제공한다.
- 두 인스턴스 유형 모두 동일한 CPU 아키텍처를 사용한다.
- 사용된 운영 체제 및 버전, 컴파일러 및 컴파일 옵션 등이 동일한 경우 연산 결과는 비슷하게 나타날 가능성이 높다.
- 고찰
- 3번 그래프를 봤을 때, 인스턴스가 다시 연결될 때 서버의 상황에 따라 HW의 성능차이로 인해 발생된 현상 같다.
- T계열의 경우 사용하지 않는 동안 cpu크레딧을 축적하고, 필요한 경우에 사용한다. 이것이 측정 결과에 반영된 것 같다.
t3 c6 비교
- 결과
- 범용으로 제작된 t3 인스턴스 유형보다 CPU의 특화된 c5 인스턴스 유형이 연산속도가 더 빨랐다.
- 원인
- CPU 성능:
- T3 인스턴스 유형은 기본적으로 더 낮은 클럭 속도를 가진 CPU를 사용한다.
- C5 인스턴스 유형은 고성능 CPU를 사용하여 팩토리얼 연산과 같은 CPU 집중적인 작업에 더 적합하다.
- 캐시 용량:
- C5 인스턴스 유형은 T3 인스턴스 유형보다 더 큰 L2 및 L3 캐시를 가지고 있다.
- 캐시 용량이 클수록 CPU가 메모리에 접근하는 데 걸리는 시간이 줄어들어 연산 속도가 향상된다.
- Turbo Boost:
- C5 인스턴스 유형은 Turbo Boost 기술을 지원하여 필요에 따라 CPU 클럭 속도를 자동으로 높일 수 있다.
- 이는 팩토리얼 연산과 같은 짧은 시간 동안 높은 CPU 성능이 필요한 작업에 유용하다.
- CPU 성능:
- 결과
- 평균적으로 x86 시스템 아키텍쳐를 사용하는 인스턴스 타입인 c5, r5의 계열이 연산속도가 더 빨랐다.
- c계열이 r계열보다 더 빨랐다.
- 원인
- 명령어 집합:
- ARM: RISC (Reduced Instruction Set Computing) 아키텍처를 사용하여 명령어 집합이 단순하다. 이는 전력 소비를 줄이는 데 도움이 되지만, 복잡한 연산을 처리할 때 속도가 느려질 수 있다.
- x86: CISC (Complex Instruction Set Computing) 아키텍처를 사용하여 명령어 집합이 복잡하다. 이는 전력 소비가 더 높지만, 복잡한 연산을 처리할 때 속도가 빠를 수 있다.
- 클럭 속도:
- 일반적으로 ARM 프로세서는 x86 프로세서보다 클럭 속도가 낮다. 클럭 속도가 높을수록 같은 시간 안에 더 많은 작업을 처리할 수 있으므로 연산 속도가 빨라진다.
- 캐시:
- 캐시는 CPU가 빠르게 접근할 수 있는 작은 메모리 공간이다. 캐시 용량이 클수록 CPU가 메모리에 접근하는 데 걸리는 시간이 줄어들어 연산 속도가 빨라진다.
- 일반적으로 ARM 프로세서는 x86 프로세서보다 캐시 용량이 작다.
- 명령어 집합:
- 고찰
- 연산처리가 중요한 팩토리얼 코드로 테스트를 진행하다보니 cpu가 특화된 계열이 더 유리했다.
- DP같은 메모리 공간을 사용하는 테스트의 경우 r계열이 유리할 것 같다.