Alibaba Cloud ApsaraDB RDSにARMアーキテクチャがリリースされたので紹介および検証してみる

2025年1月17日掲載

キービジュアル

Alibaba CloudのApsaraDB RDSにてARMアーキテクチャが新たに導入されたので、ARMの紹介および検証をしてみます。

目次

はじめに

Alibaba CloudのリレーショナルデータベースであるApsaraDB RDSにARMアーキテクチャが仲間入りしました。ARMといえば、一見低電力で効率的な動作を目指す設計思想で開発されたプロセッサなので、低電力を意識したスマートフォンやタブレット、IoTこのARM クラウド上のデータベースのアーキテクチャとして登場するのはどういう意味なのか、通常使われるx86プロセッサよりコスト効率が良いのか続いていきますので、今回はApsaraDB RDSのARMアーキテクチャについて紹介また検証してみます。
※2023年7月10日時点で日本リージョンは未リリースです。

なお、日本のGigazine等各メディア記事で話題になった、「アリババがクラウドコンピューティングを最適化する「中国最先端」のサーバーチップ「「Yitian 710」を発表」が今回のARMに該当します。

<参考>
アリババがクラウドコンピューティングを最適化する「中国最先端」のサーバーチップ「Yitian 710」を発表

1. Alibaba Cloud独自のYitian 710プロセッサチップについて

結果からいうと、AlibabaのPingtou Geという半導体子会社がARMベースとなるYitian 710プロセッサチップを独自設計・開発し、Alibaba CloudのApsaraDB RDS ARMアーキテクチャとして実装しています。これはAlibaba Group独自の施策であり、いわばAlibaba CloudのApsaraDB RDS ARMアーキテクチャはパブリッククラウドの中でも独自のプロセッサチップとなります。

Yitian 710プロセッサチップは当時でCPU業界最先端の5nmプロセスを採用し、1チップに最大600億個のトランジスタを搭載した汎用サーバー向けCPUチップです。最新のARM v9アーキテクチャを採用し、128コア、最大CPU周波数3.2GHzで、性能と消費電力の両立を可能にしています。それだけでなく、チップの恩恵もあって処理能力に余裕ができているため、メモリとインターフェースには、業界をリードするDDR5とPCIE5.0の技術を統合することができ、結果としてチップに高負荷をかけず転送処理速度をより一層高めることに奏功しています。

Yitian 710プロセッサチップのスペック:

パッケージ

2.5Dパッケージ、マルチDIEクロージャー

CPUアーキテクチャ

ARM v9

コア数

128Core

動作周波数

2.75GHz ~ 3.2GHz

メモリ

8チャネルDDR5
最大レート4400MT/s
総ピーク帯域幅281GB/s

I/O

96レーンのPCIe5.0
双方向の理論総帯域幅768GB/秒

TDP消費電力

250W

Yitian 710プロセッサチップは元々データセンターとクラウドサービスを前提に設計されているため、業界標準のテストプラットフォームのSPECInt2017において、従来の業界ベンチマークを20%上回る440スコアを記録しています。通常のデータセンターに使われるIntel Xeon Platinum 8362ですら350スコアなので、凄い記録ですね。

参考URL:https://www.t-head.cn/product/processor

2. ApsaraDB RDS ARMアーキテクチャとは

ApsaraDB RDS ARMアーキテクチャは先述通りAlibaba Cloud独自のYitian 710プロセッサチップが搭載されており、主に汎用コンピューティング、クラウドネイティブ、Android in Cloudのシナリオをターゲットとしています。Helpドキュメント上の情報によれば、同じ仕様のx86アーキテクチャと比較して25%の費用対効果向上を実現しているそうです。

ARMアーキテクチャが対応する構成は以下の通りになります。

 

MySQL

PostgreSQL

対応リージョン

中国(杭州)、中国(上海)、中国(北京)、中国(張家口)、中国(深圳)、シンガポール

中国(杭州)、中国(上海)、中国(北京)、中国(張家口)、中国(深圳)、シンガポール

サポートエンジン

MySQL8.0のみ

PostgreSQL 13、14、15のみ

エディション

高可用性構成のみ

高可用性構成のみ

クラウドディスク

ESSDのみ

ESSDのみ

※2023年7月10日時点での情報になります。

<参考>

Architectures (ApsaraDB RDS)

3. ApsaraDB RDS ARMとX86との違いについて:料金観点

ApsaraDB RDSには昔からあったX86アーキテクチャと今回説明となるARMアーキテクチャで利用者観点としての違いは、x86と同じスペックでありながらARMアーキテクチャのほうが約13%安くなります。ARMに対応するRDS全てのインスタンスファミリーが対象です。

一つ例として、料金表をまとめると次の通りです。
ARMとX86の料金例比較:

アーキテクチャ

ARM料金例

X86料金例

インスタンス

pg.n4.2c.2m

(2CPU8GB)

pg.n4.2c.2m

(2CPU8GB)

インスタンス単価

0.172USD/時間

0.198USD/時間

ストレージ費用(100GB)

0.05USD/時間

0.05USD/時間

合計

0.22USD/時間

0.25USD/時間

※杭州リージョン
※2023年7月10日時点での情報になります。

ここまでくると、同じスペックだった場合ARMはどのようなパフォーマンス向上が見込めれるか、気になりますよね。なので実際に検証してみます。

4. ApsaraDB RDS ARMとX86との違いについて:パフォーマンス観点

ApsaraDB RDS MySQL/PostgreSQLそれぞれのARM/x86アーキテクチャのパフォーマンスを比較したく、sysbenchで検証してみます。sysbenchの導入方法は過去記事でも幾つか紹介しているので、今回sysbench導入説明は割愛します。

sysbenchの導入準備が完了したら、Sysbenchのバージョンを確認します

 sysbench –version

ここでバージョンが問題なければ、引き続きスクリプトを2つ設定します。

今回のパフォーマンス確認に使うインスタンスはMySQLならmysql.n4m.medium.2c(2cpu 8GB)、PostgreSQLならpg.n4m.2c.2m(2cpu 8GB)、Sysbenchパラメータは thread=500、SIZE=10000000、tables=100、time=120 としています。

prepare.sh : 

#!/bin/sh
mkdir -p logs
thread=500
echo "prepare data using default settings, ref sysbench SIZE"  >> logs/sysbench_read_write_0_prepare.log
./sysbench.sh prepare ${thread} >> logs/sysbench_read_write_0_prepare.log
echo "data had been successfully initialized."  >> logs/sysbench_read_write_0_prepare.log

 

sysbench.sh : 

#!/bin/sh
LUA=/usr/share/sysbench/oltp_read_write.lua
SIZE=10000000
DB=pgsql
HOST=pgm-1ud78r9lmbur2ayt.pg.rds.aliyuncs.com
PORT=5432
USER=sbtest
PASSWORD=Test1234
DBNAME=sbdb

usage()
{
  echo "Usage: ./sysbench.sh <prepare|run|cleanup> <num of threads>"
  exit "${1}"
}
#chack argumets
if [ "${1}" = "" -o $# -gt 3 ]; then
  usage 1
elif [ "${2}" = "" ]; then
  THREADS=1
else
  THREADS=${2}
fi
echo "Running command: sysbench ${LUA} --db-driver=${DB} --pgsql-host=${HOST} --pgsql-port=${PORT} --pgsql-user=${USER} --pgsql-password=${PASSWORD} --pgsql-db=${DBNAME} --table-size=${SIZE} --tables=100 --events=0 --time=60 --db-ps-mode=disable --percentile=95 --report-interval=1 --threads=${THREADS} ${1}"
sysbench ${LUA} --db-driver=${DB} --pgsql-host=${HOST} --pgsql-port=${PORT} --pgsql-user=${USER} --pgsql-password=${PASSWORD} --pgsql-db=${DBNAME} --table-size=${SIZE} --tables=100 --events=0 --time=120 --db-ps-mode=disable --percentile=95 --report-interval=1 --threads=${THREADS} ${1}

上記準備したscriptを流しつつ、ベンチマーク用データを準備します。

cd /root/arm
chmod a+x *.sh
nohup sh prepare.sh 2>&1&

ベンチマーク用データの準備が完了しました。新たにテーブルが追加されていますね。

以下Shellを作り、`nohup sh test.sh 2>&1&` コマンドでベンチマークします。

test.sh

#!/bin/sh
DATE=`date '+%Y%m%d%H%M'`
mkdir $DATE
# thread=500

# echo "prepare data using default settings, ref sysbench SIZE"  >> ${DATE}/sysbench_read_write_main.log
# ./sysbench.sh prepare ${thread} >> ${DATE}/sysbench_read_write_main.log
for thread in 500
do
    echo "Time: $(date +"%Y%m%d%H%M%S"), now running sysbench with thread of: " + ${thread}  >> ${DATE}/sysbench_read_write_${thread}.log
  ./sysbench.sh run ${thread} >> ${DATE}/sysbench_read_write_${thread}.log
done
# echo "cleaning data up."  >> ${DATE}/sysbench_read_write_main.log
# ./sysbench.sh cleanup ${thread} >> ${DATE}/sysbench_read_write_main.log

sysbench.sh

#!/bin/sh
LUA=/usr/share/sysbench/oltp_read_write.lua
SIZE=10000000
DB=pgsql
HOST=pgm-1ud78r9lmbur2ayt.pg.rds.aliyuncs.com(現在このインスタンスは削除済)
PORT=5432
USER=test
PASSWORD=Test1234(現在このインスタンスは削除済)
DBNAME=sbdb
usage()
{
  echo "Usage: ./sysbench.sh  "
  exit "${1}"
}
#chack argumets

if [ "${1}" = "" -o $# -gt 3 ]; then
  usage 1
elif [ "${2}" = "" ]; then
  THREADS=1
else
  THREADS=${2}
fi
echo "Running command: sysbench ${LUA} --db-driver=${DB} --pgsql-host=${HOST} --pgsql-port=${PORT} --pgsql-user=${USER} --pgsql-password=${PASSWORD} --pgsql-db=${DBNAME} --table-size=${SIZE} --tables=100 --events=0 --time=120 --db-ps-mode=disable --percentile=95 --report-interval=1 --threads=${THREADS} ${1}"
sysbench ${LUA} --db-driver=${DB} --pgsql-host=${HOST} --pgsql-port=${PORT} --pgsql-user=${USER} --pgsql-password=${PASSWORD} --pgsql-db=${DBNAME} --table-size=${SIZE} --tables=100 --events=0 --time=120 --db-ps-mode=disable --percentile=95 --report-interval=1 --threads=${THREADS} ${1}

ベンチマークを実行します。

nohup sh test.sh 2>&1&

MySQL、PostgreSQLそれぞれ同じ手順でSysbenchベンチマークをします。それぞれ5回実行し、その平均値を使って評価します。

5. ARMとX86ベンチマークまとめ

ApsaraDB RDS MySQLとPostgreSQLそれぞれのx86とARMを比較したところ、以下の結論になります。

  • ApsaraDB RDS MySQLの場合、ARMアーキテクチャのほうがRead処理が約20%向上、Write処理が約40%近く向上しています。
  • ApsaraDB RDS PostgreSQLの場合、ARMアーキテクチャのほうがRead処理が約40%向上、Write処理が約30%近く向上しています。

ここまで差が付くと、ARMアーキテクチャによる凄まじい恩恵を感じられます。

今回2CPU(2Core)のみで検証したのか、2Core観点での比較としてはARMアーキテクチャにより性能が伸びていることを確認できました。ただし、マルチスレッドとして4Core、16Core、32Core時での検証が未実施なので、本比較は参考程度に留めて頂ければ幸いです。

6. さいごに

ApsaraDB RDS MySQL、PostgreSQLにARMアーキテクチャが登場することにより、ユーザーとしては低価格かつ、より良いパフォーマンスを発揮することができるようになりました。それだけARMアーキテクチャはコストパフォーマンスが高いので、RDSベースによるアーキテクチャを検討している際には参考にしていただければ幸いです。

関連サービス

Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません