電子情報通信学会ワードテンプレート (タイトル)

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 性 能 の 比 較