前回の記事「Ceph 分散ストレージ システム アーキテクチャ研究のレビュー」では、Ceph 分散ストレージ システム アーキテクチャの分析に焦点を当てました。本日も、Ceph の共通システムとパフォーマンス最適化テクノロジーについて引き続きご紹介いたします。 Ceph は複数のストレージ アクセス インターフェイスをサポートします。 Ceph パフォーマンス テストには、ブロック インターフェイスのパフォーマンスをテストするための fio や iometer など、さまざまな既存のパフォーマンス テスト ツールを使用できます。 CephFS インターフェースをテストするための filebench および fio。オブジェクト インターフェイスをテストするための cosbench 。 Ceph には、radosbench、librbdfio、kvmrbdfio、rbdfio を含む専用のベンチマーク スイート CBT があります。 radosbench ベンチマークは、ceph 共通パッケージに含まれる rados バイナリを使用して、オブジェクト インターフェイスを通じて Ceph クラスターにアクセスします。残りの 3 つのツールはすべて、ブロック ストレージのパフォーマンスをテストするためのものです。
Ceph システムの継続的なパフォーマンス監視により、クラスターの動作状態を把握し、パフォーマンスのボトルネックを早期に検出することができます。 Ceph は、パフォーマンス関連の統計を出力するためのコマンドライン インターフェイスを提供します。 OSD は PG 単位でパフォーマンス データを収集し、定期的にモニター ノードに送信します。モニター ノードはパフォーマンス データを集約し、他のモニター ノードと同期します。また、Ceph ストレージ システム レベルでの階層的なパフォーマンス監視と収集のフレームワークと、Ceph メッセージを通じてシステムのパフォーマンスとボトルネックを分析する方法も提案しました。 Ceph ストレージシステムの特徴と課題このセクションでは、Ceph 分散ストレージ システムの特徴と課題をまとめます。 (1)Cephストレージシステムの利点
(2)Cephが直面する課題
Ceph は、さまざまなシナリオに適した汎用分散ファイルシステムです。内部メカニズムを最適化すると、あらゆるシナリオでパフォーマンスが向上しますが、最適化は最も困難で複雑でもあります。 ストレージエンジンの最適化分散ストレージ システムでは、データは多数のストレージ サーバーに分散されます。ほとんどの分散ストレージ システムは、HDFS、Lustre などのローカル ファイル システムを直接使用してデータを保存します。高性能で信頼性の高い分散ストレージ システムは、効率的で一貫性があり、安定性と信頼性に優れたローカル ファイル システムと切り離せません。 Ceph ストレージ エンジンの最適化については、「Ceph 分散ストレージ システム アーキテクチャに関する研究のレビュー」を参照してください。 ネットワーク通信の最適化分散ストレージ システムでは、ノードはネットワークを介して通信し、ステータスとデータを交換する必要があります。 Ceph には、シンプル、非同期、XIO の 3 種類の通信モードがあります。シンプル スレッド モードでは、ネットワーク接続ごとに 2 つのスレッド (受信用と送信用) が作成されます。 Ceph クラスター内の OSD、モニター ノード、およびクライアント間で接続を確立する必要があります。クラスターのサイズが大きくなるにつれて、作成される接続とスレッドの数が指数関数的に増加し、より多くの CPU およびメモリ リソースが必要になります。メモリが制限されている場合、シンプル モードでは多数のスレッドが頻繁に切り替わり、メモリが枯渇する原因になります。非同期モードでは、接続とスレッドが分離され、スレッド プール管理を通じてスレッドの使用状況が維持されます。ユーザーはスレッド プール内のスレッドの数を設定できます。これは最も広く採用されている方式であり、2017 年の Kraken リリース以降、デフォルトの通信モードとなっています。XIO モードは、オープンソースのネットワーク通信ライブラリ accelio を使用して実装されており、まだ実験段階にあります。ネットワーク通信の最適化に関する現在の研究はすべて、非同期通信モードに基づいています。 非同期モードでは、スレッド プールを使用してリソースとパフォーマンスのバランスを取りますが、初期の設計はループに基づく単純なスケジューリング スキームであり、送信されるデータのサイズとスレッドの負荷を考慮していませんでした。この初期の設計では、ワーカー スレッドの負荷が不均衡になり、高負荷時にパフォーマンスの問題が発生しました。ハンら不均衡なワーカースレッドのスケジューリングの問題を解決し、パフォーマンスを向上させるために、Ceph ファイルシステム用の動的メッセージ対応通信スケジューラを提案しました。彼が提案したスケジューリング アルゴリズムは、ワーカー スレッド間の不要な接続遷移を回避しながら、受信メッセージの種類に応じてワーカー スレッドのワークロードのバランスをとります。 一方、アルゴリズムは、他の高優先度メッセージに干渉しないように、低優先度メッセージ (ハートビート接続からのメッセージなど) を特定のスレッドに割り当てます。一方、優先度の高いメッセージは各ワーカー スレッドに均等に分散され、スレッド間のワークロードのバランスが取られます。同時に、遺伝的アルゴリズム (GA) を使用して、不要な接続変換を最小限に抑えます。テスト結果によると、同じクライアントのワークロードでは、この方法のパフォーマンスは元の Asyncmessenger よりも 12.5% 高く、クライアントのランダム ワークロードでは、そのパフォーマンスは元の Asyncmessenger よりも 24% 高くなります。 Asyncmessenger を最適化すると、複数のワーカー スレッドをその接続に割り当てることで、単一の接続からのトラフィックも処理できます。ただし、このマッピング構造では、複数のスレッドが接続内の共有リソースへのアクセスを競合するため、ロックの維持に関連する別のオーバーヘッドが発生します。 Ceph の Luminous バージョンでは、デフォルトの通信方法として非同期ネットワーク通信モデルが使用されます。 Async は IO 多重化を実装し、共有スレッド プールを使用して非同期送受信タスクを実装しますが、Async ワーカー スレッドの負荷をどのように分散するかも注目に値する問題です。次の表は、いくつかの一般的なアルゴリズム最適化ソリューションをまとめたものです。 RDMA は、低遅延で高性能なネットワーク伝送プロトコルであり、高性能コンピューティング環境で広く使用されています。 Ceph で RDMA を使用して高速データ転送を実現するために、開発コミュニティは 2 つのソリューションを提案しました。 最初の解決策は、ネットワーク層の状態に対する Ceph の要件を減らし、Messenger が実装する必要があるロジックを減らすことです。現在の XioMessenger で指定されているセマンティクスとポリシーは複雑すぎて、新しいネットワーク プロトコルを使用して実装するのは困難です。 Messenger のロジックを削減するには、上位レベルのロジックを増やす必要があります。 2 番目の解決策は、上位レベルのセッション ロジックを気にすることなく、現在の AsyncMessenger フレームワークに基づいて RDMA をサポートするネットワーク バックエンドを拡張することです。国内企業のXSKY社とMellanox社は協力し、AsyncMessengerをベースとしたネットワーク通信エンジンを提案している。この変更では、RDMA の双方向通信メカニズムが使用され、パフォーマンスの向上は限定的です。さらに、現在のバージョンのコード実装では、RDMA はクライアントとサーバー間、およびサーバー間の通信にのみ使用でき、2 つのネットワークで同時に使用できないため、このソリューションの適用も制限されます。 データ配置方法の最適化従来の Ceph ストレージ システムがレプリカ モードでストレージ ノードを選択する場合、ノードのストレージ容量が唯一の選択条件であり、ネットワークとノードの負荷条件は考慮されません。これは、ネットワーク パフォーマンスが低下し、ノード負荷が高い場合に、システムの読み取りおよび書き込みパフォーマンスに影響します。これらの問題を解決するために、この論文では、ソフトウェア定義ネットワーク技術に基づいた Ceph ストレージ システム モデルとストレージ ノード選択戦略を設計します。まず、ソフトウェア定義ネットワーク技術を使用して、ネットワークと負荷の状態をリアルタイムで取得し、ネットワーク構成を簡素化し、測定のオーバーヘッドを削減します。次に、複数の要素を総合的に考慮した多属性意思決定数学モデルを構築し、それを解くことで、ストレージノードの位置を決定します。 設計されたストレージ ノード選択方法は、実際の環境での読み取りおよび書き込み操作でテストされました。結果によると、既存の CRUSH アルゴリズムと比較して、提案されたストレージ ノード選択方法は、元の Ceph システムと同じ書き込み操作パフォーマンスを維持しながら、元の Ceph クラスターと比較して 4KB オブジェクトの 100% 読み取り操作の応答時間を約 10 ミリ秒短縮し、4096KB オブジェクトの 100% 読み取り操作の応答時間を約 120 ミリ秒短縮できます。この方法では、データ配置戦略を調整するためにネットワークのリアルタイム パフォーマンスを取得する必要があり、ネットワーク負荷収集のオーバーヘッドが発生し、大規模なクラスター シナリオでの適用が制限されます。また、この方法では CRUSH アルゴリズムのパラメータが頻繁に更新されるため、読み取りパフォーマンスが低下します。 構成パラメータのパフォーマンスチューニングCeph ストレージ システムには 1,500 を超える構成可能なパラメータがあり、パラメータの調整はシステムのパフォーマンスに大きな影響を与えます。通常、デフォルトの構成は、さまざまなハードウェアやアプリケーションには最適ではありません。ロックの最適化とシステムパラメータのチューニング技術によりシステムスループットは 1.6 倍に向上しましたが、どの構成パラメータが変更されたかについては説明されていません。一部の文献では、オールフラッシュ環境で調整する必要があるパラメータ(カーネル、ファイルシステム、ディスクキャッシュ、RADOS、RBD など)について詳細に説明されていますが、調整前後のパフォーマンス比較は提供されていません。 Intel は、Ceph クラスターの展開、テスト、分析、チューニングに使用できるパフォーマンス最適化ツール CeTune を開発し、オープンソース化しました。このツールは対話型のチューニング ツールであり、最適な構成を自動的に見つけることはできません。分散ストレージ システムのパフォーマンス チューニングは依然として困難な問題です。パラメータの組み合わせにより、問題の解決空間が大きくなり、パラメータは相互に影響を及ぼします。データベース分野では機械学習や決定木法を用いた自動チューニングの成功例がいくつかあるが、分散ストレージシステムの分野では関連研究はまだ初期段階にある。 特定のハードウェア環境への最適化3DXpoint や不揮発性メモリなどのテクノロジの発展と成熟により、最速のストレージ メディアのパフォーマンスはメモリのパフォーマンスに近づいています。新しいメモリデバイスを使用するシステムでは、ソフトウェアがボトルネックになっています。図に示すように、HDD、SATA SSD、NVMe NAND SSD、3DXPoint ストレージ、3DXPoint メモリ システムにおけるソフトウェアによる遅延は、それぞれ 0、10%、20%、40%、90% です。高速ストレージメディアの性能を最大限に活用するためのソフトウェアアーキテクチャの再構築は、現在、研究のホットスポットとなっています。 1. ソリッドステートストレージ ソリッドステート ストレージ デバイスは、パフォーマンス、電力消費、ラック密度の点で磁気ディスク デバイスに比べて大きな利点があります。 SATA インターフェイスは、ソリッド ステート ストレージ デバイスの最大スループットを制限します。 Intel が提案した、PCIE バスを使用してソリッド ステート ストレージにアクセスする NVMe インターフェイス方式は、汎用的な高速アクセス ソリューションを提供します。 NVMe を使用するソリッド ステート ストレージ デバイスは、従来のディスクよりも 1 ~ 2 桁高いスループットとレイテンシ パフォーマンスを備えているため、ソフトウェアによるレイテンシが合計 IO 処理時間の大部分を占めることになります。既存のストレージ システムでは、低速ハードウェア向けにマージ書き込みや非同期書き込みなどのメカニズムが設計されていますが、これらのメカニズムは高速ストレージ デバイスには適用できません。ストレージ デバイスのパフォーマンスが向上し続けると、ストレージ システム ソフトウェア スタックのパフォーマンスと効率がストレージ システムに与える影響力はますます大きくなります。ストレージ システムは、非効率で冗長なソフトウェア スタックによって制約されており、ハードウェアのパフォーマンスを十分に活用することができません。 SPDK は、NVMe SSD をバックエンド ストレージとして使用する、Intel が提案したアプリケーション ソフトウェア アクセラレーション ライブラリです。このソフトウェア ライブラリの中核は、ユーザー モード、非同期、ロックフリー、ポーリング NVMe ドライバーを実装することです。 SPDK などの新しいドライバーは NVMe SSD のパフォーマンスを最大 6 倍向上させることができますが、Ceph で SPDK を直接使用した場合、明らかなパフォーマンスの向上は見られません。主な理由は、BlueStore の処理では連携するスレッドが多く、スレッド間の排他制御や切り替えのオーバーヘッドが大きいためです。 Ceph では、OSD は非同期 IO を使用して IO の完了を待機し、マルチスレッドにより NVMeSSD のマルチチャネル特性を最大限に活用してパフォーマンスを向上させることができます。単一の OSD では NVMe SSD の帯域幅を十分に活用できないため、研究者は NVMe SSD をパーティション分割し、その上で複数の OSD を実行するとパフォーマンスが大幅に向上することを発見しました。この図は、それぞれ 1 OSD、2 OSD、4 OSD を使用した場合の NVMe SSD のパフォーマンスを示しています。 1 つの SSD で 4 つの OSD を実行すると、ランダム読み取り IOPS は急速に増加しますが、レイテンシはゆっくりと増加することがわかります。 ただし、SSD をパーティション分割して複数の OSD を同時にサポートすると、信頼性の低下、小さなランダム書き込みのレイテンシの増加、より多くのメモリと CPU リソースの必要性などの欠点もあります。ランダム書き込みの別のテスト結果を図に示します。 1 つの SSD で 2 つの OSD を実行する場合の IOPS は、4 つの OSD を実行する場合の IOPS と似ており、必要な CPU リソースが少なくなります。複数の OSD を使用することによる改善効果は、SSD と CPU のパフォーマンスに関係しており、より多くの CPU とメモリのリソースが必要となり、可用性にも影響します。したがって、大規模な生産環境には適していません。 NVMe以外にも、SATA SSDを使用してHDDを置き換える戦略がいくつかありますが、ストレージメディアを直接置き換えることによるパフォーマンスの向上には限界があります。 Ceph は HDD 用に多くの非同期および書き込み順序調整メカニズムを設計しましたが、これらのメカニズムは実際には SSD のパフォーマンスを低下させます。 4K ランダム書き込み/読み取りパフォーマンス テストに Ceph クラスターとオールフラッシュ SSD を使用すると、ランダム書き込みパフォーマンスは 16K IOPS にしか達しません。スレッド数が 32 以上に増加すると、IOPS はほぼ一定のままになり、レイテンシが大幅に増加します。ランダム読み取りの場合、スレッド数が 32 未満の場合、IOPS は低くなり、レイテンシは高くなります。 2. 不揮発性メモリ ストレージは、データ集約型システムの中で最も遅いコンポーネントです。 NVMe ベースのソリッド ステート ドライブにより、より高速で長持ちするストレージが提供され、IO パフォーマンスは大幅に向上しましたが、システム内の他のコンポーネントに比べると依然として低速です。 NVDIMM 製品の登場により、バイトアドレス指定可能な不揮発性メモリはメインメモリに近い IO パフォーマンスを提供します。 Intel はクライアント側の NVM をキャッシュとして使用し、3 つの最適化ソリューションを提案することで、ブロック ストレージ インターフェイスのアクセス パフォーマンスを大幅に向上させます。 ソリューション 1 では、Ceph スナップショット内の親オブジェクトは読み取り専用であるため、クライアントがそれをローカル SSD にキャッシュして読み取りパフォーマンスを向上させることを提案しています。ただし、このソリューションは特定の変更されていないオブジェクトのみをキャッシュし、普遍的ではありません。 ソリューション 2 では、クライアント側の NVM を使用してライトバック キャッシュを実装し、データを NVM に書き込み、定期的に OSD に更新します。このソリューションはパフォーマンスを大幅に向上させる効果があり、書き込み遅延を 99.99% から 1/10 未満に削減できます。ただし、クライアントに障害が発生すると、NVM に保存されているデータが Ceph バックエンドの OSD に書き込まれず、データの不整合が発生します。 この問題を解決するために、ソリューション 3 では、RDMA テクノロジーを使用してクライアント ノードと OSD ノードの NVM スペースをミラーリングし、クライアント障害によるデータ損失を回避します。レプリケーション書き込みログ メカニズムは、クライアントと OSD の両方の NVM にデータを保存します。クライアントに障害が発生しない場合、OSD は追加の CPU やその他のリソースを必要とせずにミラー スペースのみを提供します。クライアントベースのキャッシュ パフォーマンスは大幅に向上しますが、クライアントごとに NVM と RDMA を構成するコストが高く、このソリューションでは OSD 側の NVM 機能を十分に活用できません。 3. ハイブリッドストレージ Ceph クラスターでは、SSD を使用してログやキャッシュを保存し、アクセス パフォーマンスを向上させることができます。 Ceph は、IO パフォーマンスを高速化するために、高速ストレージ デバイスをキャッシュとして使用することをサポートしています。現在、キャッシュを実装する方法は 2 つあります。1) OSD 内でキャッシュを使用する方法。 2) 高性能ノードによるキャッシュ層の形成。 最初のソリューションによれば、FileStore を使用すると、ファイル システムは異種のストレージ メディアを識別して使用し、SSD をキャッシュとして使用できます。そのアーキテクチャを図7(a)に示します。このソリューションは、既存のキャッシュ ツール (dm-cache、bcache、FalshCache など) を利用してこの機能を実装することができ、複数の既存のキャッシュ制御方法を使用することもできます。その中で、Linux カーネルの一部である dm-cache は、デバイスマッパー メカニズムを使用して、ユーザーがハイブリッド ボリュームを作成できるようにします。 bcache は Linux カーネルのブロック層キャッシュであり、SSD を HDD ハードディスクのキャッシュとして使用してプロセスを高速化します。 FlashCache は、最近読み取られたユーザー データまたはメタデータをインテリジェントにキャッシュして、データ アクセスを高速化します。 写真 2 番目の解決策は、独立したデバイスまたはノードをキャッシュ プールにグループ化し、コールド データを低速ノードに保存し、ホット データを高性能ノードに保存することです。このソリューションでは、高速ノードがキャッシュ レイヤーに編成されます。このキャッシュ レイヤーは、永続性機能だけでなく独立した CRUSH 戦略も備えた RADOS プールでもあります。このレイヤーの下には HDD ベースの RADOS プールがあり、バックエンドとして 3 つのコピーの ReplicatePG または Erasurecoded を使用できます。 今後の展望前述のさまざまなパフォーマンス最適化方法を考慮して、このセクションでは、Ceph 内部メカニズムの最適化、新しいハードウェアに基づく最適化、さまざまな負荷の最適化という 3 つの側面から、パフォーマンス最適化の問題の将来の研究方向を検討します。 1. Ceph内部機構の最適化 Ceph が開発されるにつれて、その規模と複雑さは拡大し続けました。データ分散、メタデータ管理、およびオブジェクトの一貫性保証のロジックは複雑であり、現在のマルチスレッドおよびロック メカニズムは非効率的です。新しいメモリ割り当てメカニズムと効率的な KV データを使用してサブシステムを管理すると、パフォーマンスが向上する可能性があります。現在組み込まれているパフォーマンス収集メカニズムは不完全であり、収集内容と方法、およびパフォーマンス データ分析の両方に改善の余地があります。 2. 新しい特定のハードウェアに基づく最適化 新しいストレージメディアの開発により、NVM や 3D XpointSSD などのメディアのアクセス性能は、従来の HDD に比べて 2 ~ 4 桁向上しました。ストレージ システムの最適化には、ハードウェア機能を組み合わせ、冗長な抽象化と機能を削除し、ソフトウェアとハードウェアの機能を再配分することによって、ストレージ システム アーキテクチャを再構築する必要があります。従来のハードウェア向けストレージ ソフトウェアの最適化方法では、非同期書き込みやランダム書き込みのマージなど、パフォーマンスが低下する可能性があります。 SSD のファイル変換層のガベージ コレクション、スペース マッピング、管理機能もソフトウェア実装に移行できます。ストレージシステムには、パフォーマンスの異なるさまざまなメディアが長期間共存します。データのホットネスとコールドネス、およびメディア特性に基づいてデータ配信を適応させ、コスト効率の高いデータ配信を実現することも研究の方向性です。 Ceph はすでに RDMA プロトコルをサポートしていますが、双方向操作モードのパフォーマンス向上は限られています。新しい通信メカニズムを設計し、一方的な操作を採用することで、パフォーマンスをさらに向上させることができます。 3. アプリケーションシナリオの適応最適化 Ceph には多くのアプリケーション シナリオがあり、アプリケーションによってアクセス特性やデータ分布は大きく異なります。さまざまな負荷条件下では、手動で策定されたストレージ最適化ソリューションでは要件を満たすことができません。さまざまなアプリケーション負荷に基づく適応型最適化テクノロジーも課題です。研究内容には、アクセス タグを使用してさまざまなアプリケーションのパフォーマンス サービス品質保証とパフォーマンス分離を実現すること、機械学習テクノロジを使用して最適な構成を自動的に見つけること、動的なデータのプリフェッチと移行などが含まれます。 結論この記事では、Ceph 分散ストレージ システムの開発履歴と特徴を紹介し、内部最適化メカニズム、ハードウェア機器、アプリケーション シナリオの 3 つの側面から既存のパフォーマンス最適化方法を整理します。オープンソースの統合ストレージ システムである Ceph は、ブロック、ファイル、およびオブジェクト アクセス機能の高パフォーマンス、高スケーラビリティ、高可用性を提供します。 Ceph はその特性により、クラウド コンピューティング、高性能コンピューティング、ビッグ データ処理で広く使用されています。現在、Ceph のパフォーマンス最適化の研究はある程度進歩していますが、完全に解決されていない問題がまだ多く残っています。 |
<<: 「党創建100周年を祝い、情報技術革新局を開設」 |長沙で情報技術応用イノベーションフォーラムが開催
>>: 2021 年の優れたオープンソース Kubernetes ツール 11 選
「A Bite of China」というテーマについて議論する前に、まずは世界中で人気を博したドキュ...
HostPair LLC は 2009 年に設立されました。主な事業は、ドメイン名登録、仮想ホスティ...
5月31日、友人がWeiboにメッセージを投稿しました。「私がまだ外部リンクを投稿していると信じてい...
昨日、最近主要なウェブマスターフォーラムに投稿された記事をいくつか見てみました。他には何も感じません...
A5 Webmaster Networkは8月22日、以前、Baidu Webmaster Plat...
世界的に有名なセキュリティ企業であるマカフィー・ラボは最近、公式ブログで、研究者らがSogou入力方...
[[273020]] 1999年、ソフトウェアサービスプロバイダーのシーベルがユーザーカンファレンス...
最近、ウェン・チャンは大人気となり、汪峰を羨ましがらせ、嫉妬させ、間違いなく話題になっている。ウェン...
11 月 11 日は、電子商取引 Web サイトにとって最もエキサイティングなプロモーション デーと...
企業の資金が限られており、販売する製品を複数開発できず、オフラインでの販売が制限され、倉庫に類似製品...
過去2年間、Xu Huaizhe氏とLiu Xiong氏は、外部から見ると非常に謎めいたビジネス、つ...
独立系ブログといえば、誰もが必ず月光ブログ、陸松松ブログ、牟長青ブログ、Zacブログなど、よく訪問し...
オンライン教育は、コンピューターインターネットに基づいた教育モデルです。オンライン教育は継続的に発展...
vpsdime(年に設立され、複数のブランドを運営しており、常に高い評価を得ています)については後ほ...
9月末、locvpsは香港cn2回線のVPSを30%割引で提供します。VPSサーバーは香港の葵湾デー...