さたざたなSwift OpenStack構成のパフォヌマンステスト

Swift OpenStackオブゞェクトストレヌゞにただ慣れおいない人のために、構造ずアルゎリズムに関する䞀般的な情報はすでにブログに蚘茉されおいたす habrahabr.ru/company/mirantis_openstack/blog/176195、habrahabr.ru/company/mirantis_openstack/blog/176455 。



Swift for OpenStackのアむデアを既にお持ちの堎合、このプロゞェクトがいかに動的か぀柔軟であるかを垞に知っおおり、 暗号 化、盎接的な゚ラヌ修正を䌎うコヌディング 、および開発の倚くの分野での他の曎新のみを絶えず倉曎しお組み蟌みたす。 このリリヌスの䞻な機胜はSwift 1.9.0です。 グロヌバルクラスタリングサポヌトです。 これは、1぀のクラスタヌを、それらの間で分散され、高遅延のネットワヌクで接続された䞀連の゚レメントに分散する機胜を提䟛するこずを意味したす。



新しいプロパティの実際の動䜜を確認するには、必芁な䜜業量を確実に再珟できるテストツヌルが必芁です。 オブゞェクトデヌタりェアハりスは、ツリヌ階局の代わりに、ネストされおいないコンテナのセットずそれらを芋぀けるための䞀意のトヌクンがオブゞェクトの栌玍に䜿甚されるずいう点で、他ず異なりたす。 そのため、オブゞェクトデヌタりェアハりスをテストするには、特定の芁件に埓っお、Swiftリク゚ストで機胜する特別なツヌルが必芁です。 そしお、ここでssbenchずswift-benchが助けになりたす-SwiftStackによっお開発されたSwiftパフォヌマンステストツヌル。



そのため、新しいリリヌスのリリヌスでは、むノベヌションがパフォヌマンスにどのように圱響するか地域-情報を投皿するためのリングの新しいレベル、ネットワヌクレプリケヌション、新しい読み取りおよび曞き蟌みプロパティを調べる必芁がありたす。



新機胜の評䟡


新しいプロパティを調べおみたしょう。 リヌゞョン-ゟヌンをグルヌプ化する、リングの新しいトップレベル。 この構造ずアルゎリズムの詳现に぀いおは、 こちらをご芧ください 。 このレベルは、クラスタヌの地理的分垃をサポヌトし、レプリカを倚数の物理領域に配眮できるようにし、プロキシサヌバヌのロヌカラむズをサポヌトしたすプロキシアフィニティ。 簡単に蚀えば、プロキシサヌバヌは䞻にロヌカルリヌゞョンを䜿甚し、レプリケヌションを通じおオブゞェクトは他のリヌゞョンに移動したす。



ツヌルキット


Swift-All-In-OneSAIOがむンストヌルされた単䞀の仮想マシンのパフォヌマンステストは、迅速なベンチを䜿甚しお実行されたした。 このツヌルはプロゞェクト自䜓の䞀郚であり、暙準構成に必芁な情報を簡単に収集できたす。 耇合クラスタヌのテストには、より具䜓的な負荷を指定できるため、ssbenchが䜿甚されたした。 ssbenchもSwiftStackによっお䜜成されたオヌプン゜ヌスのプロゞェクトですが、Swiftプロゞェクトの䞀郚ではありたせん。



目的


swift-benchおよびssbenchを䜿甚する際の䞻なタスクは、倉曎がオブゞェクトストアによっお凊理される1秒あたりの平均リク゚スト数にどのように圱響するかを調査するこずでした。



構造


ssbenchは、メッセヌゞキュヌプロトコルを䜿甚しお情報を管理および取埗したす。 スクリプトはJSONファむルに蚘述されおいたす。 導入された構成に応じお、負荷テスト、安定性テストなど、さたざたなタむプのパフォヌマンステストを実行できたす。



さたざたなサむズの小さな、小さな、䞭皋床のファむルの3぀のクラスを䜿甚するシナリオの䟋を考えおみたしょう。 「Initial_files」は、特定のタむプのファむルの数を蚭定したす。 crud_profileのすべおの倀の合蚈がoperation_countの操䜜の総数の100である堎合、Crud_profileは各芁求に察しお実行される操䜜の割合を分散したす。 たずえば、「crud_profile」[3、4、2、2]は、リク゚ストの総数のうち、オブゞェクトの䜜成に27、読み取りに36、曎新ず削陀にそれぞれ18が必芁であるこずを意味したす。 䞊列クラむアントの最倧数「user_count」の堎合、コンテナの数「container_count」が䜜成され、その名前は「container_base」からの文字列のプレフィックスになりたす。 この堎合、「container_concurrency」は、コンテナを䜜成するクラむアントの数を決定したす。



スクリプトの䟋を考えおみたしょう。

{



「名前」「䞭芏暡テストシナリオ」、



「サむズ」[{ファむルの皮類を蚘述する



「名前」「小さな」、



「Size_min」1000、バむト単䜍のオブゞェクトのサむズ範囲



「Size_max」16000



}、{



「名前」「小さい」、



「Size_min」100000、



「Size_max」200000



}、{



「名前」「䞭」、



「Size_min」1,000,000、



「Size_max」2,000,000



}]、



"Initial_files"{指定されたタむプのオブゞェクトの数



小さな20、



「小」20、



「䞭」2



}、



「Operation_count」100、芁求の数



"Crud_profile"[3、4、2、2]、CREATE、READ、UPDATE、DELETE間のク゚リの分散



「User_count」5



「Container_base」「ssbench」、



「コンテナ数」100、



「container_concurrency」10



}



ssbenchは、承認v 1.0およびv 2.0をサポヌトしおいたす。぀たり、OpenStackコンポヌネントたたは個別のオブゞェクトストレヌゞずしお䜿甚できたす。



結果


ssbenchは、2぀の圢匏で結果を提䟛したす。 最初のオプションは、遅延、1秒あたりの凊理された操䜜の数、および凊理された芁求の総数に関する情報を含む詳现な統蚈です。 2番目のオプションは、1秒あたりに凊理されるリク゚ストの数を含むヒストグラムを䜜成するためのCSVテヌブルです。



以䞋は、パフォヌマンスのある仮想マシンで実行されたssbenchレポヌトの䟋です。

RAM2GB

VCPU1

キャッシュ読み取りのタむミング5432.52 MB /秒

バッファリングされたディスク読み取りのタむミング57、91 MB /秒







方法論


これらのツヌルをパフォヌマンステストに䜿甚するず、Swiftオブゞェクトデヌタりェアハりスのさたざたな展開オプションを評䟡し、最適なものを遞択できたす。



リング比范


そのため、異なる地域のセット、デバむスの数、オブゞェクトのコピヌで結果を確認したい堎合、このオプションを提䟛したす。

•4぀のゟヌンず3぀のレプリカを持぀1぀のリヌゞョンに4぀のデバむスをグルヌプ化する

•2぀のゟヌンず3぀のレプリカを持぀1぀のリヌゞョンにグルヌプ4デバむス

•1぀のゟヌンず3぀のレプリカを持぀1぀のリヌゞョンにグルヌプ4デバむス

•4぀のゟヌンず2぀のレプリカを持぀2぀のリヌゞョンのグルヌプ4デバむス



最終的なりィザヌドでSwift 1.9.0のリリヌスのパフォヌマンスを比范したした。



コミットする お名前 地域 ゟヌン パット 取埗 DEL
dec517e3497df25cff70f99bd6888739d410d771 fsync埌にキャッシュをドロップする 1 4 26.4 / s 107.8 32
13347af64cc976020e343f0fd3767f09e26598de 「Swiftのkeystoneauth ACLサポヌトの改善」を統合 1 4 35.1 116.8 32.9
151313ba8c6612183f6a733edbcbc311b3360949 マスタヌスりィフト1.9.0 1 4 45.3 133.1 44.2
151313ba8c6612183f6a733edbcbc311b3360949 マスタヌスりィフト1.9.0 1 2 49.1 160.3 51.3
151313ba8c6612183f6a733edbcbc311b3360949 マスタヌスりィフト1.9.0 1 1 42.3 175.3 40
151313ba8c6612183f6a733edbcbc311b3360949 マスタヌスりィフト1.9.0 2 4 54.3 109.8 49.7


プロキシアフィニティ



プロキシアフィニティをオンたたはオフにするずきの完了したリク゚ストの数の比范

-4぀のデバむスは、4぀のゟヌンず3぀のレプリカを持぀1぀の領域にグルヌプ化されたす



無効にする 有効にする
パット 45.3 7.2
取埗 133.1 160.3
DEL 44.2 55.2




-4぀のデバむスが2぀のゟヌンず3぀のレプリカを持぀1぀の領域にグルヌプ化されたす



無効にする 有効にする
パット 49.1 3.8
取埗 160.3 157
DEL 51.3 57.8


-4぀のデバむスが1぀の領域にグルヌプ化され、1぀のゟヌンず3぀のレプリカがありたす



無効にする 有効にする
パット 42.3 55.3
取埗 175.3 160.3
DEL 40 55.2




-4぀のデバむスは、4぀のゟヌンず2぀のレプリカを持぀2぀の領域にグルヌプ化されたす

無効にする 有効にする
パット 54.3 3.4
取埗 109.8 136
DEL 49.7 49




お気づきのずおり、凊理されたGET芁求の数は増加したすが、PUTは枛少したす。 これは、蚘録のプロキシ蚭定で2぀のパラメヌタヌが指定されおいたために発生したした地域ずゟヌン。぀たり、このルヌルに適合するデバむスは1぀だけです。 地域のみが読み取り甚に指定されおいるため、この地域のすべおのデバむスは読み取り甚にロヌカルになりたした。



スルヌプット


パフォヌマンスをテストする別の方法は、ssbenchのワヌクフロヌの数を増やしながら結果を比范するこずです。 次の䟋では、各ワヌカヌは12人のナヌザヌからリク゚ストを䜜成したす。







このシナリオのアむデアは、パフォヌマンスが䜎䞋し始めるたで顧客の数を埐々に増やすこずです。぀たり、クラスタヌ内の䞊列化の限界に達したした。



その他の方法


耇合クラスタヌの結果を評䟡するために、9぀のデバむスを3぀の領域に分割したした。 1぀のりィザヌドは、個別のホストで実行され、20人のナヌザヌからリク゚ストを䜜成するすべおのワヌカヌのデヌタを収集したす。 スクリプトには次のようなパラメヌタヌが含たれおいたす。100個のコンテナヌ、512 MBのサむズの100個のファむルを凊理したす。

Id_run r1-01 r1-02 r1-03 r2-01 r2-02 r2-03 r3-01 r3-02 r3-03
1 マスタヌ 劎働者 劎働者
2 マスタヌ 劎働者 劎働者
3 マスタヌ 劎働者 劎働者
4 マスタヌ 劎働者 劎働者
5 マスタヌ 劎働者 劎働者 劎働者
6 マスタヌ 劎働者 劎働者 劎働者
7 マスタヌ 劎働者 劎働者 劎働者 劎働者




このような分垃を䜿甚しお、地域ごずに情報を収集したした。

•最初のケヌスでは、ロヌカルリヌゞョンのみが䜿甚されたす

•2番目ず3番目は1぀の非ロヌカルリヌゞョンを䜿甚したす

•4番目のケヌスでは、2぀の非ロヌカル領域が䜿甚されたす

•ケヌス5〜7では、ワヌカヌの数が増加しおいたす。



ステップ6では、クラスタヌの制限に遭遇し、パフォヌマンスが䜎䞋し始めたす。



おわりに


この調査により、Swift 1.9.0のリリヌスは、ストレヌゞのパフォヌマンスの向䞊に察応するためのゞャヌクであるず断蚀できたす。

補品の調査ず䜜成に䜿甚するパフォヌマンステスト方法の䞀郚を以䞋に瀺したす。



独自のテスト環境の䜜成に関心がある堎合は、次のリンクを䜿甚しおください。

•ssbench github github.com/swiftstack/ssbench

•ssbench SwiftStackブログ swiftstack.com/blog/2013/04/18/openstack-summit-benchmarking-swift

•ブログのSwift 1.9.0 lists.openstack.org/pipermail/openstack-dev/2013-July/011221.html

•Swift 1.9.0情報 launchpad.net/swift/+milestone/1.9.0



英語のオリゞナル蚘事



All Articles