こんにちは、GMOインターネット株式会社の斉藤です。今月もVPSでストレージのベンチマークを取ってみると言うお話しです。
はじめに
この記事はConoHa Advent Calendar 9日目の記事です。
8日目はMySQLの達人 yoku0825 さんの「にぎやかしにConoHa 1GBの上でMariaDBをビルドします」でした。
さて前回の記事ではdisksdpというストレージのパフォーマンス計測を行うツールをご紹介しました。
https://twitter.com/hironobu_s/status/1460095972655067137
記事ではdiskspdの使い方とConoHa VPSで実際に計測を行ってみました。
ただ、せっかく良いツールなのに1つだけ計測して終わりでは、ちょっともったいない気がします。もっといろいろ計測してみたくなりますよね。なので今回はいろいろなVPSを用意してdisksdpでパフォーマンス計測を行っていこうと思います。
気になる参加エントリーは・・・
■ConoHa
おなじみConoHa VPSです。なんと今なら最大25% Offだそうです![PR]
■さくらVPS
日本ではとてもポピュラーでユーザも多い老舗VPS。説明不要ですね。新コントロールパネルはとても使いやすくて良いと思います。
■Linode
非常に多くの機能がありますが、VPSベースのマネージドKubernetesが使いやすくコスパも良いです。「2GBで3Node, L7マネージドLBあり, 日本リージョンあり」というスペックを$40/moくらいで運用できるのは多分ここだけ。
■Vultr
こちらも多機能なVPSですが、何より9種類の仮想通貨デポジットに対応しているのが目を引きます。他では見たことがないですし、誰が使うのか想像できませんが、ある意味最先端なのかもしれません。一方で親会社の方はあまり最先端感を出してなく実質堅固だったりします。
■Amazon Lightsail
あまり話題を聞かない、でも名前は知らなくても中身は誰でも知ってるAWS EC2です。コントロールパネルもAWSとは別設計、料金も月額固定で機能もちゃんと揃っています。なぜかECDSAやEdDSAのSSH鍵が登録できません。AWSはできるのに。
■Digitalocean
日本ではそこそこ?ですが海外ではデベロッパーからの認知度がとても高いです。大きな不満点は日本リージョンが無いことで、長い間Webフォーラムでリクエストが出ていました。それが今年の頭に突然「Future consideration(将来的な検討事項)」になって今は「UNDER REVIEW(検討中)」になりました。ついに来るか???
本当はUpCloudも試してみたかったのですが、個人ではアカウント開設していなかったので今回はエントリー見送りです。
なお、これらはすべて私がプライベートで使っているアカウントです。もちろんConoHaには頑張って欲しいところですが、今回は自費でサーバーを立ててベンチマークをするので「結果は忖度なし」で行きたいと思います。
ベンチマーク条件
まずサーバーですが¥1000/月(ドル建ての場合は$10/month)くらいのプランをチョイスしました。個人でも小規模ビジネスでも一番よく使われる価格帯ですね。
OSは全てこれです
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS"
diskspdのパラメータは
diskspd -Sd -t1 -b4K -r4K -w10 -L [blockdeviceのパス]
です。Read90% Write10%の割合のワークロード、1スレッド、ブロックキャッシュなしで実行されます。
diskspdを何度か実行して、特徴をよく表していそうな結果を選んで載せました。
以下に結果を並べていきますが、前回の記事で結果の見方を解説していますのでよかったら参考にしてみてください。
そして記事の最後に寸評を載せてあります。
ConoHa
ConoHaの日本(東京)リージョン1GBプラン、価格は968円/月、Webサイトによるとストレージは「SSD」とのこと。
Command Line: ./bin/diskspd -Sd -t1 -b4K -r4K -w10 -L /dev/vda2
System info:
processor count: 2
caching options: fua=0
Input parameters:
job: 1
________
duration: 10s
warm up time: 5s
measuring latency
random seed: 0
total threads: 1
path: '/dev/vda2'
size: 107369971200B
using O_DIRECT
performing mix test (read/write ratio: 90/10)
block size: 4096
using random I/O (alignment: 4096)
number of outstanding I/O operations: 2)
thread stride size: 0
threads per file: 1
block device: vda
device scheduler: mq-deadline
Results for job 1:
test time: 10s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 14.36% | 5.79% | 8.57% | 0.00% | 85.64%
1 | 0.52% | 0.21% | 0.31% | 0.10% | 99.38%
-------------------------------------------------------
avg: 7.44% | 3.00% | 4.44% | 0.05% | 92.51%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 227840000 | 55625 | 21.73 | 5562.50 | 0.360 | 0.276 | /dev/vda2 (107369971200B)
-------------------------------------------------------------------------------------------------------
total: 227840000 | 55625 | 21.73 | 5562.50 | 0.360 | 0.276
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 205271040 | 50115 | 19.58 | 5011.50 | 0.339 | 0.255 | /dev/vda2 (107369971200B)
-------------------------------------------------------------------------------------------------------
total: 205271040 | 50115 | 19.58 | 5011.50 | 0.339 | 0.255
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 22568960 | 5510 | 2.15 | 551.00 | 0.548 | 0.374 | /dev/vda2 (107369971200B)
-------------------------------------------------------------------------------------------------------
total: 22568960 | 5510 | 2.15 | 551.00 | 0.548 | 0.374
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | 0.044 | 0.121 | 0.044
25th | 0.233 | 0.383 | 0.239
50th | 0.285 | 0.463 | 0.296
75th | 0.368 | 0.579 | 0.399
90th | 0.544 | 0.823 | 0.580
95th | 0.664 | 1.023 | 0.703
99th | 1.427 | 2.137 | 1.596
3-nines | 3.300 | 4.485 | 3.382
4-nines | 5.536 | 6.673 | 5.573
5-nines | 6.553 | 6.673 | 6.673
6-nines | 6.553 | 6.673 | 6.673
7-nines | 6.553 | 6.673 | 6.673
8-nines | 6.553 | 6.673 | 6.673
9-nines | 6.553 | 6.673 | 6.673
max | 6.553 | 6.673 | 6.673
さくらVPS
さくらVPSの東京リージョン1GBプラン、価格は990円/月、Webサイトによるとストレージは「SSD」とのこと。
Command Line: ./bin/diskspd -Sd -t1 -b4K -r4K -w10 -L /dev/vda3
System info:
processor count: 2
caching options: fua=0
Input parameters:
job: 1
________
duration: 10s
warm up time: 5s
measuring latency
random seed: 0
total threads: 1
path: '/dev/vda3'
size: 49388716032B
using O_DIRECT
performing mix test (read/write ratio: 90/10)
block size: 4096
using random I/O (alignment: 4096)
number of outstanding I/O operations: 2)
thread stride size: 0
threads per file: 1
block device: vda
device scheduler: none
Results for job 1:
test time: 10s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 20.13% | 8.58% | 11.55% | 0.00% | 79.87%
1 | 0.21% | 0.00% | 0.21% | 0.00% | 99.79%
-------------------------------------------------------
avg: 10.17% | 4.29% | 5.88% | 0.00% | 89.83%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 362373120 | 88470 | 34.56 | 8847.00 | 0.226 | 0.304 | /dev/vda3 (49388716032B)
-------------------------------------------------------------------------------------------------------
total: 362373120 | 88470 | 34.56 | 8847.00 | 0.226 | 0.304
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 325541888 | 79478 | 31.05 | 7947.80 | 0.234 | 0.310 | /dev/vda3 (49388716032B)
-------------------------------------------------------------------------------------------------------
total: 325541888 | 79478 | 31.05 | 7947.80 | 0.234 | 0.310
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 36831232 | 8992 | 3.51 | 899.20 | 0.155 | 0.242 | /dev/vda3 (49388716032B)
-------------------------------------------------------------------------------------------------------
total: 36831232 | 8992 | 3.51 | 899.20 | 0.155 | 0.242
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | 0.094 | 0.079 | 0.079
25th | 0.177 | 0.105 | 0.172
50th | 0.199 | 0.123 | 0.195
75th | 0.245 | 0.164 | 0.239
90th | 0.298 | 0.217 | 0.294
95th | 0.337 | 0.264 | 0.333
99th | 0.543 | 0.468 | 0.536
3-nines | 5.242 | 2.596 | 4.971
4-nines | 11.370 | 11.235 | 11.235
5-nines | 19.076 | 11.235 | 19.076
6-nines | 19.076 | 11.235 | 19.076
7-nines | 19.076 | 11.235 | 19.076
8-nines | 19.076 | 11.235 | 19.076
9-nines | 19.076 | 11.235 | 19.076
max | 19.076 | 11.235 | 19.076
Linode
LinodeのTokyo 2, JPリージョンのShared CPU / Linode 2 GBです。価格は$10/month、Webサイトによるとストレージは「SSD」とのこと。
Command Line: ./bin/diskspd -Sd -t1 -b4K -r4K -w10 -L /dev/sda
System info:
processor count: 1
caching options: fua=0
Input parameters:
job: 1
________
duration: 10s
warm up time: 5s
measuring latency
random seed: 0
total threads: 1
path: '/dev/sda'
size: 53150220288B
using O_DIRECT
performing mix test (read/write ratio: 90/10)
block size: 4096
using random I/O (alignment: 4096)
number of outstanding I/O operations: 2)
thread stride size: 0
threads per file: 1
block device: sda
device scheduler: mq-deadline
Results for job 1:
test time: 10s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 28.49% | 12.26% | 16.23% | 0.00% | 71.51%
-------------------------------------------------------
avg: 28.49% | 12.26% | 16.23% | 0.00% | 71.51%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 277938176 | 67856 | 26.51 | 6785.60 | 0.295 | 1.481 | /dev/sda (53150220288B)
-------------------------------------------------------------------------------------------------------
total: 277938176 | 67856 | 26.51 | 6785.60 | 0.295 | 1.481
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 250486784 | 61154 | 23.89 | 6115.40 | 0.308 | 1.555 | /dev/sda (53150220288B)
-------------------------------------------------------------------------------------------------------
total: 250486784 | 61154 | 23.89 | 6115.40 | 0.308 | 1.555
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 27451392 | 6702 | 2.62 | 670.20 | 0.176 | 0.348 | /dev/sda (53150220288B)
-------------------------------------------------------------------------------------------------------
total: 27451392 | 6702 | 2.62 | 670.20 | 0.176 | 0.348
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | 0.090 | 0.075 | 0.075
25th | 0.213 | 0.120 | 0.205
50th | 0.243 | 0.140 | 0.237
75th | 0.280 | 0.171 | 0.276
90th | 0.337 | 0.225 | 0.332
95th | 0.404 | 0.295 | 0.399
99th | 0.832 | 0.848 | 0.832
3-nines | 6.911 | 2.412 | 6.649
4-nines | 87.767 | 18.641 | 87.767
5-nines | 158.066 | 18.641 | 158.066
6-nines | 158.066 | 18.641 | 158.066
7-nines | 158.066 | 18.641 | 158.066
8-nines | 158.066 | 18.641 | 158.066
9-nines | 158.066 | 18.641 | 158.066
max | 158.066 | 18.641 | 158.066
Vultr
VultrのTokyoリージョン、Cloud compute, SSD Cloud Instances 55GB SSDのプランです。
Command Line: ./bin/diskspd -Sd -t1 -b4K -r4K -w10 -L /dev/vda1
System info:
processor count: 1
caching options: fua=0
Input parameters:
job: 1
________
duration: 10s
warm up time: 5s
measuring latency
random seed: 0
total threads: 1
path: '/dev/vda1'
size: 59054734848B
using O_DIRECT
performing mix test (read/write ratio: 90/10)
block size: 4096
using random I/O (alignment: 4096)
number of outstanding I/O operations: 2)
thread stride size: 0
threads per file: 1
block device: vda
device scheduler: mq-deadline
Results for job 1:
test time: 10s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 37.51% | 14.75% | 22.76% | 0.35% | 62.14%
-------------------------------------------------------
avg: 37.51% | 14.75% | 22.76% | 0.35% | 62.14%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 987664384 | 241129 | 94.19 | 24112.90 | 0.083 | 0.073 | /dev/vda1 (59054734848B)
-------------------------------------------------------------------------------------------------------
total: 987664384 | 241129 | 94.19 | 24112.90 | 0.083 | 0.073
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 888762368 | 216983 | 84.76 | 21698.30 | 0.084 | 0.076 | /dev/vda1 (59054734848B)
-------------------------------------------------------------------------------------------------------
total: 888762368 | 216983 | 84.76 | 21698.30 | 0.084 | 0.076
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 98902016 | 24146 | 9.43 | 2414.60 | 0.076 | 0.047 | /dev/vda1 (59054734848B)
-------------------------------------------------------------------------------------------------------
total: 98902016 | 24146 | 9.43 | 2414.60 | 0.076 | 0.047
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | 0.049 | 0.055 | 0.049
25th | 0.063 | 0.065 | 0.063
50th | 0.069 | 0.072 | 0.070
75th | 0.080 | 0.081 | 0.080
90th | 0.125 | 0.092 | 0.117
95th | 0.184 | 0.103 | 0.178
99th | 0.260 | 0.129 | 0.258
3-nines | 0.367 | 0.231 | 0.358
4-nines | 2.729 | 2.838 | 2.729
5-nines | 6.974 | 4.806 | 6.974
6-nines | 16.678 | 4.806 | 16.678
7-nines | 16.678 | 4.806 | 16.678
8-nines | 16.678 | 4.806 | 16.678
9-nines | 16.678 | 4.806 | 16.678
max | 16.678 | 4.806 | 16.678
Amazon Lightsail
Amazon Lightsailのap-northeast-1リージョン、2GB 1vCPU 60GB SSDのプランです。
System info:
processor count: 1
caching options: fua=0
Input parameters:
job: 1
________
duration: 10s
warm up time: 5s
measuring latency
random seed: 0
total threads: 1
path: '/dev/root'
size: 64423443968B
using O_DIRECT
performing mix test (read/write ratio: 90/10)
block size: 4096
using random I/O (alignment: 4096)
number of outstanding I/O operations: 2)
thread stride size: 0
threads per file: 1
block device: xvda
device scheduler: mq-deadline
Results for job 1:
test time: 10s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 0.10% | 0.10% | 0.00% | 0.00% | 99.90%
-------------------------------------------------------
avg: 0.10% | 0.10% | 0.00% | 0.00% | 99.90%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 9113600 | 2225 | 0.87 | 222.50 | 8.933 | 26.002 | /dev/root (64423443968B)
-------------------------------------------------------------------------------------------------------
total: 9113600 | 2225 | 0.87 | 222.50 | 8.933 | 26.002
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 8052736 | 1966 | 0.77 | 196.60 | 8.937 | 26.031 | /dev/root (64423443968B)
-------------------------------------------------------------------------------------------------------
total: 8052736 | 1966 | 0.77 | 196.60 | 8.937 | 26.031
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 1060864 | 259 | 0.10 | 25.90 | 8.905 | 25.781 | /dev/root (64423443968B)
-------------------------------------------------------------------------------------------------------
total: 1060864 | 259 | 0.10 | 25.90 | 8.905 | 25.781
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | 0.232 | 0.527 | 0.232
25th | 0.354 | 0.778 | 0.363
50th | 0.406 | 0.839 | 0.422
75th | 0.505 | 0.953 | 0.647
90th | 50.909 | 4.330 | 50.616
95th | 77.869 | 84.027 | 79.807
99th | 112.570 | 117.494 | 112.570
3-nines | 157.457 | 128.452 | 141.504
4-nines | 187.621 | 128.452 | 187.621
5-nines | 187.621 | 128.452 | 187.621
6-nines | 187.621 | 128.452 | 187.621
7-nines | 187.621 | 128.452 | 187.621
8-nines | 187.621 | 128.452 | 187.621
9-nines | 187.621 | 128.452 | 187.621
max | 187.621 | 128.452 | 187.621
Digitalocean
Digitaloceanの SFO3 (サンフランシスコ)リージョンのDroplet 2GB 1CPU 50GB SSDのプランです。
Command Line: ./bin/diskspd -Sd -t1 -b4K -r4K -w10 -L /dev/vda1
System info:
processor count: 1
caching options: fua=0
Input parameters:
job: 1
________
duration: 10s
warm up time: 5s
measuring latency
random seed: 0
total threads: 1
path: '/dev/vda1'
size: 53570682368B
using O_DIRECT
performing mix test (read/write ratio: 90/10)
block size: 4096
using random I/O (alignment: 4096)
number of outstanding I/O operations: 2)
thread stride size: 0
threads per file: 1
block device: vda
device scheduler: mq-deadline
Results for job 1:
test time: 10s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 31.04% | 13.17% | 17.87% | 0.00% | 68.96%
-------------------------------------------------------
avg: 31.04% | 13.17% | 17.87% | 0.00% | 68.96%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 619294720 | 151195 | 59.06 | 15119.50 | 0.132 | 0.210 | /dev/vda1 (53570682368B)
-------------------------------------------------------------------------------------------------------
total: 619294720 | 151195 | 59.06 | 15119.50 | 0.132 | 0.210
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 556802048 | 135938 | 53.10 | 13593.80 | 0.106 | 0.166 | /dev/vda1 (53570682368B)
-------------------------------------------------------------------------------------------------------
total: 556802048 | 135938 | 53.10 | 13593.80 | 0.106 | 0.166
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 62492672 | 15257 | 5.96 | 1525.70 | 0.371 | 0.362 | /dev/vda1 (53570682368B)
-------------------------------------------------------------------------------------------------------
total: 62492672 | 15257 | 5.96 | 1525.70 | 0.371 | 0.362
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | 0.023 | 0.092 | 0.023
25th | 0.043 | 0.227 | 0.044
50th | 0.055 | 0.326 | 0.059
75th | 0.103 | 0.459 | 0.174
90th | 0.230 | 0.592 | 0.331
95th | 0.355 | 0.686 | 0.464
99th | 0.614 | 1.003 | 0.691
3-nines | 1.107 | 3.040 | 1.285
4-nines | 3.431 | 12.141 | 4.540
5-nines | 12.177 | 30.184 | 30.184
6-nines | 30.223 | 30.184 | 30.223
7-nines | 30.223 | 30.184 | 30.223
8-nines | 30.223 | 30.184 | 30.223
9-nines | 30.223 | 30.184 | 30.223
max | 30.223 | 30.184 | 30.223
寸評
結果を見るとVultrが一番良い数字です。%-ileを見てもばらつきが少なく優秀です。VultrにはNVMeストレージが使えるHigh Frequencyという上位プランがあって、$2/monthほど高くなりますがdiskspdの計測で1.5倍くらいのパフォーマンスが出ます。I/Oバウンドな処理をしたい場合の第一候補になるでしょう。
ConoHaとさくらVPSについては、I/OsやMB/sはさくらVPSの方が上ですがConoHaはばらつきが少ないと言う結果です。ただこのくらいの差であれば実際パフォーマンス上の大きな違いは出ないと思います。
LinodeもConoHaやさくらVPSと同じようなパフォーマンスですが、ばらつきが大きいのが気になります。実際に複数回実行してI/OsやMB/sの変化が一番大きいサーバーでした。
Amazon Lightsailは低めの数字が出ました。このLightsailは内部的にはAWS EC2ですが、そもそもAWSはワークロードに応じて適切なブロックストレージを選んでくださいというコンセプトなので、この価格ではこれが妥当な性能と考えているのかもしれません。
DigitaloceanはVultrに次いで上位の性能でした。ばらつきも少なく優秀です。そしてVultrと同じく$2/month追加するとNVMeストレージを使えるプランが使えて(CPUもInetlとAMDで選べる)、そうすると1.5倍くらいの性能になります。
おわりに
今回はいくつかのVPSについて、簡易的ではありますがストレージのパフォーマンスを計測しました。そしてdiskspdは性能測定のための優れたツールであることが確認できたと思います。
一応ですが、私はこれら全てのサーバーを使っています/いましたし、どれもトータルでは優れたパフォーマンスを出します。WordPressでサイトを作るにしてもマイクラのサーバーを立てるにしても、どれを選択しても後悔することはないでしょう。
もちろんConoHaを選択してもらえるなら、弊社/筆者どちらとしても大変うれしい限りです。
ConoHaは今年で8周年を迎えました。私も初期〜中期の頃に実際に開発/運営に関わったこともあり、今後もお客様に選ばれるサービスであって欲しいなと願っています。
さて、このエントリで私の記事も今年最後となります。今年一年間、お読み頂きありがとうございました。
皆様どうぞ良いお年をお迎えください。
もし良かったら記事のシェアもお願いいたします。