[비교분석] Sysbench 를 사용한 AWS vs Azure vs Oracle 가상머신 비교
비교분석
작성자
Roronoa
작성일
2021-08-12 19:55
조회
1389
[비교분석] Sysbench 를 사용한 AWS vs Azure vs Oracle 가상머신 비교
개요
수많은 벤치마크 툴이 있으며 수많은 결과물이 있습니다. 그중에 설치도 쉽고 테스트도 하기 쉽고 인지도도 있는 Sysbench를 가지고 AWS Azure Oracle의 가상머신을 비교 분석 해보려 합니다. 개인적으로 특별한 편견이 없으며 실제 결과물을 하단에 전부 개시했으며 최대한 공정하게 선택하기 위해 가장 널리 쓰이는 가상머신과 가장 일반적인 모델로 최대한 선택했으며 모든 실험은 병렬로 진행 했으며 같은 시간에 동시에 진행 했습니다.
전제 사항
Sysbench로 CPU, Ram(read write), File IO(128개 파일 생성, Random Read Write 테스트)
그림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만번 돌린 결과값
그림001 AWS CPU 스레드 10만번 돌린값
그림002 Azure CPU 스레드 10만번 돌린값
그림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 시리즈를 사용하므로 거의 유사한 결과값이 나왔다.
CPU 속도 Thread 10만번 돌린 결과 는 AWS > Azure > Oracle 이며 큰 차이가 없었습니다.
거의 비슷한 CPU를 선택했기 때문에 거의 비슷한 결과가 나왔습니다
랜덤 파일 읽기 쓰기 속도 측정
sysbench fileio --file-test-mode=rndrw --time=60 --max-requests=0 run
결과값
그림004 AWS 랜덤 파일 읽기 쓰기
그림005 Azure랜덤 파일 읽기 쓰기
그림006 Oracle 랜덤 파일 읽기 쓰기
그림004 005 006은 3사(AWS,Azure,Oracle) 의 일반적인 AWS(GP3) Azure(Premium) Oracle (Block Volume) 으로 IOPS가 가장 비슷한 제품으로 선택했으며
파일을 랜덤하게 읽기 쓰기 테스트 는 오라클이 매우 아주 좋은 결과가 나왔으며 Oracle > AWS > Azure 순으로 나왔으며 랜덤 쓰기 읽기는 매우 많은 수로 해보아도 비슷한 결과가 나왔습니다. 물론 편차가 조금 크긴 합니다
파일 생성 속도 측정 (128개의 파일을 총 10G 생성하기)
sysbench fileio --file-total-size=10G prepare
결과값
그림007 AWS File 생성
그림008 Azure File 생성
그림009 Oracle 파일 생성
그림007 008 009 는 128개의 파일을 총 10GiB 를 생성하는데 나오는 초당 속도 이며
AWS > Azure > Oracle 순서로 나왔으며 Oracle이 최저 속도 였습니다.
Ram 쓰기 속도 측정
sysbench memory --threads=2 run
결과값
그림010 AWS Ram 쓰기 속도 측정
그림011 Azure Ram 쓰기 속도 측정
그림012 Oracle Ram 쓰기 속도 측정
그림 010 011 012의 경우 Ram 쓰기 속도 측정이며
상단의 표처럼 Azure 와 oracle 차이는 꽤나 차이가 났습니다. 같은 8GiB 메모리지만 속도차이는 생각 보다 많이 났습니다. Azure > AWS > Oracle 순으로 속도차이가 났습니다.
Ram 읽기 속도 측정
sysbench memory --threads=2 --memory-oper=read run
결과값
그림013 AWS Ram 읽기 속도
그림014 Azure Ram 읽기 속도
그림015 Oracle Ram 읽기 속도
그림 013 014 015의 경우 램의 읽기 속도를 측정했으며
Azure > AWS > Oracle 순으로 속도가 나왔습니다
전체 결과
결론
개인적으로 오라클클라우드는 Nimbula 방식때와는 완전이 변경되서 꽤나 좋은 결과가 나왔으나 아직도 AWS와 Azure에 비해 기능적으로 선택권이 매우 부족한 면이 있으나 기본은 충실한것으로 보입니다. Intel로 테스트 하고 싶었으나 OCI에서 Intel은 선택권이 매우 좁아서 공정한 테스트가 안될듯 해서 AMD로 테스트 했습니다. 결과물로 보면 수년 동안 주기적으로 이런 테스트를 주기적으로 다른 툴로 해온 필자의 느낌은 여전히 AWS의 우위를 볼수 있으며 전체적으로 안정성을 숫자로 표현하기 어려운 부분이라 생각합니다. 그러나 이런 경쟁관계가 품질의 증가로 이어져 왔으며 새로운 기능에 경쟁보다는 IaaS 부분은 이제 내적 안정성에 기반해야 한다는 생각이 듭니다.
개요
수많은 벤치마크 툴이 있으며 수많은 결과물이 있습니다. 그중에 설치도 쉽고 테스트도 하기 쉽고 인지도도 있는 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 테스트)
그림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만번 돌린 결과값
그림001 AWS CPU 스레드 10만번 돌린값
그림002 Azure CPU 스레드 10만번 돌린값
그림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를 선택했기 때문에 거의 비슷한 결과가 나왔습니다
랜덤 파일 읽기 쓰기 속도 측정
sysbench fileio --file-test-mode=rndrw --time=60 --max-requests=0 run
결과값
그림004 AWS 랜덤 파일 읽기 쓰기
그림005 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
결과값
그림007 AWS File 생성
그림008 Azure File 생성
그림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
결과값
그림010 AWS Ram 쓰기 속도 측정
그림011 Azure Ram 쓰기 속도 측정
그림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
결과값
그림013 AWS Ram 읽기 속도
그림014 Azure Ram 읽기 속도
그림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 부분은 이제 내적 안정성에 기반해야 한다는 생각이 듭니다.