12.2. Crimson と Classic Ceph OSD アーキテクチャーの違い


古典的な ceph-osd アーキテクチャーでは、メッセンジャースレッドがネットワークからクライアントメッセージを読み取り、メッセージを OP キューに置きます。次に、osd-op スレッドプールがメッセージを取得し、トランザクションを作成して、現在のデフォルトの ObjectStore 実装である BlueStore のキューに入れます。次に、BlueStore の kv_queue は、このトランザクションとキュー内のその他のものを取得し、rocksdb がトランザクションをコミットするのを同時に待ち、完了コールバックをフィニッシャーキューに置きます。次に、フィニッシャースレッドは完了コールバックを取得し、送信するメッセンジャースレッドを置き換えるためにキューに入れます。

これらの各アクションには、キューの内容に対するスレッド間の調整が必要です。pg state の場合、競合をロックするために、複数のスレッドが PG の内部メタデータにアクセスする必要がある場合があります。

プロセッサー使用量の増加に伴うこのロック競合は、タスクとコアの数に応じて急速に拡大し、特定のシナリオではすべてのロックポイントがスケーリングのボトルネックになる可能性があります。さらに、これらのロックとキューは、競合していない場合でも遅延コストが発生します。この遅延により、スレッドプールとタスクキューが悪化します。これは、ブックキーピングの作業によりワーカースレッド間でタスクが委任され、ロックによってコンテキストの切り替えが強制される可能性があるためです。

Ceph OSD アーキテクチャー

ceph-osd アーキテクチャーとは異なり、Crimson では、コンテキストの切り替えや、基礎となるストレージ操作で要求されない場合はブロックすることなく、単一の I/O 操作を単一のコア上で完了できます。ただし、一部の操作では、非同期プロセスが完了するまで待機できる必要があります。これは、おそらくリカバリーや基盤となるデバイスなどのシステムの状態に応じて非決定的に異なります。

Crimson は Seastar と呼ばれる C++ フレームワークを使用します。これは高度に非同期エンジンであり、通常、各コアに固定された 1 つのスレッドを事前に割り当てます。これらは、コア間で状態を分割し、ロックを回避できるように、コア間で作業を分割します。Seastar では、I/O 操作はターゲットオブジェクトに基づいてスレッドのグループに分割されます。I/O 操作を実行するステージを異なるスレッドグループに分割するのではなく、すべてのパイプラインステージを 1 つのスレッド内で実行します。操作をブロックする必要がある場合、コアの Seastar リアクターは別の同時操作に切り替えて進行します。

理想的には、実行中の各非ブロッキングタスクが完了するか協調的に譲歩するまで CPU を所有するため、すべてのロックとコンテキストスイッチが不要になります。他のスレッドが同時にタスクをプリエンプトすることはできません。データパス内の他のシャードとの通信が必要ない場合、理想的なパフォーマンスは、I/O デバイスが制限に達するまでコアの数に比例して増加します。OSD レベルでは PG がすべての IO をシャーディングするため、この設計は Ceph OSD によく適合します。

ceph-osd とは異なり、crimson-osd は、デーモン化オプションが有効になっている場合でも、それ自体をデーモン化しません。サポートされている Linux ディストリビューションはアプリケーションをデーモン化できる systemd を使用するため、crimson-osd をデーモン化しないでください。sysvinit では、start-stop-daemon を使用して crimson-osd をデーモン化します。

Crimson OSD アーキテクチャー

ObjectStore バックエンド

crimson-osd は、ネイティブオブジェクトストアバックエンドとエイリアン化されたオブジェクトストアバックエンドの両方を提供します。ネイティブオブジェクトストアバックエンドは、Seastar リアクターで I/O を実行します。

Crimson では次の 3 つの ObjectStore バックエンドがサポートされています。

  • AlienStore: オブジェクトストアの以前のバージョン、つまり BlueStore との互換性を提供します。
  • CyanStore: 揮発性メモリーによって実装されるテスト用のダミーバックエンド。このオブジェクトストアは、クラシック OSD の memstore をモデルにしています。
  • SeaStore: Crimson OSD 用に特別に設計された新しいオブジェクトストア。複数のシャードのサポートに向けたパスは、バックエンドの特定の目標によって異なります。

以下は、他の 2 つの古典的な OSD ObjectStore バックエンドです。

  • MemStore: バックエンドオブジェクトストアとしてのメモリー。
  • BlueStore: クラシック ceph-osd で使用されるオブジェクトストア。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.