Zhihui Huayun: カーネルバイパス技術の紹介と Ceph でのその応用

Zhihui Huayun: カーネルバイパス技術の紹介と Ceph でのその応用

クラウドコンピューティング事業の急速な発展に伴い、国内外のクラウドコンピューティング企業間の特許紛争はますます激しくなっています。クラウド コンピューティングなどの技術分野では、特許保有量が企業の究極の技術力を表すことがよくあります。今回の Huayun Data の「Smart Huayun」コラムでは、カーネルバイパス技術と Ceph でのその応用を分析し、クラウドコンピューティング分野の最新の技術とソリューションを皆様と共有します。

背景

Ceph は現在、ブロック ストレージ、オブジェクト ストレージ、ファイル ストレージを単一のインフラストラクチャでサポートする、最も先進的なオープン ソースの分散統合ストレージです。 PB レベルのスケーラビリティをサポートし、クラウド環境で広く使用されています。 Ceph は、Sage Weil 博士によるストレージ システムに関する博士研究プロジェクトから生まれました。もともとは分散ファイルシステムとして設計されました。全体的なアーキテクチャは低速デバイス上に構築されており、ミリ秒 (ms) レベルの IO レイテンシを提供します。

1956 年に最初の機械式ハードディスク (HDD) が誕生して以来、ストレージ メディアの容量とパフォーマンスは大きく進歩しました。特に、2011 年頃にソリッド ステート ドライブ (SSD) が登場して以来、IOPS は飛躍的に増加し、IO レイテンシはミリ秒 (ms) からマイクロ秒 (us) にまで 1,000 倍以上も短縮されました。同時に、ネットワークの伝送速度も10年前の100Mbpsから現在の100Gbpsへと1,000倍に増加しました。

ハードウェア性能の急速な向上に伴い、従来のソフトウェア実装とアーキテクチャがソフトウェア システムの改善における主なボトルネックとなっています。データによると、すべての NVMe ソリッド ステート メディアの構成では、Ceph クラスターのパフォーマンスはハードウェア制限のパフォーマンスの約 40% にすぎません。そのため、高性能なメディアを最大限に活用するためには、既存のソフトウェアを再構築する必要があります。

カーネルバイパス技術

ハードウェア性能の向上に伴い、カーネル内のネットワーク スタックとストレージ スタックによってもたらされるパフォーマンスのボトルネックがますます顕著になってきています。 IO パスを短縮し、従来の IO スタック上の NVMe SSD のパフォーマンス問題を解決するために、Linux カーネルは 4.x 以降、新しい NVMe IO スタックを導入しました。次の図に示すように、新しい IO サブシステムは、従来の一般的なブロック層と SCSI サブシステムを完全に廃止します。

カーネル バイパスは、システム ネットワーク スタックとストレージ スタックのパフォーマンスのボトルネックを解決するもう 1 つの方法です。従来の割り込みメカニズムとは異なり、カーネルバイパスの核となる考え方は、カーネルは制御フローの処理にのみ使用され、すべてのデータフロー関連操作はユーザー状態で処理されることです。これにより、カーネルのパケットコピー、スレッドスケジューリング、システムコール、割り込みなどのパフォーマンスボトルネックを回避し、さまざまなパフォーマンスチューニング方法(CPUピン、ロックフリーキューなど)を補完して、より高いパフォーマンスを実現します。市場には、DPDK、NETMAP、SPDK、PF_RING、RDMA など、同様のテクノロジが多数存在します。その中でも、DPDK はカーネル スケジューリングからより完全に分離されており、コミュニティによるサポートが活発であるため、より広く使用されています。以下は、DPDK、SPDK、RDMA の技術原理の簡単な紹介です。

DPDK (データ プレーン開発キット) は Intel によって開始され、主に Linux システム上で実行されます。これは、高速データ パケット処理用の関数ライブラリとドライバーのコレクションであり、データ処理のパフォーマンスとスループットを大幅に向上させ、データ プレーン アプリケーションの作業効率を向上させることができます。 DPDK は、パケットを処理するために割り込みではなくポーリングを使用します。データ パケットを受信すると、DPDK によってオーバーロードされたネットワーク カード ドライバーは、割り込みを通じて CPU に通知するのではなく、データ パケットをメモリに直接保存し、DPDK によって提供されるインターフェイスを通じてアプリケーション層ソフトウェアに直接渡すことで直接処理するため、CPU 割り込み時間とメモリ コピー時間が大幅に節約されます。

SPDK (ストレージ パフォーマンス開発キット) は Intel によって開始され、NVMe SSD をバックエンド ストレージとして使用するアプリケーション ソフトウェアを高速化するために使用されます。このソフトウェア ライブラリの中核は、ユーザー モードの非同期ポーリング NVMe ドライバーです。カーネルモードの NVMe ドライバーと比較すると、単一の CPU コアの IOPS を増加させながら、レイテンシを大幅に削減できます。そのアーキテクチャは次のとおりです。

RDMA (Remote Direct Memory Access) は、リモート ダイレクト データ アクセスの略で、ネットワーク転送中のサーバー側データ処理の遅延を解決するために作成されました。 RDMA は、ネットワーク経由でデータをコンピューターのストレージ領域に直接転送し、オペレーティング システムに影響を与えることなく、あるシステムからリモート システムのメモリにデータをすばやく移動します。これにより、必要なコンピューターの処理能力が少なくなります。外部メモリのコピーとコンテキストスイッチのオーバーヘッドが排除され、メモリ帯域幅と CPU サイクルが解放され、アプリケーションのパフォーマンスが向上します。次の図は、従来のモードと RDMA モードの違いを直感的に示しています。

Ceph BlueStore における SPDK テクノロジーの応用

まず、Intelのパフォーマンステストデータを見てみましょう: ユーザーモードNVMeドライバー VS カーネルモードNVMeドライバー

上記の比較データから、SPDK の優れたパフォーマンスと可能性がわかります。 Ceph OSD バックエンド IO を高速化することで Ceph のパフォーマンスを向上できると考えるのは自然なことです。具体的なアプローチとしては、カーネル ドライバーの代わりに SPDK のユーザー モード NVMe ドライバーを使用することです。 bluestore のアーキテクチャは次のとおりです。

上記の図から、次の情報が得られます。

1. RAWデバイスを使用して、ブロックデバイスに直接データを書き込むことで、ファイルシステムの影響を排除します。

2. メタデータデータベースRocksDBを運ぶために、ベアデバイス上に軽量のBluefsファイルシステムを構築する

3. プラグイン ブロック アロケータのサポート (現在は StupidAllocator と BitmapAllocator をサポート)

4. プラグイン ブロック デバイス ドライバーのサポート (現在はカーネル ドライバーのみサポート)

したがって、新しいブロック デバイス ドライバーをサポートするには、新しいデバイス タイプ (Type) を追加し、対応するドライバー (Driver) を実装するだけで済みます。

Ceph における DPDK/RDMA テクノロジーの応用

DPDK/RDMA のアプリケーションについて説明する前に、Ceph でよく使用される 2 つのネットワーク モジュール (Messenger) について見てみましょう。

1. シンプルメッセンジャー

SimpleMessenger は、Ceph でサポートされている最も初期のネットワーク モジュールの 1 つです。名前が示すように、その実装は比較的単純です。スレッドを使用してサービス ポートをリッスンし、クライアント接続を受信します。それぞれの新しい接続はパイプに関連付けられ、2 つのポート間のパイプのような機能を実装します。パイプ内には、このパイプに関連するメッセージの受信とリクエストの送信を処理する読み取りおよび書き込みスレッドがあります。 SimpleMessenger は、共有キューを通じて受信したメッセージを各接続に配布します。メッセージとリクエストを処理するには、各接続を読み取りスレッドと書き込みスレッドのペアに関連付ける必要があるため、接続数と同時実行性が増加すると、大量のスレッドが生成され、スレッド コンテキストの切り替えと TCP/IP オーバーヘッドも指数関数的に増加し、メッセージとリクエストの処理パフォーマンスに重大な影響を与えることは明らかです。

2.非同期メッセンジャー

SimpleMessenger での多数のスレッド コンテキスト スイッチによって発生するオーバーヘッドを解決するために、AsyncMessenger は IO 多重化テクノロジ (epoll、kqueue など) とスレッド プールを使用してメッセージの受信と要求の送信を処理し、複数のネットワーク要求を非ブロッキングで処理できるようにします。さまざまな伝送プロトコル スタックとの互換性を保つために、AsyncMessenger はプラグインを通じて posix、dpdk、rdma などの複数の伝送プロトコルもサポートします。その構造は次のとおりです。

上図から、NetworkStack を継承し、異なる実装を追加することで、PosixStack、DPDKStack、RDMAStack などのさまざまな伝送プロトコルをサポートできることがわかります。

前述の DPDK テクノロジー、RDMA テクノロジー、および SPDK テクノロジーを組み合わせることで、Ceph は純粋なユーザー モード ストレージ ソリューションを提供できるようになります。これは、現在のストレージ システム設計の開発方向の 1 つでもあると私は個人的に考えています。

上記の記事では、Ceph における DPDK、SPDK、および RDMA テクノロジーの適用について簡単に紹介しています。今後、上記部分について詳細な分析を行っていきますので、ご期待ください。

<<:  デジタルプラットフォームが国境を越えた電子商取引を強化 Oracle が Secoo「クラウド」で高級ブティックライフを実現

>>:  南京ビッグデータ管理局のZhai Shengqiang氏率いる代表団が華雲データグループを視察

推薦する

ウェブサイトの内部ページはランク付けされているのに、ホームページはランク付けされていないのはなぜですか?

多くの人がウェブサイトの最適化プロセス中に、ウェブサイトの内部ページがランク付けされないという問題に...

オーストラリア VPS: $46/年/KVM/4GB RAM/30GB NVMe/1Gbps 帯域幅

オーストラリアの VPS 業者である flowvps [Alpha Layer Pty Ltd (A...

シーメンスはRed Hat OpenShiftで工場エッジのイノベーションを加速

オープンソース ソリューションの世界的な大手プロバイダーである Red Hat は本日、シーメンスが...

SEO三部作のキーワード戦略

企業サイトや個人ブログはそれぞれ異なるユーザー(つまり、異なるオーディエンス)に直面しています。ユー...

クラウドコンピューティングは物流業界をどのように変えるのでしょうか?

クラウドコンピューティングが物流業界の動向をどう変えているのかクラウド コンピューティングは、現代の...

Shark Host(シャークテックコンピュータルーム):高防御サーバー/E3-1270/16gメモリ/32IP/ロサンゼルス/139ドル

Shark Host (sharktech コンピュータ ルーム) の最新ニュース: ロサンゼルス ...

国内の動画サイトは再編されつつあり、サイトの同質化により競争が激化するだろう

業界関係者によると、海外の動画サイトは差別化を図りながら共存しているが、国内の動画サイトは今後さらに...

namecheap$5.99 新規登録/移管 + 1年間の無料ドメインプライバシー保護

Namecheap は CISPA に対抗するために特別なドメイン名プロモーションを開始しました。ド...

ウェブサイトの最適化はユーザーの視点から始める必要がある

実際、リンク、ドメイン名、URL など、Web サイトの最適化に関連する要素は多数あります。成功する...

SEO 初心者の方へ: SEO を学ぶにはどこに行けばいいですか?

ある業界に参入したい場合、まずその業界に関する関連知識を学ばなければならないことは、誰もが知っていま...

エンタープライズ Web サイトの最適化の焦点は何ですか?

インターネット企業で働く SEO 担当者のほとんどは、企業のウェブサイト最適化からキャリアをスタート...

収益の伸びは2四半期連続で鈍化し、オラクルのクラウド事業の勢いは衰えつつある

オラクルは、ハイパースケールプロバイダーと競争できるクラウドプラットフォームとして自社を再配置する取...

budgetvm マイアミの新しいデータセンター VPS/1G メモリ/2G バースト/3IP/5USD/月

今年初めの朗報です。BudgetVM がマイアミに新しいデータ センターを開設しました。現在までに、...

旅行ウェブサイトのSEO方法

SEO はますます複雑になっているため、多くの経営者は、単純な SEO を使用して Web サイトを...

ロングテールの鍵はそれをどう追いかけるか

SEO 業界に参入したばかりの人は皆、外部リンクから始めます。私もそうです。外部リンクは非常に退屈な...