[비교분석] Sysbench 를 사용한 AWS vs Azure vs Oracle 가상머신 비교

비교분석
작성자
Roronoa
작성일
2021-08-12 19:55
조회
1389
[비교분석] Sysbench 를 사용한 AWS vs Azure vs Oracle 가상머신 비교

개요

수많은 벤치마크 툴이 있으며 수많은 결과물이 있습니다. 그중에 설치도 쉽고 테스트도 하기 쉽고 인지도도 있는 Sysbench를 가지고 AWS Azure Oracle의 가상머신을 비교 분석 해보려 합니다. 개인적으로 특별한 편견이 없으며 실제 결과물을 하단에 전부 개시했으며 최대한 공정하게 선택하기 위해 가장 널리 쓰이는 가상머신과 가장 일반적인 모델로 최대한 선택했으며 모든 실험은 병렬로 진행 했으며 같은 시간에 동시에 진행 했습니다. 

전제 사항

  • 가장 비슷한 일반적인 인스턴스를 사용.

  • 특정 기능이 없는 인스턴스를 사용해서 테스트 결과에 영향을 미치지 않게 함.

  • Burtable 하지 않은 일반 인스턴스를 골라야 정확한 IO 확인이 가능.

  • AMD 기반 - AMD 기반으로 된 인스턴스로 선정 (오라클이 Intel 종류가 적음)

  • VCore 와 Ram 이 3개 클라우드가 동일한 인스턴스 2코어에 8GiB로 설정.

  • 우분투 18.04 LTS로 OS 를 동일하게 설정 .


Sysbench로 CPU, Ram(read write), File IO(128개 파일 생성, Random Read Write 테스트)

azure그림000

상단의 표에서 보는 것 처럼 AMD EPYC 프로세스 시리즈로 선정 합니다.

최대한 비슷하고 결과물이 어느 회사에 유리하지 않도록 동일한 테스트 를 진행 합니다.

 

Sysbench 설치

sudo apt-get install sysbench

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash

sudo apt -y install sysbench

 

CPU 측정

sysbench cpu --cpu-max-prime=100000 run 

스레드 10만번 돌린 결과값
azure
그림001 AWS CPU 스레드 10만번 돌린값
azure
그림002 Azure CPU 스레드 10만번 돌린값

azure
그림003 Oracle CPU 스레드 10만번 돌린값

그림001 002 003은 3사(AWS,Azure,Oracle) 의 일반적인 m5a.large, Standard_D2as_v4, VM.Standard.E4.Flex 의 2코어 8GiB Ram을 가진 AMD EPYC 7000 시리즈를 사용하므로 거의 유사한 결과값이 나왔다. 


AWS cpu 100000run Total Time 10.0022s
Azure cpu 100000run Total Time 10.0171s
OCI cpu 100000run Total Time 10.0039s
CPU 속도 Thread 10만번 돌린 결과 는 AWS > Azure > Oracle 이며 큰 차이가 없었습니다.

 

거의 비슷한 CPU를 선택했기 때문에 거의 비슷한 결과가 나왔습니다

 

랜덤 파일 읽기 쓰기 속도 측정

sysbench fileio --file-test-mode=rndrw --time=60 --max-requests=0 run

결과값
azure
그림004 AWS 랜덤 파일 읽기 쓰기

azure
그림005 Azure랜덤 파일 읽기 쓰기

azure
그림006 Oracle 랜덤 파일 읽기 쓰기

그림004 005 006은 3사(AWS,Azure,Oracle) 의 일반적인 AWS(GP3) Azure(Premium) Oracle (Block Volume) 으로 IOPS가 가장 비슷한 제품으로 선택했으며 

 


AWS file 랜덤 읽기쓰기 테스트 Throughput 20.58m/s(read) 13.72m/s(write)
Azure file 랜덤 읽기쓰기 테스트 Throughput 13.19m/s(read) 8.79m/s(write)
OCI file 랜덤 읽기쓰기 테스트 Throughput 38.26m/s(read) 25.51m/s(write)
 

파일을 랜덤하게 읽기 쓰기 테스트 는 오라클이 매우 아주 좋은 결과가 나왔으며 Oracle > AWS > Azure 순으로 나왔으며 랜덤 쓰기 읽기는 매우 많은 수로 해보아도 비슷한 결과가 나왔습니다. 물론 편차가 조금 크긴 합니다

파일 생성 속도 측정 (128개의 파일을 총 10G 생성하기)

sysbench fileio --file-total-size=10G prepare

결과값
azure
그림007 AWS File 생성
azure
그림008 Azure File 생성
azure
그림009 Oracle 파일 생성


AWS file 생성(128개 파일생성) Throughput 107.84m/s
Azure file 생성(128개 파일생성) Throughput 84.40m/s
OCI file 생성(128개 파일생성) Throughput 46.72m/s
 

그림007 008 009 는 128개의 파일을 총 10GiB 를 생성하는데 나오는 초당 속도 이며 

AWS > Azure > Oracle 순서로 나왔으며 Oracle이 최저 속도 였습니다.

 

Ram 쓰기 속도 측정

sysbench memory --threads=2 run

결과값

azure
그림010 AWS Ram 쓰기 속도 측정
azure
그림011 Azure Ram 쓰기 속도 측정
azure
그림012 Oracle Ram 쓰기 속도 측정

그림 010 011 012의 경우 Ram 쓰기 속도 측정이며 

 


AWS ram write Throughput 5390.42m/b
Azure ram write Throughput 8056.03m/b
OCI ram write Throughput 3672.50m/b
 

상단의 표처럼 Azure 와 oracle 차이는 꽤나 차이가 났습니다. 같은 8GiB 메모리지만 속도차이는 생각 보다 많이 났습니다. Azure > AWS > Oracle 순으로 속도차이가 났습니다.

 

Ram 읽기 속도 측정

sysbench memory --threads=2 --memory-oper=read run

결과값
azure
그림013 AWS Ram 읽기 속도
azure
그림014 Azure Ram 읽기 속도
azure
그림015 Oracle Ram 읽기 속도

그림 013 014 015의 경우 램의 읽기 속도를 측정했으며 

 


AWS ram read Throughput 7720.38m/b
Azure ram read Throughput 10494.34m/b
OCI ram read Throughput 6305.89m/b
 

Azure > AWS > Oracle 순으로 속도가 나왔습니다

 

전체 결과

 


AWS cpu 100000run Total Time 10.0022s
AWS ram write Throughput 5390.42m/b
AWS ram read Total Time 7720.38m/b
AWS file 생성(128개 파일생성) Throughput 107.84m/b
AWS file 랜덤 읽기쓰기 테스트 Throughput 20.58m/s(read) 13.72m/s(write)
Azure cpu 100000run Total Time 10.0171s
Azure ram write Throughput 8056.03m/b
Azure ram read Total Time 10494.34m/b
Azure file 생성 Throughput 84.40m/b
Azure file 랜덤 읽기쓰기 테스트 Throughput 13.19m/s(read) 8.79m/s(write)
OCI cpu 100000run Total Time 10.0039s
OCI ram write Throughput 3672.50m/b
OCI ram read Total Time 6305.89m/b
OCI file 생성(128개 파일생성) Throughput 46.72m/b
OCI file 랜덤 읽기쓰기 테스트 Throughput 38.26m/s(read) 25.51m/s(write)
 

결론

개인적으로 오라클클라우드는 Nimbula 방식때와는 완전이 변경되서 꽤나 좋은 결과가 나왔으나 아직도 AWS와 Azure에 비해 기능적으로 선택권이 매우 부족한 면이 있으나 기본은 충실한것으로 보입니다. Intel로 테스트 하고 싶었으나 OCI에서 Intel은 선택권이 매우 좁아서 공정한 테스트가 안될듯 해서 AMD로 테스트 했습니다. 결과물로 보면 수년 동안 주기적으로 이런 테스트를 주기적으로 다른 툴로 해온 필자의 느낌은 여전히 AWS의 우위를 볼수 있으며 전체적으로 안정성을 숫자로 표현하기 어려운 부분이라 생각합니다. 그러나 이런 경쟁관계가 품질의 증가로 이어져 왔으며 새로운 기능에 경쟁보다는 IaaS 부분은 이제 내적 안정성에 기반해야 한다는 생각이 듭니다.