SlideShare uma empresa Scribd logo
1 de 31
© 2019 NTT TechnoCross Corporation
性能改善に向けた取り組み
OpenStack Swift
2019/1/18
須田憲男
© 2019 NTT TechnoCross Corporation 2
サマリ
• 自己紹介
• はじめに
• Swiftの性能問題
• 性能改善Patch紹介
• PUTとGETの流れ
• どれだけ性能が改善するのか
• おわりに
© 2019 NTT TechnoCross Corporation 3
自己紹介
• NTTテクノクロス(株)
須田 憲男
Swiftに関する業務
これまで 2013年からSwift (Grizzly) の機能調査に参画
Tempestシナリオ拡充
Storage Policyに関するバグ改修パッチ提供
商用稼動中のプライベートクラウドの運用保守
現在は Swiftの機能調査、運用保守
社内クラウドサービスにオブジェクトストレー
ジサービスを立ち上げてトライアル実施中
© 2019 NTT TechnoCross Corporation 4
はじめに
© 2019 NTT TechnoCross Corporation 5
はじめに
• Webで「OpenStack Swift 性能」のキーワードで検
索すると・・・
• Swiftの性能面で色々苦労している事例が幾つかヒッ
トする。
• ネガティブな書き込みしかない。
© 2019 NTT TechnoCross Corporation 6
Swiftの性能問題
© 2019 NTT TechnoCross Corporation 7
Swiftの性能問題
• 性能問題を語る前に前提として
• Swiftはディスクにファイルを格納する際にOSの
ファイルシステムを利用。
• Swiftはxfsを推奨。
© 2019 NTT TechnoCross Corporation 8
Swiftの性能問題
• OSのファイルシステムはファイル毎にメタ情報
(inode,dentry)をキャッシュ上に保持。
• キャッシュ上のメタ情報を読み込むことで高速に処
理。
• しかし、ファイル数が増大すると・・・
© 2019 NTT TechnoCross Corporation 9
Swiftの性能問題
• メタ情報がキャッシュ上に乗り切らず、溢れたメタ
情報はディスクへ書き込まれる。
• ディスクを介してメタ情報を処理するとファイルシ
ステムの処理時間は大幅に伸びる。
© 2019 NTT TechnoCross Corporation 10
Swiftの性能問題
© 2019 NTT TechnoCross Corporation 11
Swiftの性能問題
• また、xfsの場合はxfsaildがメモリ上にキャッシュし
たメタ情報をある程度溜まる度にジャーナルログを
用いて非同期にディスクに書き出す。
• ファイル数の増加に伴ってinode構造(B-tree)が
巨大化、複雑化すると、このxfsaild実行時にI/O負
荷が高まる。
• SwiftのI/Oに影響を及ぼす。
© 2019 NTT TechnoCross Corporation 12
Swiftの性能問題
• 数KB~数10KB程度の小さなファイルを大量にアッ
プロードした場合、Swiftの書込み性能が充填率0%
の時と比べて最終的には約10分の1まで低下する。
© 2019 NTT TechnoCross Corporation 13
性能改善Patch
© 2019 NTT TechnoCross Corporation 14
性能改善Patch
• OSのファイルシステム上のファイル数が増加するこ
とでディスクI/O性能が低下する。
• そこでSwift経由でファイルの数を減らす仕組みとし
て改善パッチ LOSF(Lots of small files)が考案され
た。
© 2019 NTT TechnoCross Corporation 15
性能改善Patch
• 仏 OVH 社 の Alexandre Lecuyer が 考 案 し 、
OpenStack wikiに仕組みを掲載してソースコードも
準備している。
© 2019 NTT TechnoCross Corporation 16
性能改善Patch
• ファイル数を減らす仕組みは単純。
• 各Storageノードのディスク毎に、アップロードし
たファイルとそのメタデータを1つのファイル
(Volumeと呼ぶ)にどんどん追記する。
© 2019 NTT TechnoCross Corporation 17
性能改善Patch
© 2019 NTT TechnoCross Corporation 18
性能改善Patch
• Facebookの写真共有ストレージ「Haystack」と似
た仕組み。
• 「 Haystack 」 で は 書 き 込 む フ ァ イ ル を 「 Store
File」と呼んでいる。
© 2019 NTT TechnoCross Corporation 19
PUTとGETの流れ
© 2019 NTT TechnoCross Corporation 20
PUTの流れ
• ディスクにファイルを書き込む際、アップロードし
たファイルとそのメタデータが1つのVolumeに書き
込まれる。
© 2019 NTT TechnoCross Corporation 21
PUTの流れ
• 次に同じディスク配下に異なるファイルが書き込ま
れる場合も、先程のVolumeにファイルとメタデータ
が追記される。
© 2019 NTT TechnoCross Corporation 22
PUTの流れ
• Volumeに書き込む際にロックをかけるため、もし他
のリクエストによりVolumeが捕まれていたら、別な
Volumeを生成してそちらに書き込む。
© 2019 NTT TechnoCross Corporation 23
PUTの流れ
• 各Storageノード上に新たに用意したIndex Server
に、書き込んだVolumeと位置情報をkey/value形式
で保持する。
© 2019 NTT TechnoCross Corporation 24
GETの流れ
• Index Serverからダウンロード対象のデータが書き
込まれているVolumeと位置情報を取得する。
© 2019 NTT TechnoCross Corporation 25
GETの流れ
• 目的のVolumeからファイルの中身を読み取ってクラ
イアントに返却する。
© 2019 NTT TechnoCross Corporation 26
【補足】従来の方式との違い
© 2019 NTT TechnoCross Corporation 27
どれだけ性能が改善するのか
© 2019 NTT TechnoCross Corporation 28
どれだけ性能が改善するのか
• PUT
• 0個→400万個
• 400万個→800万個
改善前 改善後
minutes 3360 2540
PUT/s 19.8 26.2
改善前 改善後
minutes 3900 1700
PUT/s 17 39.2
1.3倍
2.3倍
© 2019 NTT TechnoCross Corporation 29
どれだけ性能が改善するのか
• GET
• 800万個のファイルを格納した状態
改善前 改善後
minutes - -
GET/s 39.0 93.02.4倍
© 2019 NTT TechnoCross Corporation 30
おわりに
© 2019 NTT TechnoCross Corporation 31
おわりに
• 引き続きスループット測定やリソース(CPU使用率、
memory使用量)への影響調査、リバランスの性能測
定なども実施する予定。

Mais conteúdo relacionado

Mais procurados

OSSのクラウド基盤 OpenStack / CloudStack
OSSのクラウド基盤 OpenStack / CloudStackOSSのクラウド基盤 OpenStack / CloudStack
OSSのクラウド基盤 OpenStack / CloudStackVirtualTech Japan Inc.
 
実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~
実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~
実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~Rakuten Group, Inc.
 
OpenStack summit report 2016 in barcelona
OpenStack summit report 2016 in barcelonaOpenStack summit report 2016 in barcelona
OpenStack summit report 2016 in barcelonaYuki Yamashita
 
Cisco C9364C and C9348GC-FXP
Cisco C9364C and C9348GC-FXPCisco C9364C and C9348GC-FXP
Cisco C9364C and C9348GC-FXPTakao Setaka
 
Diskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStackDiskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStackYuki Yamashita
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Dai Iwai
 
OpenStack Summit 2014 Novemver in Paris 参加報告
OpenStack Summit 2014 Novemver in Paris 参加報告OpenStack Summit 2014 Novemver in Paris 参加報告
OpenStack Summit 2014 Novemver in Paris 参加報告Takanari Konishi
 
Cisco ACI 情報源
Cisco ACI 情報源Cisco ACI 情報源
Cisco ACI 情報源Takao Setaka
 
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!ミランティスジャパン株式会社
 
高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化Hinemos
 

Mais procurados (14)

ベンダーロックインフリーのビジネスクラウドの世界
ベンダーロックインフリーのビジネスクラウドの世界ベンダーロックインフリーのビジネスクラウドの世界
ベンダーロックインフリーのビジネスクラウドの世界
 
ベンダーロックインフリーのビジネスクラウドの世界
ベンダーロックインフリーのビジネスクラウドの世界ベンダーロックインフリーのビジネスクラウドの世界
ベンダーロックインフリーのビジネスクラウドの世界
 
OSSのクラウド基盤 OpenStack / CloudStack
OSSのクラウド基盤 OpenStack / CloudStackOSSのクラウド基盤 OpenStack / CloudStack
OSSのクラウド基盤 OpenStack / CloudStack
 
実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~
実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~
実用段階に入ったOpenStack ~ もうすぐ絶滅するというPrivate Cloudの多様性について ~
 
NFV関連の話題
NFV関連の話題NFV関連の話題
NFV関連の話題
 
OpenStack summit report 2016 in barcelona
OpenStack summit report 2016 in barcelonaOpenStack summit report 2016 in barcelona
OpenStack summit report 2016 in barcelona
 
Cisco C9364C and C9348GC-FXP
Cisco C9364C and C9348GC-FXPCisco C9364C and C9348GC-FXP
Cisco C9364C and C9348GC-FXP
 
Diskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStackDiskless Compute Nodeを使ったImmutable OpenStack
Diskless Compute Nodeを使ったImmutable OpenStack
 
OpenStack批評 2015
OpenStack批評 2015OpenStack批評 2015
OpenStack批評 2015
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
 
OpenStack Summit 2014 Novemver in Paris 参加報告
OpenStack Summit 2014 Novemver in Paris 参加報告OpenStack Summit 2014 Novemver in Paris 参加報告
OpenStack Summit 2014 Novemver in Paris 参加報告
 
Cisco ACI 情報源
Cisco ACI 情報源Cisco ACI 情報源
Cisco ACI 情報源
 
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!
そうだ、ECL2.0でホステッドプライベート・クラウドをつくろう!
 
高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化高度クラウド環境だからこそ、運用自動化・一元化
高度クラウド環境だからこそ、運用自動化・一元化
 

Semelhante a Swift losf

OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向NTT Software Innovation Center
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflixapkiban
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築Tomo-o Kubo
 
Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)shintaro mizuno
 
OpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウドOpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウドMasanori Itoh
 
データが覗いたOpenStack Summit Vancouver
データが覗いたOpenStack Summit Vancouverデータが覗いたOpenStack Summit Vancouver
データが覗いたOpenStack Summit VancouverKentaro Takeda
 
SkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaSSkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaSKensaku Komatsu
 
Developer Summit_20140214
Developer Summit_20140214Developer Summit_20140214
Developer Summit_20140214samemoon
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...オラクルエンジニア通信
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...Shinji Takao
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~NTT DATA OSS Professional Services
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月VirtualTech Japan Inc.
 
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~Brocade
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)NTT DATA OSS Professional Services
 
Trac Lightningの社内標準化と継続的な運用のために
Trac Lightningの社内標準化と継続的な運用のためにTrac Lightningの社内標準化と継続的な運用のために
Trac Lightningの社内標準化と継続的な運用のためにKaoru NAKAMURA
 
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkKubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkwhywaita
 
20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回Keiji Kamebuchi
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみたjustice_sm
 

Semelhante a Swift losf (20)

OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
 
What happens in Spring Cloud Netflix
What happens in Spring Cloud NetflixWhat happens in Spring Cloud Netflix
What happens in Spring Cloud Netflix
 
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
JNSA西日本支部 技術研究WG AWSを使ったセキュアなシステム構築
 
Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)Open stack概要 lpi-opcelサミット(当日用)
Open stack概要 lpi-opcelサミット(当日用)
 
OpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウドOpenStackによる、実践オンプレミスクラウド
OpenStackによる、実践オンプレミスクラウド
 
データが覗いたOpenStack Summit Vancouver
データが覗いたOpenStack Summit Vancouverデータが覗いたOpenStack Summit Vancouver
データが覗いたOpenStack Summit Vancouver
 
SkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaSSkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaS
 
Developer Summit_20140214
Developer Summit_20140214Developer Summit_20140214
Developer Summit_20140214
 
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
[Modern Cloud Day Tokyo 2019] Oracle CloudでDevOps!?Javaアプリケーションのモダン開発を支援するOra...
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
July techfesta2014 f30
July techfesta2014 f30July techfesta2014 f30
July techfesta2014 f30
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
 
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
ストレージ管理者が今、押さえておくべきネットワーク基本の「キ」 ~必要なのは性能とシンプルさ。その極意とは?~
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 
Trac Lightningの社内標準化と継続的な運用のために
Trac Lightningの社内標準化と継続的な運用のためにTrac Lightningの社内標準化と継続的な運用のために
Trac Lightningの社内標準化と継続的な運用のために
 
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tkKubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
Kubernetesの良さを活かして開発・運用!Cloud Native入門 / An introductory Cloud Native #osc19tk
 
20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみた
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 

Swift losf

  • 1. © 2019 NTT TechnoCross Corporation 性能改善に向けた取り組み OpenStack Swift 2019/1/18 須田憲男
  • 2. © 2019 NTT TechnoCross Corporation 2 サマリ • 自己紹介 • はじめに • Swiftの性能問題 • 性能改善Patch紹介 • PUTとGETの流れ • どれだけ性能が改善するのか • おわりに
  • 3. © 2019 NTT TechnoCross Corporation 3 自己紹介 • NTTテクノクロス(株) 須田 憲男 Swiftに関する業務 これまで 2013年からSwift (Grizzly) の機能調査に参画 Tempestシナリオ拡充 Storage Policyに関するバグ改修パッチ提供 商用稼動中のプライベートクラウドの運用保守 現在は Swiftの機能調査、運用保守 社内クラウドサービスにオブジェクトストレー ジサービスを立ち上げてトライアル実施中
  • 4. © 2019 NTT TechnoCross Corporation 4 はじめに
  • 5. © 2019 NTT TechnoCross Corporation 5 はじめに • Webで「OpenStack Swift 性能」のキーワードで検 索すると・・・ • Swiftの性能面で色々苦労している事例が幾つかヒッ トする。 • ネガティブな書き込みしかない。
  • 6. © 2019 NTT TechnoCross Corporation 6 Swiftの性能問題
  • 7. © 2019 NTT TechnoCross Corporation 7 Swiftの性能問題 • 性能問題を語る前に前提として • Swiftはディスクにファイルを格納する際にOSの ファイルシステムを利用。 • Swiftはxfsを推奨。
  • 8. © 2019 NTT TechnoCross Corporation 8 Swiftの性能問題 • OSのファイルシステムはファイル毎にメタ情報 (inode,dentry)をキャッシュ上に保持。 • キャッシュ上のメタ情報を読み込むことで高速に処 理。 • しかし、ファイル数が増大すると・・・
  • 9. © 2019 NTT TechnoCross Corporation 9 Swiftの性能問題 • メタ情報がキャッシュ上に乗り切らず、溢れたメタ 情報はディスクへ書き込まれる。 • ディスクを介してメタ情報を処理するとファイルシ ステムの処理時間は大幅に伸びる。
  • 10. © 2019 NTT TechnoCross Corporation 10 Swiftの性能問題
  • 11. © 2019 NTT TechnoCross Corporation 11 Swiftの性能問題 • また、xfsの場合はxfsaildがメモリ上にキャッシュし たメタ情報をある程度溜まる度にジャーナルログを 用いて非同期にディスクに書き出す。 • ファイル数の増加に伴ってinode構造(B-tree)が 巨大化、複雑化すると、このxfsaild実行時にI/O負 荷が高まる。 • SwiftのI/Oに影響を及ぼす。
  • 12. © 2019 NTT TechnoCross Corporation 12 Swiftの性能問題 • 数KB~数10KB程度の小さなファイルを大量にアッ プロードした場合、Swiftの書込み性能が充填率0% の時と比べて最終的には約10分の1まで低下する。
  • 13. © 2019 NTT TechnoCross Corporation 13 性能改善Patch
  • 14. © 2019 NTT TechnoCross Corporation 14 性能改善Patch • OSのファイルシステム上のファイル数が増加するこ とでディスクI/O性能が低下する。 • そこでSwift経由でファイルの数を減らす仕組みとし て改善パッチ LOSF(Lots of small files)が考案され た。
  • 15. © 2019 NTT TechnoCross Corporation 15 性能改善Patch • 仏 OVH 社 の Alexandre Lecuyer が 考 案 し 、 OpenStack wikiに仕組みを掲載してソースコードも 準備している。
  • 16. © 2019 NTT TechnoCross Corporation 16 性能改善Patch • ファイル数を減らす仕組みは単純。 • 各Storageノードのディスク毎に、アップロードし たファイルとそのメタデータを1つのファイル (Volumeと呼ぶ)にどんどん追記する。
  • 17. © 2019 NTT TechnoCross Corporation 17 性能改善Patch
  • 18. © 2019 NTT TechnoCross Corporation 18 性能改善Patch • Facebookの写真共有ストレージ「Haystack」と似 た仕組み。 • 「 Haystack 」 で は 書 き 込 む フ ァ イ ル を 「 Store File」と呼んでいる。
  • 19. © 2019 NTT TechnoCross Corporation 19 PUTとGETの流れ
  • 20. © 2019 NTT TechnoCross Corporation 20 PUTの流れ • ディスクにファイルを書き込む際、アップロードし たファイルとそのメタデータが1つのVolumeに書き 込まれる。
  • 21. © 2019 NTT TechnoCross Corporation 21 PUTの流れ • 次に同じディスク配下に異なるファイルが書き込ま れる場合も、先程のVolumeにファイルとメタデータ が追記される。
  • 22. © 2019 NTT TechnoCross Corporation 22 PUTの流れ • Volumeに書き込む際にロックをかけるため、もし他 のリクエストによりVolumeが捕まれていたら、別な Volumeを生成してそちらに書き込む。
  • 23. © 2019 NTT TechnoCross Corporation 23 PUTの流れ • 各Storageノード上に新たに用意したIndex Server に、書き込んだVolumeと位置情報をkey/value形式 で保持する。
  • 24. © 2019 NTT TechnoCross Corporation 24 GETの流れ • Index Serverからダウンロード対象のデータが書き 込まれているVolumeと位置情報を取得する。
  • 25. © 2019 NTT TechnoCross Corporation 25 GETの流れ • 目的のVolumeからファイルの中身を読み取ってクラ イアントに返却する。
  • 26. © 2019 NTT TechnoCross Corporation 26 【補足】従来の方式との違い
  • 27. © 2019 NTT TechnoCross Corporation 27 どれだけ性能が改善するのか
  • 28. © 2019 NTT TechnoCross Corporation 28 どれだけ性能が改善するのか • PUT • 0個→400万個 • 400万個→800万個 改善前 改善後 minutes 3360 2540 PUT/s 19.8 26.2 改善前 改善後 minutes 3900 1700 PUT/s 17 39.2 1.3倍 2.3倍
  • 29. © 2019 NTT TechnoCross Corporation 29 どれだけ性能が改善するのか • GET • 800万個のファイルを格納した状態 改善前 改善後 minutes - - GET/s 39.0 93.02.4倍
  • 30. © 2019 NTT TechnoCross Corporation 30 おわりに
  • 31. © 2019 NTT TechnoCross Corporation 31 おわりに • 引き続きスループット測定やリソース(CPU使用率、 memory使用量)への影響調査、リバランスの性能測 定なども実施する予定。