2
自己紹介
• 氏名
– 正原 竜太
• 所属
– 株式会社インターネットイニシアティブ
• 職種
– インフラエンジニア?データベースエンジニア?
• 仕事
– IIJでクラウドデータベースサービスの運用・開発をしてます • Oracle, MySQL, SQLServer
元々ネットワークエンジニアの若輩者なので
あまりイジメないで下さいね
6
データベースの高速化とは
1. ハードウェアの高速化
– CPU、メモリ、ストレージ
– 最も簡単かつ確実でパフォーマンスは高いがコストも高い
一番簡単だけど、ボトルネックをちゃんと特定しないと
せっかくのハードウェアが効果を発揮できずに
「高いお金を払ってるのにどういうことだ!?」 という状況もあるので注意が必要ね
7
データベースの高速化とは
1. ハードウェアの高速化
– CPU、メモリ、ストレージ
– 最も簡単かつ確実でパフォーマンスは高いがコストも高い
2. OSやファイルシステムのチューニング
– リソースの割り当て、スワップ等
– 使用するファイルシステムの選択やオプション
ここからはお金がなくてもできるわね。
地味で直接的な効果が得られるか難しいけど、
逆に言うと皆あまり明確な答えを持っていない
部分じゃないかしら
8
データベースの高速化とは
1. ハードウェアの高速化
– CPU、メモリ、ストレージ
– 最も簡単かつ確実でパフォーマンスは高いがコストも高い
2. OSやファイルシステムのチューニング
– リソースの割り当て、スワップ等
– 使用するファイルシステムの選択やオプション
3. データベースの設定
– リソースの割り当て
– 機能の有効化無効化
ここまでのチューニングを頑張っても
台無しにならないようにここもしっかりしておくべきね。
ハードウェアの性能をしっかり出すために
重要なところだと思うわ。
9
データベースの高速化とは
1. ハードウェアの高速化
– CPU、メモリ、ストレージ
– 最も簡単かつ確実でパフォーマンスは高いがコストも高い
2. OSやファイルシステムのチューニング
– リソースの割り当て、スワップ等
– 使用するファイルシステムの選択やオプション
3. データベースの設定
– リソースの割り当て
– 機能の有効化無効化
4. SQLのチューニング
– 実行計画
– インデックススキャンかフルスキャンか
高レベルなDBエンジニアになると
「DBの声が聞こえる」そうよ
11
データベースの高速化とは
1. ハードウェアの高速化
– ストレージ • ioMemory
• ioDrive2
• SSD
2. OSやファイルシステムのチューニング
– 使用するファイルシステムの選択やオプション • NVMFS
• XFS
• ext4
3. データベースの設定
– 機能の有効化無効化
• アトミックライト
• ダブルライト
• スキップダブルライト
それぞれ比較してみました!
12
目次
• ioMemoryによるデータベースの高速化
– ioMemory自体はどんぐらい速いの?
• アトミックライトと書き込み原子性
– そもそもアトミックライトって何?何が良いの?
• その他の書き込み原子性
– アトミックライトの代わりの方法ってないの?
• ユニットサイズの違いによる性能の違い
– ioMemoryってセクターサイズ変えられるけど性能に影響する?
16
検証に用いたサーバー
• CPU
– Intel® Xeon® CPU E5-2620 v2 @ 2.10GHz 6コア12スレッド*2
• メモリ
– 96GB
• ストレージ
– ioMemory: PX600-2600
• 容量: 2600GB
• Read帯域幅: 2.7GB/s
• Write帯域幅: 2.2GB/s
• Random Read IOPS (4K): 350,000
• Random Write IOPS (4K): 385,000
今回はioMemoryシリーズの
パーフォマンス重視型の2.6TB
容量であるPX600-2600を
使いました
(*) こちらはioMemoryを搭載したサーバーのスペックになります。
ioDrive2やSSDを搭載したサーバーとは残念ながら異なるスペックとなります。
そのため、正確な比較とは言えず、あくまで参考値と形になります。
17
データベース性能比較条件
• RDBMS
– Percona 5.6.22
• 今回の検証は全てPerconaを利用しますが表記上MySQLと多々記述しています
• データベース条件
– バッファプール: 10GB
– バイナリログ: 同期
• ベンチマークツール
– tpcc-mysql
• WareHouse: 1000 (データサイズは約100GB)
• コネクション数: 64
バッファキャッシュにデータが乗らない状態で
キャッシュアウトとキャッシュインによる
IOが発生する状態を想定してのテストを
想定しているそうよ
19
各ストレージを用いた際のデータベースの性能差
SSD ioDrive2 ioMemory
TpmC 11190 30942 36768
0
5000
10000
15000
20000
25000
30000
35000
40000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
20
各ストレージを用いた際のデータベースの性能差
SSD ioDrive2 ioMemory
TpmC 11190 30942 36768
0
5000
10000
15000
20000
25000
30000
35000
40000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
ioDrive2でも30000[Tpmc]を超えていたが、
相対的にはioMemoryの方が1.2倍ぐらい高かった。
21
各ストレージを用いた際のデータベースの性能差
SSD ioDrive2 ioMemory
TpmC 11190 30942 36768
0
5000
10000
15000
20000
25000
30000
35000
40000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
一方、SSDも10,000[TpmC]を上回りはしたが、
ioMemoryとSSDは相対的に約3.4倍ほどの差があった。
これならサーバーの集約も可能でクラウド事業者泣かせ?
23
これまでのMySQL(ダブルライトバッファ)
• MySQLのページサイズはデフォルトで16KB
• 多くのファイルシステムのブロックサイズはデフォルトで4KB
• ブロックに書き込み中に電源障害等が発生すると・・・
ページ
4KB 4KB 4KB 4KB データ領域
MySQLのデータの最小論理ユニット
ファイルシステムのデータの最小ユニット
4KB 4KB 4KB 4KB
電源障害等
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB
データとして不整合かつリカバリ不可
メモリ
ストレージ
これを未然に防ぐアーキテクチャをダブルライトバッファという
以降、ダブルライトをオフにした状態をスキップダブルライトと呼称
24
これまでのMySQL(ダブルライトバッファ)
• ダブルライトバッファによる原子性の保障
– MySQLではこの電源障害等によるデータの不整合をダブルライトバッファを用いた2回書き込みにより回避している。
ページ
4KB 4KB 4KB 4KB ダブルライト
バッファ
4KB 4KB 4KB 4KB 4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB データ領域
メモリ
ストレージ
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB
通常時
性能を考慮してダブルライトバッファはシーケンシャルライト
25
これまでのMySQL(ダブルライトバッファ)
• ダブルライトバッファによる原子性の保障
– MySQLではこの電源障害等によるデータの不整合をダブルライトバッファを用いた2回書き込みにより回避している。
ページ
4KB 4KB 4KB 4KB ダブルライト
バッファ
4KB 4KB 4KB 4KB 電源障害等
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB データ領域
メモリ
ストレージ
ダブルライトバッファへ書き込み中に障害が発生した場合
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB
チェックサムで異常を検知して
書き込み途中の不完全なデータを破棄
26
これまでのMySQL(ダブルライトバッファ)
• ダブルライトバッファによる原子性の保障
– MySQLではこの電源障害等によるデータの不整合をダブルライトバッファを用いた2回書き込みにより回避している。
ページ
4KB 4KB 4KB 4KB ダブルライト
バッファ
4KB 4KB 4KB 4KB 電源障害等
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB データ領域
メモリ
ストレージ
データ領域へ書き込み中に障害が発生した場合
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB
ダブルライトバッファから書き込み予定だった
データを実データ領域へ書き込みリカバリ
27
これからのMySQL(というかアトミックライトの場合)
• アトミックライトによる原子性の保障
– SDKが提供するAPIを利用することにより、カーネルドライバおよびハードウェアにより複数ブロックへの書き込みにおいて「1ブロックも書いていない」 or 「全ブロック書いた」という原子性が保障されるようになった。これがダブルライトの代替となる機能である。
ページ
4KB 4KB 4KB 4KB データ領域
MySQLのデータの最小ユニット
ファイルシステムのデータの最小ユニット
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB
4KB 4KB 4KB 4KB
メモリ
ストレージ
「1ブロックも書いていない」 もしくは「全ブロック書いた」
というステートしか存在しない!!!
ダブルライトバッファに書き込まない分
オーバーヘッドが少ない!!!
30
導入も簡単!(デバイスのセットアップ)
• サンディスク様より必要なRPMをダウンロードしインストール
• フォーマットのためデバイスをデタッチ
• アトミックライト有効のオプションを加えてデバイスをフォーマット
[root@dev ~]# rpm -ivh nvmfs-2.6.32-431.el6.x86_64-1.0.56-1.el6.x86_64.rpm
Preparing... ########################################### [100%]
1:nvmfs-2.6.32-431.el6.x8########################################### [100%]
[root@dev ~]# fio-detach /dev/fct0
Detaching: [====================] (100%) |
fioa - detached.
[root@dev ~]# fio-format -APye -b 512 /dev/fct0
/dev/fct0: Creating block device.
Block device of size 2600.00GBytes (2421.44GiBytes).
Using block (sector) size of 512 bytes.
WARNING: Do not interrupt the formatting! If interrupted, the fio-sure-erase utility may
help recover from format errors. Please see documentation or contact support.
Formatting: [====================] (100%) |
/dev/fct0 - format successful.
31
導入も簡単!(ファイルシステムのセットアップ)
• デタッチしたデバイスをアタッチ
• ファイルシステムを作成してマウント
[root@dev ~]# mkfs.nvmfs /dev/fioa
Creating new NVMFS filesystem
mkfs version = 1.0.2
block device = /dev/fioa
control device = /dev/fct0
filesystem media version = 1039
filesystem uuid = aca53509-98bd-4430-a2a0-aebaa29b40a3
filesystem creation time = 2015-05-27 16:20:34.997775163 +0900
device sector size = 512
filesystem block size = 512
inode block size = 512
metadata block size = 4096
physical filesystem blocks = 5078125000 (2421 GiB)
virtual filesystem blocks = 0-281474976710655 (134217728 GiB)
filesystem features = metadata checksums
mkfs done!
[root@dev ~]# mount -t nvmfs -o noatime /dev/fioa /data
[root@dev ~]# mount | grep fioa
/dev/fioa on /data type nvmfs (rw,noatime)
[root@dev ~]# fio-attach /dev/fct0
Attaching: [====================] (100%) ¥
fioa - attached.
32
導入も簡単!(DBのセットアップ)
• ダブルライトまたはスキップダブルライトと同じようにmy.cnfを編集
• mysql_install_dbまたは退避していたデータをリストア
• いつものようにデータベースを起動
• ログファイルからスタートアップメッセージを確認
[mysqld]
#skip-innodb_doublewrite
innodb_doublewrite
[mysqld]
#skip-innodb_doublewrite
#innodb_doublewrite
innodb_use_atomic_writes
[root@dev ~]# mysql_install_db --user=mysql --defaults-file=/etc/my.cnf
[root@dev ~]# /etc/init.d/mysql start
Starting MySQL (Percona Server).. SUCCESS!
2015-05-27 16:47:00 3927 [Note] Plugin 'FEDERATED' is disabled.
2015-05-27 16:47:00 3927 [Note] InnoDB: using atomic writes.
2015-05-27 16:47:00 3927 [Note] InnoDB: switching off doublewrite buffer because of atomic writes.
2015-05-27 16:47:00 3927 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-05-27 16:47:00 3927 [Note] InnoDB: The InnoDB memory heap is disabled
34
アトミックライトのポイント
• アトミックライトにはNVMFSが必要
– むしろMySQL側は特別なことをしていない
– my.cnfの設定するとIOCTLでの確認とダブルライトのオフするだけ
• ちなみに、Percona 5.5.31だとチェックが甘いという罠も・・・
– アトミックライトはRDBMS的にはNVMFS上でのスキップダブルライト
• 書き込みの原子性を保証するレイヤーが異なる
– ダブルライトバッファ • RDBMS (MySQL, Percona, MariaDB)
– アトミックライト • カーネルドライバ
• ハードウェア(ioMemory)
• なぜファイルシステムなのか?
– (恐らく)アプリケーションに修正が不要で使い易いから
ふ~ん、へ~
36
ダブルライト・スキップダブルライト・アトミックライトの性能差
double write skip double write atomic write
TpmC 36768 39354 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
37
double write skip double write atomic write
TpmC 36768 39354 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] ダブルライト・スキップダブルライト・アトミックライトの性能差
スキップダブルライトはNVMFS上で使うとアトミックライトと
同じになってしまうためダブルライトおよびスキップダブルライトを
計測する際のファイルシステムはXFSを用いた
38
double write skip double write atomic write
TpmC 36768 39354 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] ダブルライト・スキップダブルライト・アトミックライトの性能差
思ったほどダブルライトとスキップダブルライトで大きな差は
見られなかった。相対的には6%ほど性能が違った。
(今回ダブルライト中心にチューニングとかした為?) ちなみに、最初にSSDとの比較で出てきたのはダブルライトの値
39
double write skip double write atomic write
TpmC 36768 39354 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] ダブルライト・スキップダブルライト・アトミックライトの性能差
一方、スキップダブルライトとアトミックライトでは思ってた以上に
差が出た。相対的には約17%ほどの性能差が見れた。
RDBMSとしてやってることは同じなハズなのでこの差は
XFSとNVMFSというファイルシステムによる差?
43
書き込み原子性を保証してくれるファイルシステム
• 他にもあるよ!書き込み原子性を保証してくれるファイルシステム
– ZFS
– btrfs
– extX (ジャーナリングストラテジーの journal モード) • mount -o data=journal /dev/fioa /mnt
– …etc…
• 結局のところ、やはりどのレイヤーで保証するか次第
– ハードウェア & カーネルドライバ • NVMFS
– ファイルシステム
• ZFS, btrfs, extX, …etc…
– アプリケーション(RDBMS) • ダブルライト
• ちなみに
– ダブルライトかファイルシステムのどちらが良いかの
検証はPerconaの公式ページで記事が公開されています
話者は何番煎じでしょうね~
45
ちょっとその前に、、、ジャーナリングストラテジーって?
• Write Back
– データおよびメタデータの順序関係なくメタデータのみジャーナリング(データ破損可能性あり)
• Ordered
– データを書き込んでからメタデータを書き込むがジャーナリングはメタデータのみ(データ損失可能性あり)
• Journal
– メタデータおよびデータをジャーナリング(データ破損可能性ほぼなし)
Journalモードじゃないとダメなのね。
XFSはWrite Backのみらしいから
書き込み原子性を保証したいのなら
ダブルライトを使うしかないわね。
47
書き込み原子性の保証方法の違いによる性能差
XFS ext4-writeback ext4-journal XFS ext4-writeback ext4-journal nvmfs
double write skip double write atomic write
TpmC 36768 35375.301 16905.199 39354 36768.199 23283.4 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
48
XFS ext4-writeback ext4-journal XFS ext4-writeback ext4-journal nvmfs
double write skip double write atomic write
TpmC 36768 35375.301 16905.199 39354 36768.199 23283.4 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] 書き込み原子性の保証方法の違いによる性能差
ジャーナリングストラテジーが同じ場合はXFSもext4も大きくは変わらないが
ダブルライトおよびスキップダブルライトのどちらにおいてもXFSの方が
若干高い性能を示した。ライトバックで良いならXFSを使うべき?
49
XFS ext4-writeback ext4-journal XFS ext4-writeback ext4-journal nvmfs
double write skip double write atomic write
TpmC 36768 35375.301 16905.199 39354 36768.199 23283.4 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] 書き込み原子性の保証方法の違いによる性能差
同じext4でもストラテジーによって性能は大きく違った。
そもそもダブルライトかつext4をジャーナルモードで使った場合は
異なるレイヤーで2回ずつ、計4回同じデータを書くことになる
51
書き込み原子性の保証方法の違いによる性能差
XFS ext4-writeback ext4-journal XFS ext4-writeback ext4-journal nvmfs
double write skip double write atomic write
TpmC 36768 35375.301 16905.199 39354 36768.199 23283.4 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
52
XFS ext4-writeback ext4-journal XFS ext4-writeback ext4-journal nvmfs
double write skip double write atomic write
TpmC 36768 35375.301 16905.199 39354 36768.199 23283.4 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] 書き込み原子性の保証方法の違いによる性能差
以下のどれかに該当するもの
・ ダブルライトを使用
・ ext4でジャーナルモード
・ アトミックライトを使用
53
XFS ext4-writeback ext4-journal XFS ext4-writeback ext4-journal nvmfs
double write skip double write atomic write
TpmC 36768 35375.301 16905.199 39354 36768.199 23283.4 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] 書き込み原子性の保証方法の違いによる性能差
スキップダブルライトの性能と
ダブルライトの安全性を持つ
アトミックライトが一番でした
54
XFS ext4-writeback ext4-journal XFS ext4-writeback ext4-journal nvmfs
double write skip double write atomic write
TpmC 36768 35375.301 16905.199 39354 36768.199 23283.4 45844.5
0
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
] 書き込み原子性の保証方法の違いによる性能差
アトミックライトが使えない場合は
XFS上でのダブルライトが一番高性能でした
56
実は・・・
• 今回の検証ではXFS上でダブルライトが一番高性能でしたが、設定や環境によってはext4上でスキップダブルライトの方が良い可能性があります。。。
– 以前の検証で同様の比較を行ったときはext4上でスキップダブルライトの方が良かった
– 前述したPerconaの公式ページにある記事でもext4上でスキップダブルライトの方が良かった
• 大変申し訳ないのですが断言するのは難しいです・・・
– m(_ _)m
はっきりしないわね・・・
57
なら漢は黙ってアトミックライト(NVMFS)だ!
• ただNVMFSはまだまだ開発途中?
– 最低限必要な機能はあるが、一部足りない機能も存在する
• touch /mnt/hoge.txtとかすると・・・
• 新しいファイルシステムゆえ稼働実績が少ない
– やはり実績の少ないファイルシステムの導入にはハードルがある
– 特にデータベースということを考えるとさらにハードルが上がる
– このような場を通じて皆様にもNVMFSの血肉に・・・
他人任せもここまで来ると
むしろ清々しいわ・・・
もちろんこれからのSanDisk様に期待しています!
59
ユニットサイズを変更してみる
• 各レイヤーにおけるユニットサイズが変更可能
– ボリュームのセクターサイズ
– ファイルシステムのブロックサイズ
– MySQLのメモリのページサイズ
512B
MySQL
ページサイズ
ファイルシステム
ブロックサイズ
ストレージ
ブロックサイズ
(セクターサイズ)
4KB
16KB
…
…
4KB
4KB
4KB
上から下まで全ユニットサイズを通常左のような構成から
右のような構成にしたら???
IOPSが同じであればやっぱ
512Bより4KBの方が効率的では
ないかという淡い期待(希望)を
捨てれませんでした!
62
ユニットサイズ毎の性能差(ダブルライト)
4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB
512B 4KB 4KB 4KB 4KB 4KB 4KB
512B 4KB 512B 4KB 512B 4KB
XFS ext4-writeback ext4-journal
TpmC 51659 40484 47150 36768 47293 37267 44104 35375 44406 35649 25433 16828 25784 16493
0
10000
20000
30000
40000
50000
60000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
セクターサイズ
ファイルシステム
ブロックサイズ
ページサイズ
63
ユニットサイズ毎の性能差(ダブルライト)
4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB
512B 4KB 4KB 4KB 4KB 4KB 4KB
512B 4KB 512B 4KB 512B 4KB
XFS ext4-writeback ext4-journal
TpmC 51659 40484 47150 36768 47293 37267 44104 35375 44406 35649 25433 16828 25784 16493
0
10000
20000
30000
40000
50000
60000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
セクターサイズ
ファイルシステム
ブロックサイズ
ページサイズ
棒グラフの本数に差異があるのはext4はブロックサイズの指定が
限定的で512Bは選択できなかったため(1KB, 2KB, 4KBのみ指定可能)
64
ユニットサイズ毎の性能差(ダブルライト)
4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB
512B 4KB 4KB 4KB 4KB 4KB 4KB
512B 4KB 512B 4KB 512B 4KB
XFS ext4-writeback ext4-journal
TpmC 51659 40484 47150 36768 47293 37267 44104 35375 44406 35649 25433 16828 25784 16493
0
10000
20000
30000
40000
50000
60000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
セクターサイズ
ファイルシステム
ブロックサイズ
ページサイズ
ページサイズ4KBのみの場合
ファイルシステムによる違いは見られたが
残念ながらセクターサイズやブロックサイズの
違いによる性能差は見られない
65
ユニットサイズ毎の性能差(ダブルライト)
4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB
512B 4KB 4KB 4KB 4KB 4KB 4KB
512B 4KB 512B 4KB 512B 4KB
XFS ext4-writeback ext4-journal
TpmC 51659 40484 47150 36768 47293 37267 44104 35375 44406 35649 25433 16828 25784 16493
0
10000
20000
30000
40000
50000
60000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
セクターサイズ
ファイルシステム
ブロックサイズ
ページサイズ
ページサイズ16KBのみの場合
4KBほどではないがやはりセクターサイズや
ブロックサイズよりファイルシステムの違いの
方が性能差が大きい(本当に微々たるレベル)
66
ユニットサイズ毎の性能差(ダブルライト)
4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB
512B 4KB 4KB 4KB 4KB 4KB 4KB
512B 4KB 512B 4KB 512B 4KB
XFS ext4-writeback ext4-journal
TpmC 51659 40484 47150 36768 47293 37267 44104 35375 44406 35649 25433 16828 25784 16493
0
10000
20000
30000
40000
50000
60000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
セクターサイズ
ファイルシステム
ブロックサイズ
ページサイズ
最も影響のあるユニットサイズはページサイズ!
(青は4KB、赤茶は16KB)
68
ユニットサイズ毎の性能差(スキップダブルライト)
4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB 4KB 16KB
512B 4KB 4KB 4KB 4KB 4KB 4KB
512B 4KB 512B 4KB 512B 4KB
XFS ext4-writeback ext4-journal
TpmC 54728 46910 46731 39354 46997 39386 43633 36768 43892 37616 30357 23283 30943 23492
0
10000
20000
30000
40000
50000
60000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
セクターサイズ
ファイルシステム
ブロックサイズ
ページサイズ
(当たり前かもしれないけど)ダブルライトと同様に
最も影響のあるユニットサイズはページサイズ!
(青は4KB、赤茶は16KB)
70
ユニットサイズ毎の性能差(アトミックライト)
4KB 16KB 4KB 16KB
512KB 4KB
512KB 4KB
NVMFS
TpmC 51767 44505 52408 45844
0
10000
20000
30000
40000
50000
60000
Tran
sact
ion
Pe
r M
inu
tes
[Tp
mC
]
セクターサイズ
ファイルシステム
ブロックサイズ
ページサイズ
アトミックライト(NVMFS)においても最も性能に影響を及ぼすのは
セクターサイズ等ではなくDBのページサイズであった
72
ユニットサイズの違いに対する性能差の考察
• この検証で最も性能差に影響するのはDBのページサイズであった
– ダブルライト、スキップダブルライト、アトミックライトの全てで4KBが高性能
– やっぱりtpcc-mysqlにおいてはユニットサイズが小さい方が有利?
• ただし・・・
– 以前の検証では16KBの方が良かった
– tpcc-mysql以外でデータがデカいと変わってくるかも?
• 結論として
– 以前の検証と共通して言えることはユニットサイズではDBのページサイズが最も性能に影響するということ
• データベースというソフトウェア上の性能の話だから当然かも
74
データベースの高速化(ioMemoryとアトミックライト)まとめ
• ioMemoryによるデータベースの高速化
– ioMemoryに替えるだけで約370,000[TpmC]
– ioDrive2と比較して1.2倍、SSDと比較して3.4倍の性能
• アトミックライトと書き込み原子性
– アトミックライトは書き込みにおいて「全部」か「ゼロ」のどちらかを保証
– 導入も楽々
– スキップダブルライトの性能にダブルライトの安全性
• その他の書き込み原子性
– NVMFSだけでなくext4やZFS、btrfsでも同様のことが可能
• ユニットサイズの違いによる性能の違い
– ベンチマークによる性能評価にて最も影響を与えたのはページサイズ
ありがとうございました
75
ご清聴ありがとうございました
お問い合わせ先 IIJインフォメーションセンター
TEL:03-5205-4466 (9:30~17:30 土/日/祝日除く) [email protected]
http://www.iij.ad.jp/
Recommended