DEIM Forum 2016 KSM を用いたメモリ最適化による 仮想化環境における Cassandra 性能の向上 徳田 大輝† 御代川 翔平† 山口 実靖‡ †‡工学院大学工学部工学研究科電気電子工学専攻 〒163-8677 東京都新宿区西新宿 1-24-2 E-mail: †{cm14022,cm14034}@ns.kogakuin.ac.jp, ‡[email protected] あらまし クラウドコンピューティングの普及により,大量の計算機資源を容易に入手できるようになった.そ のため,ユーザ数やサービスへの負荷の増減に応じてサーバ数の増減が可能となる高いスケーラビリティを持つ DBMS が重要視されている.このスケーラビリティの高い DBMS の一つに KVS がある.KVS は仮想計算機上に構 築されることも多く,仮想化環境における KVS 性能が重要であると考えられる.本論文では,著名な KVS の一つ である Cassandra に着目し,仮想化環境における Cassandra 性能の向上手法を提案する.具体的には,Cassandra の Java ヒープサイズの縮小,KSM の適用,高頻度でアクセスされるデータを固定的にページキャッシュ内に格納する 既存手法の適用を行う.そして,性能評価によりその有効性を示す. キーワード 仮想化,KVM,KVS,Cassandra,データベース,ページキャッシュ 1. は じ め に 情報システムやネットワークサービスの大規模化 2. Cassandra と KVM 2.1. KVS に伴い,データベース管理システムのスケーラビリテ KVS は , Key と Value の 組 を 書 き 込 み , Key を 指 定 ィが重要視されるようになっている.スケーラビリテ す る こ と で Value を 得 る こ と が で き る シ ン プ ル な デ ー ィ の 高 い デ ー タ ベ ー ス 管 理 シ ス テ ム の 一 つ に KVS タ 管 理 手 法 の 1 つ で あ る . RDBMS な ど よ り 機 能 が 単 (Key-Value Store)が あ る .KVS は ,デ ー タ 構 造 の 簡 素 化 純になっているが,高いスケーラビリティを得ること と一貫性保証の程度を下げることでスケーラビリティ が で き る . KVS の 代 表 的 な 実 装 に Cassandra が あ る . の向上を図っており,サーバ増設による性能向上と耐 2.2. Cassandra 障 害 性 向 上 を 実 現 し て い る [1]. Cassandra は Facebook 社 が 開 発 し た KVS で あ り ,現 また,仮想計算機を用いるクラウドコンピューティ 在 は Apache Software Foundation の ト ッ プ レ ベ ル プ ロ ングが普及し,仮想化環境にて情報サービスが稼働す ジ ェ ク ト で あ る .Amazon 社 の Dynamo[3]の 分 散 ハ ッ シ る状況が増加している.仮想計算機を用いるクラウド ュ テ ー ブ ル と Google 社 の BigTable[4]の デ ー タ モ デ ル コンピューティグを使用することにより,サーバ管理 を併せ持ち,結果整合性の一貫性を持つ. 耐障害性の の負荷やサーバ設置スペースなどの問題 の解決や,短 高さ,ノードの非集中性,高可用性,動的に伸縮可能 期間でのサービスの開始を実現したりすることが可能 なスケーラビリティなどの特徴を持つ. であり,今後ますます重要性が増していくと考えられ Cassandra で は 複 数 の ノ ー ド で 分 散 し て デ ー タ を 保 る.特に多数の仮想計算機を用いて性能のスケールア 持し,そのノードの集合はクラスタと呼ばれる. ウ ト が 可 能 で あ る KVS は 仮 想 計 算 機 を 用 い る ク ラ ウ Cassandra ク ラ ス タ を 構 成 す る 各 ノ ー ド は ,ト ー ク ン と ドコンピューティング環境で動作することが多いと予 呼ばれるハッシュ値が割り当てられ,リング上のハッ 想 さ れ ,仮 想 化 環 境 に お け る KVS 性 能 の 向 上 は 重 要 な シュ空間にトークンを元に配置される.リング上の各 課題の一つであると考えられる.また,クラウド環境 ノードは,ハッシュ値が自身のトークン値以下で,か で は 単 一 の 物 理 計 算 機 上 で 複 数 の VM や 複 数 の デ ー タ つ直前のノードのトークン値より大き い範囲を担当し, ベースが稼働するマルチテナント環境であることも想 そ の 範 囲 の Key と Value の 組 を 保 持 す る . こ の と き , 定される. トークン値の担当範囲をノード別に指定することで, 本 研 究 で は , KVS の 一 つ で あ る Cassandra[2]と , 仮 想 計 算 機 シ ス テ ム の 一 つ で あ る KVM に 着 目 し , 複 数 VM 環 境 に お け る KVS の 性 能 向 上 手 法 に つ い て 考 察 す る. 各ノードに公平にデータ量を分散することができる. KVS の 読 み 込 み 処 理 ま た は 書 き 込 み 処 理 を 行 う 際 , Key を ハ ッ シ ュ 関 数 に か け , そ の ハ ッ シ ュ 値 を 担 当 す るノードが読み込み処理や書き込み処理を実行するノ ードとなる.ただし,レプリカが存在する場合,それ を持つノードも実行するノードの対象となる. Cassandra で は デ ー タ ベ ー ス の 複 製( レ プ リ カ )の 数 ードがある. を指定することが可能である.レプリカ数は初期設定 本 研 究 で は , 仮 想 HDD は イ メ ー ジ フ ァ イ ル モ ー ド では 1 であるが,2 以上の値にすることによって耐障 を 使 用 し , 同 モ ー ド で は ゲ ス ト OS 上 の ア プ リ ケ ー シ 害性を向上させることができる.レプリカは上記の担 ョ ン は ゲ ス ト OS フ ァ イ ル シ ス テ ム , 仮 想 計 算 機 , ホ 当ノードの後続ノードに配置される. ス ト OS フ ァ イ ル シ ス テ ム を 介 し て HDD へ の ア ク セ Cassandra は Java 言 語 で 実 装 さ れ て お り , 起 動 す る 際 に メ モ リ 量 や CPU コ ア 数 に 基 づ き Java ヒ ー プ サ イ スが行われる. 2.5. KSM (Kernel Same-page Merging) ズを決定し,メモリ領域を確保している.設定される KSM[5]は 各 VM が 利 用 し て い る ペ ー ジ の 内 ,同 一 内 ヒ ー プ サ イ ズ に Max_heap_size( 最 大 ヒ ー プ 領 域 ) と 容のメモリページ群を 1 つの物理ページにまとめる機 Heap_NewSize(若 い 世 代 の ヒ ー プ サ イ ズ )が あ る . 表 1 能 で あ り , VM の ペ ー ジ キ ャ ッ シ ュ サ イ ズ を 減 ら す こ に Cassandra に お け る Java ヒ ー プ サ イ ズ 決 定 方 法 を 示 となく利用可能な物理ページを増やすことができる. す. KSM は カ ー ネ ル 内 で デ ー モ ン と し て 動 作 し ,匿 名 ペ ー ジを周期的に観測し,重複するページ群を特定して 表 1. Cassandra の Java ヒ ー プ サ イ ズ 自 動 決 定 方 法 Memory Max_heap_size Heap_NewSize 2GB 未 満 メ モ リ の 1/2 2GB~4GB 1GB 4GB~32GB メ モ リ の 1/4 32GB~ 8GB CoW 方 式 で マ ー ジ す る . 2.6. ActCache ActCache[6]手 法 は ,特 定 の フ ァ イ ル が 頻 繁 に ア ク セ 「 Max_heap_size の 1/4」 と 「 100MB」 の 大 きい方 スされることが既知である環境にて,そのファイルを 定 期 的 に ア ク セ ス し OS の ペ ー ジ キ ャ ッ シ ュ に 格 納 さ せ続ける手法である. 通 常 , 頻 繁 に ア ク セ ス さ れ る フ ァ イ ル は OS の ペ ー ジ置換アルゴリズムにより優先的にキャッシュ内に格 2.3. Cassandra におけるデータ保 存 納され,破棄されない.ただし,該当ファイル以外の Cassandra シ ス テ ム に 保 存 さ れ て い る デ ー タ は ファイルに対して膨大な量のアクセスが発生する様な Memtable と SStable の 二 種 類 の テ ー ブ ル に 保 存 さ れ る . 環境では,頻繁にアクセスされる様なファイルもペー Memtable は メ モ リ 上 に 作 成 さ れ る テ ー ブ ル で あ り , ジキャッシュから破棄されてしまい,その様な環境で SStable は デ ィ ス ク 上 に 作 成 さ れ る テ ー ブ ル で あ る .書 は本手法が有効となる.ファイルを積極的にページキ き 込 み 要 求 を 受 け た 時 に ノ ー ド は Commitlog を デ ィ ス ャ ッ シ ュ 内 に 格 納 さ せ る 別 の 手 法 と し て linux-fadvice ク に 書 き 込 み ,そ の 後 Memtable に デ ー タ を 書 き 込 む . コマンドがあるが,両手法の比較については付録にて そ し て 書 き 込 み 要 求 に 完 了 の 返 答 を す る .Flush 命 令 が 言及する. 発 行 さ れ た り , Memtable の 大 き さ が Memtable に 設 定 3. 基 本 性 能 評 価 さ れ た 閾 値 を 超 え る と ,Memtable は デ ィ ス ク に 書 き 込 本 章 に て , 仮 想 化 環 境 に お け る Cassandra 性 能 の 評 ま れ SStable と な る . 読 み 込 み 要 求 受 信 時 に は 価を行う. Memtable と SStable が 同 時 に 読 み 込 ま れ る . 3.1. 測 定 環 境 SStable は 主 に Data.db,Index.db,Filter.db の 3 つ の フ ァ イ ル で 構 成 さ れ て い る .Data.db に key と value の ペ ア と い っ た SStable の 主 な デ ー タ を 格 納 す る . Index.db は key と offset の ペ ア が 保 存 さ れ て お り , Data.db の 各 key と value ペ ア が 格 納 さ れ て い る 場 所 へ の ポ イ ン タ が 格 納 さ れ て い る . Filter.db に は 自 ノ ー ド が 担 当 す る key が 保 存 さ れ て い る . 読 み 込 み 要 求 を 受 け た 時 は , SStable は Filter.db,Index.db,Data.db の 順 で読み込まれる. 2.4. KVM (Kernel-based Virtual Machine) 仮 想 計 算 機 上 で Cassandra を 稼 働 さ せ , ク ラ イ ア ン ト PC 上 か ら YCSB(Yahoo! Cloud Serving Benchmark) [7] で得られる性能を評価した. 2 台 の 物 理 計 算 機 を 使 用 し ,1 台 の 物 理 計 算 機 上 で 3 台の仮想計算機を起動し,合計 6 台の仮想計算機上で Cassandra ク ラ ス タ を 構 築 し た . Cassandra の デ ー タ ベ ー ス サ イ ズ は 17[GB],レ プ リ カ 数 1 と し ,各 ノ ー ド が 担 当 す る デ ー タ 範 囲 は 均 等 と し た (各 ノ ー ド 約 2.9[GB] の デ ー タ を 保 持 ).以 下 こ の 環 境 を シ ン グ ル テ ナ ン ト 環 境と呼ぶ.シングルテナント環境の模式図を図1に示 KVM は 代 表 的 な 仮 想 化 シ ス テ ム の 一 つ で あ り ,本 研 す.また,データベースの数を 3 に増やし,仮想計算 究 で は KVM を 用 い て 調 査 を 行 う .KVM は Linux カ ー 機 2 台 ず つ で デ ー タ ベ ー ス サ イ ズ 17[GB]の Cassandra ネ ル 内 に 実 装 さ れ て お り ,OS を ハ イ パ バ イ ザ と し て 稼 ク ラ ス タ を 構 築 し , 各 ノ ー ド が 約 8.5[GB]の デ ー タ を 働 す る .KVM の 仮 想 HDD の 構 築 方 法 に は イ メ ー ジ フ 保持する環境を構築した.この環境を以下マルチテナ ァイルを使用するモードとパーティションを用いるモ ント環境と呼ぶ. YCSB は 読 込 負 荷 100%,ス レ ッ ド 数 18,操 作 数 50000 3.2. 仮 想 化 環 境 における Cassandra 性 能 回 , 一 貫 性 レ ベ ル ONE と し , 10 回 測 定 し た 平 均 を 結 シングルテナント環境とマルチテナント環境にお 果 と し た .測 定 環 境 を 図 1,2 に 示 し ,使 用 し た 物 理 計 け る Cassandra 性 能 (以 下 ,こ の 実 験 を ”default”と 呼 ぶ ) 算機と仮想計算機の仕様を表 2 に示す. を 図 3 の “single_tenant”と “multi_tenant”に ,ベ ン チ マ ー ク 中 に お け る 物 理 計 算 機 の 平 均 CPU・ I/O 使 用 率 を 図 表 2. 使 用 計 算 機 の 仕 様 物理計算機 仮想計算機 OS CentOS6.5 Kernel Linux 2.6.32.27 2[GB] QEMU Virtual CPU version (cpu64-rhel6) が 確 認 さ れ た . こ れ は , 各 VM が 担 当 す る デ ー タ ベ ー スサイズがマルチテナント環境の方が大きく,これが 原因でマルチテナント環境のスループットが低く,負 8[GB] Intel Core i7-2600 荷が高くなったものと思われる.また,図 4 よりどち ら の 環 境 で も ベ ン チ マ ー ク 中 に お け る disk I/O 使 用 率 が高くなることが確認された.このことから,ベンチ マ ー ク 時 の ボ ト ル ネ ッ ク は 物 理 計 算 機 の disk I/O で あ ることが考えられる. 300 Throughput [ops/sec] CPU 8[GB] AMD Turion II Neo N54L Dual-Core Processor ルテナント環境に比べてスループットが低くなること 250 200 150 100 50 0 single_tenant 図 3 multi_tenant 仮想化環境におけるシングルテナント環境 と マ ル チ テ ナ ン ト 環 境 で の Cassandra 性 能 100 図 1 シングルテナント環境 Utilization [%] Memory 4 に示す.図 3 より,マルチテナント環境ではシング クライア ント 80 60 40 20 0 CPU I/O single_tenant 図 4 CPU I/O multi_tenant ベンチマーク中における物理計算機の 平 均 CPU・ I/O 使 用 率 3.3. ファイルアクセス回 数 . 前 節 の 結 果 よ り , ボ ト ル ネ ッ ク は 物 理 計 算 機 の disk I/O で あ る こ と が 考 え ら れ る .こ こ で ,Cassandra の disk I/O 処 理 の 調 査 と し て Cassandra フ ァ イ ル へ の ア ク セ ス 回 数 を 調 査 し た . ア ク セ ス 回 数 は 仮 想 計 算 機 (ゲ ス ト 図 2 マルチテナント環境 OS)上 の SCSI サ ブ シ ス テ ム 実 装 を 改 変 し て 観 察 し ,各 フ ァ イ ル の ア ド レ ス に 対 し て 発 行 さ れ た HDD ア ク セ ページキャッシュに与える方がより大きな性能向上を ス 命 令 の 数 を 表 し て い る .す な わ ち ,OS ペ ー ジ キ ャ ッ 可 能 で あ る と 考 え ら れ る .KSM の 適 用 は ,複 数 の ゲ ス シ ュ が ミ ス し 実 際 に HDD ア ク セ ス が 生 じ た 回 数 を 表 ト OS 上 で 同 じ カ ー ネ ル , 同 じ ア プ リ ケ ー シ ョ ン が 起 している.測定環境としてシングルテナント環境を使 動していることから多くの重複ページを集約すること 用 し ,1 ノ ー ド 上 の 読 込 負 荷 中 に お け る Cassandra フ ァ で き , ホ ス ト OS ペ ー ジ キ ャ ッ シ ュ サ イ ズ を 増 や す こ イルアクセス数を観測した.測定結果を図 5 に示す と で disk I/O 負 荷 の 低 減 に 繋 げ る こ と が 可 能 で あ る と 1000 0.1 0.01 0 Data.db 図 5 Index.db The others ファイルサイズとファイルアクセス回数 図 5 の左縦軸はファイルサイズを示し,右 縦軸はフ ァ イ ル ア ク セ ス 回 数 を 示 し て い る .図 5 よ り ,Cassandra フ ァ イ ル へ の ア ク セ ス 回 数 は Data.db と Index.db が 最 も多いことが確認された.よって,ボトルネックであ る disk I/O 処 理 に は Index.db と Data.db へ の ア ク セ ス が 強 く 関 係 し て い る こ と が 考 え ら れ る .ま た ,Data.db ングルテナント環境とマルチテナント環境で行った. こ の と き , 縮 小 し た ヒ ー プ サ イ ズ は Max_heap_size と Heap_NewSize で あ り ,測 定 環 境 と ベ ン チ マ ー ク の 内 容 は 3 章の基本性能調査時と同一である.測定結果を図 6 に示す. 400 350 300 250 200 150 100 50 0 の フ ァ イ ル サ イ ズ が 16[GB]で あ る の に 対 し て Index.db の フ ァ イ ル サ イ ズ は 500[MB]と 小 さ い . 1 バ イ ト あ た り の ア ク セ ス 回 数 で 比 較 す る と , Index.db が 8318[回 /MB]で あ り ,Data.db が 315[回 /MB]で あ り ,Index.db の 方 が 大 き く 上 回 っ て い る こ と が 分 か る .こ の こ と か ら , single_tenant 図 6 heap 1/8 2000 1 第 3.2 節 の default と , Cassandra の Java ヒ ー プ サ イ ズ を 1/2,1/4,1/8 と 縮 小 し た 場 合 で の 性 能 比 較 を ,シ heap 1/4 3000 10 5.1. ヒープサイズ縮 小 heap 1/2 100 本章にて,提案手法による性能の向上の評価を行う. default 4000 heap 1/8 1000 5. 評 価 heap 1/4 5000 heap 1/2 number of access 考えられる. default 6000 Throughput[ops/sec] File Size [MB] 10000 size[GB] Number of access 100000 multi_tenant ヒ ー プ サ イ ズ を 縮 小 し た と き の Cassandra 性 能 既 存 手 法 で あ る ActCache 手 法 を 用 い て ア ク セ ス 回 数 の 多 い Index.db フ ァ イ ル を ペ ー ジ キ ャ ッ シ ュ に 固 定 的 図 6 より,シングルテナント環境においてヒープサ に格納することにより,性能向上が可能であると考え イ ズ を 縮 小 す る と 性 能 が 向 上 (default と 比 較 し 最 大 られる. 51%向 上 )す る こ と が 確 認 さ れ た .こ れ は ,Cassandra の 4. 提 案 手 法 Java VM が ヒ ー プ 領 域 と し て 確 保 し て い た メ モ リ を 減 本 稿 で は ,(1) 既 存 手 法 で あ る ActCache 手 法 を 用 い らし,仮想計算機のメモリキャッシュを増やしたこと て Index.db フ ァ イ ル を キ ャ ッ シ ュ に 載 せ る ,(2) Java ヒ が性能向上につながったことを示しており,巨大な ー プ サ イ ズ を 縮 小 し て ゲ ス ト OS 上 の ペ ー ジ キ ャ ッ シ Java VM ヒ ー プ サ イ ズ は 必 ず し も 効 果 的 に 使 用 さ れ て ュ サ イ ズ を 増 や す , (3) KSM を 適 用 し ホ ス ト OS ペ ー いないと予想できる.同様に,マルチテナント環境で ジキャッシュサイズを増やす,の 3 手法を適用し, も 性 能 向 上 が 確 認 さ れ , default 計 測 と 比 較 し て 最 大 Cassandra の 性 能 を 向 上 さ せ る 手 法 を 提 案 す る . 28%の 性 能 向 上 が 確 認 さ れ た . ActCache は 第 2.6 節 に て 紹 介 し た 手 法 で あ り , 本 手 5.2. KSM 適 用 法 に よ り 頻 繁 に ア ク セ ス さ れ る Index.db フ ァ イ ル を ペ 第 3.2 節 の default に 対 し て KSM を 適 用 し , シ ン グ ージキャッシュに格納させ続けることにより ルテナント環境とマルチテナント環境で性能評価を行 Cassandra 性 能 の 向 上 が 期 待 で き る .ま た ,Java ヒ ー プ っ た . こ の と き , 前 節 の 手 法 で あ る Cassandra ヒ ー プ サ イ ズ の 縮 小 は , ゲ ス ト OS ペ ー ジ キ ャ ッ シ ュ が 増 え サ イ ズ の 縮 小 時 に 対 し て も KSM を 適 用 し た . 測 定 環 る こ と が 期 待 さ れ ,ActCache 手 法 な ど に よ り ペ ー ジ キ 境とベンチマークの内容は 3 章の基本性能調査時と同 ャッシュが効果的に使用される環境においてはメモリ 一 で あ る . 測 定 結 果 を 図 7, 8 に 示 す . を Java VM の ヒ ー プ に 与 え る こ と よ り も ゲ ス ト OS の よる性能向上率が減少することが確認された. default 時 と ヒ ー プ サ イ ズ 縮 小 時 の KSM に よ る 共 有 物理ページ数について調査した.結果を図 9 に示す. 図 9 よ り , ヒ ー プ サ イ ズ と KSM に よ る ペ ー ジ マ ー ジ ングに相関はないことが確認された.このことから, KSM の マ ー ジ 対 象 は Java ヒ ー プ で は な く ,Linux カ ー ネルにあると考えられる. KSM heap 1/8 ヒ ー プ サ イ ズ 縮 小 時 に お け る KSM 適 用 時 縮 小 時 に 対 し て も ActCache 手 法 を 適 用 し た .測 定 環 境 とベンチマークの内容は 3 章の基本性能調査時と同一 で あ る . 測 定 結 果 を 図 10, 11 に 示 す . 図 10 Throughput [ops/sec] 共有物理ページサイズ[MB] 140 120 100 80 60 20 0 図 9 heap 1/2 heap 1/4 heap_default heap 1/2 heap 1/8 ヒ ー プ サ イ ズ 毎 に お け る KSM に よ る 共有物理ページサイズの比較 ActCache default ActCache default ヒ ー プ サ イ ズ 縮 小 時 に お け る ActCache 手 法 400 350 300 250 200 150 100 50 0 40 heap_default heap 1/8 適 用 時 の Cassandra 性 能 (シ ン グ ル テ ナ ン ト 環 境 ) 180 160 heap 1/4 図 11 heap 1/4 ActCache の Cassandra 性 能 (マ ル チ テ ナ ン ト 環 境 ) heap_default heap 1/2 default ヒ ー プ サ イ ズ 縮 小 時 に お け る KSM 適 用 時 ActCache KSM default KSM heap 1/8 ActCache 図 8 heap 1/4 default heap_default heap 1/2 default KSM default KSM 0 ActCache 50 default 100 default 150 300 250 200 150 100 50 0 ActCache 200 Throughput [ops/sec] 250 default Throughput [ops/sec] の Cassandra 性 能 (シ ン グ ル テ ナ ン ト 環 境 ) 価 を 行 っ た . 前 節 と 同 様 に Cassandra ヒ ー プ サ イ ズ の ActCache KSM default シングルテナント環境,マルチテナント環境で性能評 default 図 7 heap 1/4 第 3.2 節 の default に 対 し て ActCache 手 法 を 適 用 し , default heap_default heap 1/2 default KSM default KSM 5.3. ページキャッシュ固 定 default Throughput [ops/sec] 400 350 300 250 200 150 100 50 0 heap 1/8 ヒ ー プ サ イ ズ 縮 小 時 に お け る ActCache 手 法 適 用 時 の Cassandra 性 能 (マ ル チ テ ナ ン ト 環 境 ) 図 7,8 よ り ,KSM を 適 用 す る こ と に よ り default よ 図 10,11 よ り ,Java VM ヒ ー プ サ イ ズ を 縮 小 し た 状 りもスループットが向上することが確認された.これ 態 で ActCache 手 法 を 用 い る と ,同 手 法 に よ り 性 能 が 向 は,すべての仮想計算機上で同じアプリケーション, 上することが確認された.これは,頻繁にアクセスさ 同 じ カ ー ネ ル が 起 動 し て い る た め ,KSM に よ る ペ ー ジ れ る Index.db フ ァ イ ル が ペ ー ジ キ ャ ッ シ ュ 内 に 破 棄 さ マージングが効果的に働き,物理ページの重複 削除に れることなく固定的に格納されつづけ, これにより同 よ り ホ ス ト OS の メ モ リ キ ャ ッ シ ュ が 増 え ,disk I/O 処 フ ァ イ ル に 起 因 す る デ ィ ス ク ア ク セ ス (仮 想 化 環 境 で 理が速くなったことが原因だと考えられる.また, 図 あるため仮想ディスクであるイメージファイルへのア 7,8 よ り ,ヒ ー プ サ イ ズ を 縮 小 し て い く ほ ど ,KSM に ク セ ス )が 軽 減 さ れ Cassandra 性 能 が 向 上 し た と た め で あると考えられる.ただし,ヒープサイズを初期設定 の ま ま ActCache 手 法 を 適 用 す る と 性 能 が 劣 化 す る こ と も 確 認 さ れ た . こ れ は , 初 期 設 定 で は Java VM の ヒ ープサイズが仮想計算機のメモリの半分を占有してお り ,ペ ー ジ キ ャ ッ シ ュ が 小 さ く Index.db フ ァ イ ル を 安 定的に格納し続けることができず,同手法が性能を劣 化させたと思われる. 同様に,マルチテナント環境でも性能向上を確認で き る .ま た ,シ ン グ ル テ ナ ン ト 環 境 で の ActCache 手 法 に よ る 性 能 向 上 率 は 3%だ っ た の に 対 し , マ ル チ テ ナ ン ト 環 境 で の ActCache 手 法 に よ る 性 能 向 上 率 は 最 大 18%と な っ て い る .こ の こ と か ら ,Index フ ァ イ ル サ イ ズ が 大 き く な る に つ れ て ActCache 手 法 に よ る 性 能 向 上率が高くなることが分かる. 5.4. 三 手 法 適 用 前述の三手法のすべてを用いない場合と,すべてを 用 い る 場 合 の 性 能 を 図 12 に 示 す . 図 12 よ り , 提 案 手 法をすべて用いることにより大幅な性能向上が実現さ れ ,本 計 測 の 例 に て 56%の 性 能 向 上 が 実 現 さ れ て い る [3] 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 [4] 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 [5] Andrea Arcangeli, Izik Eidus, Chris Wright,"Increasing memory density by using KSM",Proceedings of the Linux Symposium, 2009 [6] ShoheiMiyokawa, TaikiTokuda, SaneyasuYamaguchi, "ElasticityImprovementofCassandra," ACM IMCOM (ICUIMC) 2016, The 10th International C onference on Ubiquitous Information Management and Communication, 2016 [7] Brian F. Cooper, Adam Silberstein, Erwin Tam, Raghu Ramakrishnan, Russell Sears “Benchmarking Cloud Serving Systems with YCSB” 付録 3 章 の シ ン グ ル テ ナ ン ト 環 境 に お い て , Index.db を ActCache 手 法 を 用 い て ペ ー ジ キ ャ ッ シ ュ 内 に 格 納 さ せ よ う と し た 場 合 と ,fadvice 手 法 を 用 い て 格 納 さ せ よ ことが分かる. 手 法 で は , ゲ ス ト 1 秒 お き に fadvice コ マ ン ド を 用 い て *Index.db フ ァ イ ル を 優 先的にページキャッシュ内に格納するように 指示をし た .こ の 時 ,Java ヒ ー プ サ イ ズ は 1/2 と し て 測 定 し た . 図 よ り ,fadvice を 用 い る 手 法 よ り ,ActCache を 用 い る手法の方が性能向上を実現できていることが分かる. heap 1/2 default 図 12 OS 内 に て POSIX_FADV_WILLNEED オ プ シ ョ ン を つ け た linux- heap 1/4 heap 1/8 KSM + ActCache 三 手 法 適 用 時 に お け る Cassandra 性 能 (シ ン グルテナント環境) 6. ま と め 本 稿 で は , ペ ー ジ キ ャ ッ シ ュ 固 定 化 , Java ヒ ー プ サ イ ズ の 縮 小 , KSM の 適 用 に よ り KVS 性 能 を 向 上 さ せ る手法を提案した.そして,性能評価により提案手法 の有効性を確認した.今後はさらなる性能向上を目指 していく予定である. 謝辞 本 研 究 は JSPS 科 研 費 25280022, 26730040,15H02696 の助成を受けたものである. 参考文献 [1] 堀 内 浩 基 ,山 口 実 靖 ,“KVS に お け る 動 的 性 能 拡 張 性 の 向 上 ”, 研 究 報 告 マ ル チ メ デ ィ ア 通 信 と 分 散 処 理 (DPS-154, 03, 2013) [2] Avinash Lakshman and Prashant Malik, “Cassandra- A Decentralized Structured Storage System”, LADIS 09, 2009 350 Throughput [ops/sec] Throughput [ops/sec] う と し た 場 合 の 性 能 を 図 13 に 示 す . fadvice を 用 い る 400 350 300 250 200 150 100 50 0 300 250 200 150 100 50 0 default 図 13 ActCache fadvise ActCache 手 法 と fadvise 手 法 に お け る ヒ ー プ サ イ ズ 1/2 に お け る Cassandra 性 能 の 比 較
© Copyright 2024 ExpyDoc