• 検索結果がありません。

KVSの動的性能伸縮に関する一考察

N/A
N/A
Protected

Academic year: 2021

シェア "KVSの動的性能伸縮に関する一考察"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2012-OS-123 No.2 Vol.2012-EMB-27 No.2 2012/12/5. KVS の動的性能伸縮に関する一考察 堀内浩基†. 山口実靖†. クラウドコンピューティングの普及により,大量の計算資源を容易に入手できるようになった.これにより,スケ― ラビリティが高いデータベース管理システムである KVS (Key Value Store)が注目を集めている.クラウドコンピュー ティングでは計算資源を動的に確保,解放することが可能であり,KVS にも動的にノードを追加,削除してシステム 規模を実行時に伸縮させる機能が用意されている.よって,クラウドコンピューティングと KVS を用いることによ り,サービスにかかる負荷が高いときには多くの計算資源を確保してサービスの品質を保ち,負荷が低いときには確 保計算資源量を減らして計算資源コストを抑制するという制御が可能となる.本稿では,KVS の動的性能伸縮性につ いて考察を行う.まず,動的拡張性能(ノードの追加に要する時間)の評価結果を示し,性能拡張には長い時間を要す ることがあること,KVS に読み込み負荷がかかっている状況では特に性能拡張に多くの時間を要することを示す.次 に,I/O 解析結果を示し,読み込み負荷がかかっている状況では性能拡張に多くの時間を要する理由を示す.最後に, KVS の伸縮性の向上手法についての考察を示す.. A Study on Performance Elasticity of Key Value Store KOHKI HORIUCHI†. SANEYASU YAMAGUCHI†. KVS (Key Value Store) is simple and scalable database management system. It is expected to be suitable for a cloud computing platform which has significant scalability. KVS has also large elasticity, with which system performance can be dynamically changed by adding or removing nodes without stopping the system. In this paper, we discuss elasticity of KVS. First, we evaluate elasticity of KVS using Cassandra which is one of the most famous KVS implementation and show inserting nodes into running system takes very long times. Second, we present analyses of system behavior. Third, we show the reason of the long joining time.. 1. はじめに. 2. Key-Value Store. 近年,クラウドコンピューティングの普及に伴いデータ. KVS とは,Key と Value のみで構成される単純なデータ. ベース管理システムのスケーラビリティの確保が重要視さ. ベース管理システムである.データベース内に Key と Value. れ,この解決策として Key-Value Store (KVS) が注目され. の組を保存することができ,Key を指定してそれに対応す. ている.KVS は Key と Value のみで構成されるシンプル. る Value を得ることができる.構造が単純であるため分散. なデータ構造のデータベースであり,高いスケーラビリテ. 環境への適用が容易であり,高い規模拡張性が得られるこ. ィがある.また,KVS は実行時にノード数の増減を行うこ. とが多い.逆に,多くの場合提供される機能が豊富ではな. とが可能であり,クラウド環境の様に使用計算資源量を容. く,また保証される一貫性が高くないため,利用者がこれ. 易に増減できるシステム上で KVS を動作させれば,性能を. らを考慮した運用をすることが求められる.. 動的に伸縮可能であるデータベース管理システムを構築で きると期待されている.. 代表的な KVS の実装の 1 つに Cassandra [1]がある. Cassandra は Dynamo[2] の 分 散 ハ ッ シ ュ テ ー ブ ル と. 本研究では,実行中の KVS システムにノードを追加して. BigTable[3] の デ ー タ モ デ ル を 併 せ 持 っ た Eventually. 動的に性能を拡張させることに着目し,動的性能拡張性の. Consistent な分散システム構造の KVS である.図 1 の様. 評価と,動的性能拡張性の向上手法について考察を行う. 既存クラウドシステムの多くで Linux が使用されており,. に,Cassandra を構成する各ノードはトークンと呼ばれるハ ッシュ値を持ち,リング状のハッシュ空間にトークンをも. 同 OS は代表的な KVS のプラットフォーム OS と考えられ. とに配置される.各ノードは,ハッシュ値が自身のトーク. る.よって本研究では,KVS を Linux 上で使用する環境に. ン値以下でかつ直前ノードのトークン値より大きい範囲を. 焦点を当て,同環境における KVS の性能拡張性の向上手法. 担当する.データを保存または検索する際は,Key をハッ. について考える.. シュ関数にかけそのハッシュ値から当該データの担当ノー ドを特定する. 稼働中の KVS システムに新規ノードを追加した場合,新. †工学院大学大学院工学研究科電気・電子工学専攻 Graduate School of Electrical and Electronics Engineering,Kogakuin Universit. 規ノードの担当トークン範囲にあたるデータが既存ノード より新規ノードに転送される.同様に,稼働中の KVS シス テムからノードを削除した場合は,脱退ノードの担当ト― クン範囲のデータが新しく担当することになるノードに転. ⓒ2012 Information Processing Society of Japan. 1.

(2) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2012-OS-123 No.2 Vol.2012-EMB-27 No.2 2012/12/5. 送される.本稿では特に,新規ノード追加の際に生じる「既 存ノードから新規ノードへのデータ転送」に着目して考察 を行う.. 3.1 動的ノード追加による性能変化 最初に,稼働中の KVS にノードを動的に追加したときの 性能変化について述べる.図 3 に,1 ノードで稼働中のシ. Node1. ステムに 1 ノードずつ合計 4 ノード追加した時の get 性能. 0. の変化を示す.2 ノード並列に join させた時の性能の変化. 0.8. を図 4 に示す.図の縦軸は,16 スレッドのクライアントか Node2. Node5. ら発行された get 要求に対する応答時間である.データベ 0.2. ースサイズは 16[GB]であり,初期ノード以外の各ノードの 担当トークン範囲は全体の 20%,初期ノードの担当トーク ン範囲は 100%よりはじまりノードが追加されるごとに. 0.6 Node4. 20%ずつ減少させていった.図中の S は join 開始時刻を表. Node3. し,図中の E は join 終了時刻を表している.. 0.4. 両図より,実行中にノードを追加することにより get 性. 図 1 ノード配置. 能を向上させることが可能であること,join 処理中は get 性能が大幅に劣化することが確認できる.両図にて get 性 能の振動を観察することができるが,本振動は join 処理を. 3. 性能伸張性の評価. 行わない状態でも発生し, join 処理と関連が大きくないた. KVS では,実行時にノードを追加しシステム規模や性能. め本稿では考察の対象としない.同振動は Linux OS 特有. を動的に拡張することができる.本章では,Cassandra シス. のものであり,Windows OS を用いて行った測定には存在. テムにおける規模拡張(ノード追加)性能の評価を行う.. しない.Windows OS における測定結果を付録に示す.. Cassandra では,ユーザがノード追加要求(join 要求)を発. 1. join 処理終了後にノードは normal 状態となる.本稿では, て)normal 状態になった時刻」までの時間を「join 時間」 と定義する. 以下の節にて,各条件下における join 時間の測定結果を 示す.全ての実験において,使用した KVS は Cassandra 1.0.7,. E. E. S. S. E. 0.8 get応答時間 [sesc]. 「join 要求を発行した時刻」から「(joining 状態を終え. E S. S. 行すると,ノードはまず joining 状態でシステムに加わり,. 0.6. 0.4. 0.2. レプリカ数は 1,使用した OS は Linux 2.6.18.8,Value サイ 0. ズは 16[KB],実験環境は図 2 通り,使用計算機の仕様は表. 0. 500. 1000. 1500. 1 の通りである.である.また,次節以降で示される読込. 2000. 2500. 3000. 3500. time. 処理とは一様分布乱数で key 指定しその value を get 要求に. 図 3 ノード join による get 応答時間の変化(1 ノードずつ). より取得する処理であり,書込処理とは一様分布乱数で. 1. key を指定しその value を update 要求により書き込む処理. E. S. である.. E. get応答時間 [sec]. 0.8 クライアント. 0.6 0.4. 0.2 0. 0. 500. Node1 Node2 Node3 Node4 Node5. 図 2 測定環境. 1000 time. 1500. 2000. 図 4 ノード同時 join による get 応答時間の変化(2 ノード同時). 表 1 使用計算機の仕様 クライアント,Node1,Node2 CPU Intel Core i3 Mem 2[GB] HDD 150[GB] NIC Gigabit Ethernet. Node3,Node5 CPU Intel Celeron Mem 2[GB] HDD 150[GB] NIC Gigabit Ethernet. ⓒ2012 Information Processing Society of Japan. Node4 CPU Mem HDD NIC. AMD Athlon 3[GB] 150[GB] Gigabit Ethernet. 3.2 データサイズと join 時間 初期ノード数が 1,データベースの総サイズが 0[GB]か ら 16[GB],join 処理中の KVS の負荷状態が負荷なし,読. 2.

(3) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2012-OS-123 No.2 Vol.2012-EMB-27 No.2 2012/12/5. 込負荷あり,書込負荷ありにおける 1 ノードずつ順に 4 ノ ード join させたときの各ノードの join 時間を図 5,図 6,. 3.3 トークン範囲と join 時間 既存ノード数が 1,データベースの総サイズが 16[GB],. 図 7 に示す.ただし,初期状態では,既存の 1 ノードがト. 追加ノード数が 1 台,追加ノードのトークン範囲が 1[%]. ークン範囲 100%を担当しており,新規追加ノードはそれ. から 32[%],join 処理中の KVS の負荷状態が負荷なし,読. ぞれ 20%を担当範囲として join を行う.. 込負荷あり,書込負荷ありにおける join 時間を図 8 に示す.. 実験結果より,join 時間は 60 秒を下回らないこと,デー. 実験結果より,60 秒の sleep 時間を除くと join 時間はトー. タサイズが増加するのに従い join 時間も増加する傾向があ. クン範囲とほぼ比例することが分かる.また,前節同様に. ること,読み込み負荷(KVS get 処理)が存在すると join 時間. 読み込み負荷中は,join 時間が非常に長くなることが分か. が大幅に増加してしまうことがわかる.join 時間が 60 秒を. る.. 下回らない理由は,Cassandra の join 実装内に 30 秒の sleep. 800. 処理が 2 個含まれているためである.. 700 join時間 [sec]. 250. join時間 [sec]. 200 150. 50. 600. 読み込み負荷. 500. 書込み負荷. 400. 300 200 100. 1ノード目 2ノード目 3ノード目 4ノード目. 100. 負荷なし. 0 0. 4. 8. 12. 0. 0. 2. 4. 6. 8. 10 12 14 16 18. join時間 [sec]. 各ノードの join 時間の関係. 24. 28. 32. 36. 3.4 並列 join ノード数と join 時間 既存ノード数が 1,データベースの総サイズが 16[GB],. 800. 並列 join ノード数が 1 から 4,join 処理中の KVS の負荷状. 700. 態が負荷なし,読込負荷あり,書込負荷ありにおける join. 600. 時間を図 9 に示す.ただし,複数ノード並列 join の場合は,. 500. join 時間が最も長いノードの join 時間を「並列 join の join. 400 1ノード目 2ノード目 3ノード目 4ノード目. 300 200 100. 0 0. 2. 4. 6. 8. 10 12 14 16 18. 総データサイズ [GB]. 時間」とした. 図より,並列 join ノード数を増加させることにより join 時間が比例以上の速度で増加し,複数台を並列して join さ せるより 1 台ずつ順に join を行った方が短い時間で join が 完了できることが分かる. 3500. 3000. 各ノードの join 時間の関係. 2500. 200. 150. join時間 [sec]. 図 6 読込負荷時における総データサイズと. 250. join時間 [sec]. 20. 図 8 トークン範囲と join 時間の関係. 総データサイズ [GB]. 図 5 負荷なし時における総データサイズと. 16. トークン範囲 [%]. 負荷なし 読み込み負荷 書込み負荷. 2000 1500. 1000 500. 100. 1ノード目 2ノード目 3ノード目 4ノード目. 50. 0 0. 2. 4. 6. 8. 0. 0. 1. 2. 3. 4. 5. 同時追加ノード数 [台]. 図 9 複数ノード並列. 10 12 14 16 18. 総データサイズ [GB]. 図 7 書込負荷時における総データサイズと 各ノードの join 時間の関係. 4. 考察 本章で,読込負荷が存在すると join 時間が大幅に増加し てしまう原因について考察する.. ⓒ2012 Information Processing Society of Japan. 3.

(4) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2012-OS-123 No.2 Vol.2012-EMB-27 No.2 2012/12/5. 4.1 読込負荷中の join 処理における発行 I/O. 62 57. りにおける 1 台ノード join 時の disk I/O を図 10,図 11,図. 52. 12 に示す.また,これらを拡大したものを図 13,図 14, 図 15 に示す.これらの図において,各プロットは HDD へ のアクセス要求の発生を示しており,横軸はアクセス要求 の発生時刻,縦軸はアクセス要求のアクセスアドレスであ. disk address [GB]. KVS の負荷状態が負荷なし,読込負荷あり,書込負荷あ. join開始. join終了. 47. 42 37 32 27. 22. る.ディスクシークについて考察するために,図 13 から図. 17. 15 においてはプロット間の線を表記してある.. 12. 負荷がない状態の図 10 に着目すると,72[GB]付近から. 0. 200. 400 time. 74[GB]付近など,join 処理のためにデータベース内のデー. 600. 800. 図 12 書込負荷時の 1 台ノード join における disk I/O. ンシャルリードとして効率的に処理されていることが分か. 100. る.これに対して読込負荷がある図 11,図 14 の状況では,. 95. join 処理のためのデータベース内のデータの連続読込が. 90. get 要求の発生により細かく分断され,効率の悪いランダム アクセスとなっていることが分かる. 以上より,読込負荷があると join のためのデータベース 内データの連続読み込みが効率的に行えず,結果的に join. disk address [GB]. タを連続して読み込んでいることが分かり,これがシーケ. 85 80. 75 70 65 60. 時間が大幅にしていることが分かる.. 55. 50. 100. 190. 196. 198. 200. join終了. join開始. 90. 図 13 負荷なしの 1 台ノード join における disk I/O(拡大). 85. 80. 62. 75. 57. 70. 52. 65. 60 55 50. 0. 200. 400 time. 600. 800. disk address [GB]. disk address [GB]. 194 time. 95. 47. 42 37 32 27. 22 17. 図 10 負荷なしの 1 台ノード join における disk I/O. 12. 500. 62. 502. 504. 506. 508. 510. time. 57. join開始. join終了. 52. 図 14 読込負荷の 1 台ノード join における disk I/O(拡大). 47. 42. 132. 37 32 27. 22 17 12. 0. 200. 400 time. 600. 800. 図 11 読込負荷時の 1 台ノード join における disk I/O. disk address [GB]. disk address [GB]. 192. 112. 92 72 52 32. 300. 302. 304. 306. 308. 310. time. 図 15 書込負荷の 1 台ノード join における disk I/O(拡大). ⓒ2012 Information Processing Society of Japan. 4.

(5) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2012-OS-123 No.2 Vol.2012-EMB-27 No.2 2012/12/5. 4.2 I/O スケジューラ Linux OS には,NOOP,CFQ,Deadline の 3 種類の I/O. 5. まとめ. スケジューラが搭載されている.I/O スケジューラごとの. 本稿では,Linux 上で動作する Cassandra システムに着目. join 時間を図 16 に示す.図より,I/O スケジューラを変更. し,その動的性能拡張性の評価,join 時間が長くなる理由. することにより join 時間が大きく変わることがわかり,join. の考察を行った.. 時間の短縮には I/O スケジューリングの最適化が効果的で. 予定である.. あると予想される.. 0.25. 2000. 0.2. 1500. 0.15. 1000. 0.1. 500. 0.05. 0. join時間 [sec]. 0.3. get応答時間. 2500. 400. 0.35. join時間. 3000. get応答時間 [sec]. 3500. join時間 [sec]. 今後は,join 時間の短縮手法の実装と評価を行っていく. 300 200 100 0. 0 cfq. noop. 32. deadline. I/Oスケジューラ. 128 8192 最大先読みサイズ [KB]. 図 17 最大先読みサイズと join 時間の関係(4GB). 図 16 I/O スケジューラと join 時間と get 応答時間の関係. 140. 4.3 先読み処理. 120. ズを変化させて join 処理を行ったときの join 性能を図 17, に示す.また,実験中の先読サイズの変化を図 18,図 19 に示す.データサイズは 4GB である.. async_size [kb]. 連続読込処理が積極的に行われるよう最大先読みサイ. 100 80. 60. 図 17 より,最大先読サイズを初期設定の 128KB から拡. 40. 大しても join 時間の短縮は実現されないことが分かる.逆. 20. に,最大先読みサイズを縮小させることにより join 時間の. 0. 0. 短縮が可能であることが確認された.また,図 18,図 19. 50. 100. より最大先読サイズを増加させると join 処理のための連続 35. ていることが予想される.. 30. してしまう理由を OS の I/O サブシステムの側面から考察 する.読込負荷中の join 処理では,粒度の細かい get 処理 と,join 処理のための連続データ読込が混在している.し. 最大先読みサイズ [KB]. みサイズで行われてしまい,結果として処理効率が低下し. 読込負荷中に join 処理を行うと,join 時間が大幅に増加. 200. 250. 300. 図 18 先読みサイズの変化(max=128[KB]). データ読み出しだけでなく,通常の get 処理も大きな先読. 4.4 I/O サブシステムの課題. 150 time. 25. 20 15 10 5 0. かしそれらの I/O 要求は両者とも Cassandra プロセスより発. 0. 行されるため,I/O サブシステムは両者を区別することが. 50. 100. 150 200 time. 250. 300. 350. できない.よって,get 処理の I/O 要求に対して先読みサイ 図 19 先読みサイズの変化(max=32[KB]). ズを縮小し,join 処理のための連続データ読込要求に対し て先読サイズを拡大することができない.また同じ理由に より,CFQ における I/O 優先度(ionice)を連続データアクセ. 謝辞. 本研究は JSPS 科研費 22700039, 24300034 の助成を. スに対してのみ行うこともできない.. 受けたものである。. これを解決するには,I/O サブシステム内においてプロ セス番号以外の情報により I/O 要求を分類し最適化するこ とが重要であると考えられる.. ⓒ2012 Information Processing Society of Japan. 5.

(6) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2012-OS-123 No.2 Vol.2012-EMB-27 No.2 2012/12/5. 参考文献 [1] Avinash Lakshman and Prashant Malik, “CassandraA 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 pages 205--218, 2006. 付録 Windows OS 上で Cassandra を稼働させた場合の, get 処 理応答時間の推移を図 20 に示す.. get応答時間 [sec]. 0.2 0.15. 0.1 0.05. 0 0. 1000. 2000 time. 3000. 4000. 図 21 Window OS 上での get 処理応答時間の推移. ⓒ2012 Information Processing Society of Japan. 6.

(7)

図 2  測定環境  表 1  使用計算機の仕様
図 11  読込負荷時の 1 台ノード join における disk I/O
図 16 I/O スケジューラと join 時間と get 応答時間の関係

参照

関連したドキュメント

c加振振動数を変化させた実験 地震動の振動数の変化が,ろ過水濁度上昇に与え る影響を明らかにするため,入力加速度 150gal,継 続時間

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ

さらに、NSCs に対して ERGO を短時間曝露すると、12 時間で NT5 mRNA の発現が有意に 増加し、 24 時間で Math1 の発現が増加した。曝露後 24

にて優れることが報告された 5, 6) .しかし,同症例の中 でも巨脾症例になると PLS は HALS と比較して有意に

血は約60cmの落差により貯血槽に吸引される.数

関係委員会のお力で次第に盛り上がりを見せ ているが,その時だけのお祭りで終わらせて

断面が変化する個所には伸縮継目を設けるとともに、斜面部においては、継目部受け台とすべり止め

であり、最終的にどのような被害に繋がるか(どのようなウイルスに追加で感染させられる