D-038 · 2014. 11. 26. · » "I K1 s3¸s>* iA3¸s / M >,rS>*' > p ... Madan Jampani, Gunavardhan...

2
I/O 最適化による KVS 動的ノード追加性能の向上に関する一考察 A Study on Improvement of KVS Dynamic Node Addition Performance by I/O Optimization. 御代川 翔平 徳田 大輝 山口 実靖 Shohei Miyokawa Taiki Tokuda Saneyasu Yamaguchi 1. はじめに 近年,大規模 SNS が普及してきたことにより,データベ ース(DB)管理システムのスケーラビリティの確保が重要視 されるようになった.そこで注目されたのが分散型 DB KVS(Key-Value Store)である.KVS はシンプルなデータベ ース構造であるため高いスケーラビリティを持ち,またサ ーバ(ノード)稼働中に新規ノードの追加や既存ノードの削 除が可能といった動的性能伸縮性を持っているため,高負 荷環境ではノード数を増やしデータベース管理シス テムの性能を向上させ,負荷が低くなればノード数 を減らし省電力化させるといったことができる本稿では,動的性能伸張性について着目し,KVS の一つ である Cassandra を用いて動的ノード追加性能について調 査し,I/O 最適化によるノード追加性能向上についての考 察を行う. 2. KVS(Key-Value Store) KVS(Key-Value Store)とは,Key を指定して Value を得 る仕組みのデータベース管理ソフトウェアである. 機能が既存のデータベース(RDBMS など)より単純に なっているが,高いスケーラビリティを得ることが できる.KVS の一つに Cassandra[1]がある. 2.1 Cassandra Cassandra Facebook 社が開発した KVS であり,現在は Apache Software Foundation のトップレベルプロジェクトで ある.Amazon 社の Dynamo[2]の分散ハッシュテーブルと Google 社の BigTable[3]のデータモデルを併せ持ち,結果整 合性の一貫性を持つ. Cassandra を構成する各ノードはトークンと呼ばれるハッ シュ値を持ち,リング状のハッシュ空間にトークンをもと に配置される.リング上の各ノードは,ハッシュ値が自身 のトークン値以下でかつ直前ノードのトークン値より大き い範囲を担当する.読み込みまたは書き込みをする際には Key をハッシュ関数にかけ,そのハッシュ値から担当ノー ドを特定し読み込み,書き込みを実行する.また,稼働中 のシステムに新規ノードを追加した場合,新規ノードはト ークン値から担当範囲が決まり,その範囲を担当している 稼働ノードから担当範囲分のデータを取得する. Cassandra ではデータベースの複製(レプリカ)の数を指定 することが可能である.レプリカ数は初期設定では 1 であ るが,複数の値にすることによって耐障害性を向上させる ことができる.レプリカは担当ノードの後続ノードに配置 される. 3. ノード追加時間の評価 Cassandra は,ノードを追加することによって性能を拡張 することができる.本章では,Cassandra システムにおける 性能拡張処理に要する時間(join 命令を発行した時刻から, 状態が Joining から Normal に変わる時刻までの時間)の評価 を行う. 評価環境は既存ノードの PC3 台,クライアント PC 1 台, 新規追加ノード用の PC1 台で構成される.データベースの 作成にはベンチマークソフトの YCSB(Yahoo Cloud Serving Benchmark)[4]を使用した.測定はレコード数 1600 万件(17[GB])のデータベース,レプリカ数 3 で行った. 3.1 ノード追加のボトルネック ノード追加を行ったときの既存ノードと新規ノードの CPUI/O 使用率を図 1 に示す.Node1~3 は既存ノード, Node4 は新規ノードを示している.図 1 から新規ノードの disk I/O がノード追加のボトルネックになっていることが分 かる. 3.2 遅延書き込み時間延長によるノード追加時間 新規ノードの disk I/O がボトルネックであることから, 新規ノードの遅延書き込み時間を 30 秒から 3000 秒に拡大 した. 遅延書き込み時間延長によるノード追加時間の測定結果 を図 2 に,新規ノードの disk I/O を図 34 に示す. 2 から遅延書き込み時間を延長した際にノード追加時 間が約 8%の短縮が起こっていることが分かる.図 34 ら通常のノード追加では HDD address 2[GB]220[GB]辺に書き込み処理をしていることがわかり,図 4 である遅 延書き込み時間延長時の disk I/O では,2[GB]220[GB]辺での書き込み処理をしておらず,またそれによる長距離 シークがなくなったため,ノード追加時間が短縮したと考 えられる. 3.3 Cassandra における自動同期制御 新規ノードの物理メモリ量が 28[GB]のときのノード追 加時間の測定結果を図 5 に示す.図 5 からノード追加時間 は新規ノードの物理メモリ量と関係していないことが分か る.これは Cassandra が新規ノード追加実行中に,新規ノ ードの HDD と物理メモリを複数回にわたって同期をして いるためである.以後,これを自動同期制御と呼ぶ.本節 では Cassandra にある自動的に同期を行う制御を取り除き, 遅延書き込み時間延長時のノード追加時間を測定した.結 果を図 6 に示す.通常の Cassandra の測定結果を CassandraCassandra から自動同期制御を取り除いたものを Cassandra- sync とした.また last_sync が付加されている結果は新規ノ ード追加完了後に sync コマンドを実行し sync コマンドが終 了するまでの時間をノード追加時間としたものであること を意味している. †工学院大学大学院 工学研究科 電気・電子工学専攻 Electrical Engineering and Electronics, Kogakuin University Graduate School FIT2014(第 13 回情報科学技術フォーラム) Copyright © 2014 by The Institute of Electronics, Information and Communication Engineers and Information Processing Society of Japan All rights reserved. 167 D-038 第2分冊

Transcript of D-038 · 2014. 11. 26. · » "I K1 s3¸s>* iA3¸s / M >,rS>*' > p ... Madan Jampani, Gunavardhan...

Page 1: D-038 · 2014. 11. 26. · » "I K1 s3¸s>* iA3¸s / M >,rS>*' > p ... Madan Jampani, Gunavardhan Kakulapati,Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall

I/O最適化による KVS動的ノード追加性能の向上に関する一考察

A Study on Improvement of KVS Dynamic Node Addition Performance by I/O Optimization.

御代川 翔平† 徳田 大輝† 山口 実靖†

Shohei Miyokawa Taiki Tokuda Saneyasu Yamaguchi

1. はじめに

近年,大規模 SNSが普及してきたことにより,データベ

ース(DB)管理システムのスケーラビリティの確保が重要視

されるようになった.そこで注目されたのが分散型 DB の

KVS(Key-Value Store)である.KVS はシンプルなデータベ

ース構造であるため高いスケーラビリティを持ち,またサ

ーバ(ノード)稼働中に新規ノードの追加や既存ノードの削

除が可能といった動的性能伸縮性を持っているため,高負荷環境ではノード数を増やしデータベース管理システムの性能を向上させ,負荷が低くなればノード数を減らし省電力化させるといったことができる.

本稿では,動的性能伸張性について着目し,KVS の一つ

である Cassandra を用いて動的ノード追加性能について調

査し,I/O 最適化によるノード追加性能向上についての考

察を行う.

2. KVS(Key-Value Store)

KVS(Key-Value Store)とは,Keyを指定して Valueを得る仕組みのデータベース管理ソフトウェアである.機能が既存のデータベース(RDBMS など)より単純になっているが,高いスケーラビリティを得ることができる.KVSの一つに Cassandra[1]がある.

2.1 Cassandra

Cassandraは Facebook社が開発した KVSであり,現在は

Apache Software Foundation のトップレベルプロジェクトで

ある.Amazon 社の Dynamo[2]の分散ハッシュテーブルと

Google社の BigTable[3]のデータモデルを併せ持ち,結果整

合性の一貫性を持つ.

Cassandraを構成する各ノードはトークンと呼ばれるハッ

シュ値を持ち,リング状のハッシュ空間にトークンをもと

に配置される.リング上の各ノードは,ハッシュ値が自身

のトークン値以下でかつ直前ノードのトークン値より大き

い範囲を担当する.読み込みまたは書き込みをする際には

Key をハッシュ関数にかけ,そのハッシュ値から担当ノー

ドを特定し読み込み,書き込みを実行する.また,稼働中

のシステムに新規ノードを追加した場合,新規ノードはト

ークン値から担当範囲が決まり,その範囲を担当している

稼働ノードから担当範囲分のデータを取得する.

Cassandra ではデータベースの複製(レプリカ)の数を指定

することが可能である.レプリカ数は初期設定では 1 であ

るが,複数の値にすることによって耐障害性を向上させる

ことができる.レプリカは担当ノードの後続ノードに配置

される.

3. ノード追加時間の評価

Cassandraは,ノードを追加することによって性能を拡張

することができる.本章では,Cassandraシステムにおける

性能拡張処理に要する時間(join 命令を発行した時刻から,

状態が Joiningから Normalに変わる時刻までの時間)の評価

を行う.

評価環境は既存ノードの PC3台,クライアント PC 1台,

新規追加ノード用の PC1 台で構成される.データベースの

作成にはベンチマークソフトの YCSB(Yahoo Cloud Serving

Benchmark)[4]を使用した.測定はレコード数 1600 万件(約

17[GB])のデータベース,レプリカ数 3で行った.

3.1 ノード追加のボトルネック

ノード追加を行ったときの既存ノードと新規ノードの

CPU・I/O 使用率を図 1 に示す.Node1~3 は既存ノード,

Node4 は新規ノードを示している.図 1 から新規ノードの

disk I/Oがノード追加のボトルネックになっていることが分

かる.

3.2 遅延書き込み時間延長によるノード追加時間

新規ノードの disk I/O がボトルネックであることから,

新規ノードの遅延書き込み時間を 30 秒から 3000 秒に拡大

した.

遅延書き込み時間延長によるノード追加時間の測定結果

を図 2に,新規ノードの disk I/Oを図 3,4に示す.

図 2 から遅延書き込み時間を延長した際にノード追加時

間が約 8%の短縮が起こっていることが分かる.図 3,4 か

ら通常のノード追加では HDD addressの 2[GB]と 220[GB]周

辺に書き込み処理をしていることがわかり,図 4 である遅

延書き込み時間延長時の disk I/Oでは,2[GB]と 220[GB]周

辺での書き込み処理をしておらず,またそれによる長距離

シークがなくなったため,ノード追加時間が短縮したと考

えられる.

3.3 Cassandraにおける自動同期制御

新規ノードの物理メモリ量が 2,8[GB]のときのノード追

加時間の測定結果を図 5 に示す.図 5 からノード追加時間

は新規ノードの物理メモリ量と関係していないことが分か

る.これは Cassandra が新規ノード追加実行中に,新規ノ

ードの HDD と物理メモリを複数回にわたって同期をして

いるためである.以後,これを自動同期制御と呼ぶ.本節

では Cassandra にある自動的に同期を行う制御を取り除き,

遅延書き込み時間延長時のノード追加時間を測定した.結

果を図6に示す.通常のCassandraの測定結果をCassandra,

Cassandra から自動同期制御を取り除いたものを Cassandra-

syncとした.また last_syncが付加されている結果は新規ノ

ード追加完了後に syncコマンドを実行し syncコマンドが終

了するまでの時間をノード追加時間としたものであること

を意味している.

†工学院大学大学院 工学研究科 電気・電子工学専攻 Electrical Engineering and Electronics, Kogakuin University

Graduate School

FIT2014(第 13 回情報科学技術フォーラム)

Copyright © 2014 byThe Institute of Electronics, Information and Communication Engineers andInformation Processing Society of Japan All rights reserved.

167

D-038

第2分冊

Page 2: D-038 · 2014. 11. 26. · » "I K1 s3¸s>* iA3¸s / M >,rS>*' > p ... Madan Jampani, Gunavardhan Kakulapati,Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall

図 1 ノード追加時の CPU・I/O使用率

図 2 遅延書き込み時間延長による追加時間

図 3 通常ノード追加時の disk I/O

図 4 遅延書き込み時間延長時の disk I/O

図 5 物理メモリ量(2,8[GB])による追加時間

図 6 非自動同期制御による追加時間

図 6 より Cassandra から自動同期制御を除き遅延書き込

み時間を延長させることによってノード追加時間は約 20%

の短縮が行われていることが分かる.Sync コマンドを行っ

た場合では,自動同期制御を除いた Cassandra で行った方

が,約 4%の短縮があることが分かる.

3.4 考察

自動同期制御を除いた際のノード追加時間について考察

する.自動同期制御を除いたことにより,ノード追加時間

の短縮が行われた.これは HDD における長距離シークの

削減とノード追加完了時に取得しているデータベースの一

部データが dirty pageとして物理メモリのみに保存されてい

るためだと考えられる.よって,Cassandraシステムの性能

拡張されるまでにかかる時間は短縮されるが,データの保

存性は低下していると考えられる.

4. おわりに

本研究では,Cassandraのノード追加時間に着目し,評価

と考察を行った.評価より,遅延書き込み時間の延長によ

ってノード追加時間の改善がわずかながら可能であること

がわかった.また,Cassandraにある自動同期制御を取り除

くことによって遅延書き込み時間延長によるノード追加時

間の更なる短縮が可能であることがわかった.

今後は,高負荷環境でのノード追加性能について調査す

る予定である.

謝辞

本研究は JSPS 科研費 24300034,25280022,26730040 の

助成を受けたものである.

参考文献

[1] Avinash Lakshman and Prashant Malik, “Cassandra- A Decentralized

Structured Storage System”, LADIS 09, (2009). [2] Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan

Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan

Sivasubramanian, Peter Vosshall and Werner Vogels, “Dynamo:

Amazon’s Highly Available Key-value Store”, SOSP’ 07, (2007).

[3] Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh,

Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes

and Robert E. Gruber,“Bigtable: A Distributed Storage System for Structured Data”, IOSDI’ 06, (2006).

[4] Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan,

Russell Sears, “Benchmarking Cloud Serving Systems with YCSB” ACM symposium on Cloud computing, (2010).

[5] 堀内 浩基,山口 実靖,“KVSにおける動的性能伸張性の向上”研

究報告マルチメディア通信と分散処理(DPS),Vol.2013-DPS-

154(39),No.10 (2013)

0

20

40

60

80

100

120

140

0 100 200 300 400 500 600

使用率[%]

time[sec]

CPU-Node1 CPU-Node2 CPU-Node3CPU-Node4 I/O-Node1 I/O-Node2I/O-Node3 I/O-Node4

0

100

200

300

400

500

Default 遅延書き込み

ノード追加時間[sec]

0

50

100

150

200

250

0 100 200 300 400 500 600

HDDaddress[GB]

time[sec]

write

read

0

50

100

150

200

250

0 100 200 300 400 500 600

HDDaddress[GB]

time[sec]

write

read

0

100

200

300

400

500

2 8

ノード追加時間[sec]

物理メモリ量[GB]

0

100

200

300

400

500

600

700

800

通常時 遅延書き込み時間延長時

ノード追加時間[sec]

Cassandra Cassndra-sync Cassadra+last_sync Cassandra-sync+last_sync

FIT2014(第 13 回情報科学技術フォーラム)

Copyright © 2014 byThe Institute of Electronics, Information and Communication Engineers andInformation Processing Society of Japan All rights reserved.

168

第2分冊