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氏率いる代表団が華雲データグループを視察

推薦する

クラウド データベースの正しい選び方

近年、企業がローカルに展開されたデータをクラウドに移行する傾向が高まっています。しかし、企業はクラウ...

落下防止携帯電話に関するアップルの新特許:画面が自動的に保護シートを拡張

appleinsiderによると、米国特許商標庁は「電子機器のアクティブスクリーン保護」メカニズムと...

世界で最も急成長しているドメイン名登録業者トップ10: DNSPodとYoufu Networkがランクイン

IDC Review Network (idcps.com) は 6 月 17 日に次のように報告し...

Kafka: 単なるメッセージキューにとどまらない、新世代のストリームデータ処理プラットフォーム

データのために生まれ、20 世紀で最も影響力のある作家にちなんで名付けられたクールなオープン ソース...

3年間のJavaバックエンド開発では、JVMを知っておく必要があります

JAVA プログラマーにとって、3 年というのはハードルです。 3 年経っても JVM を勉強してい...

#VPSテスト# 2Gメモリ搭載のBandwagonHostのCN2 GIAラインVPSの評価データをそのまま共有

3月14日の午後、bandwagonhostは突然、自社のウェブサイトで新しいバージョンのVPSをリ...

Kubernetes マルチクラウド アーキテクチャ設計

みなさんこんにちは。私はNezhaです。今日は、Kubernetes マルチクラウドの実装についてお...

クラウド市場での競争が激化する中、通信事業者はどうすれば差別化できるのでしょうか?

政策の成果と市場の需要に後押しされ、我が国のクラウド コンピューティング市場の規模は拡大を続け、産業...

オンライン旅行:モバイルインターネットによって変革されるもう一つの業界

モバイルインターネットの普及により、オンライン旅行が本格的に形作られるようになりました。ユーザーの長...

超格安: 2G (xen) メモリ、100G ハードディスク、月間トラフィック 3T、月額 10.5 ドル

新しい VPS マーチャントである speedyvds は、複数のデータセンターを持ち、暴走の可能性...

4つの分散データベースシナリオの選択、利点と欠点の比較分析、および将来の展望

[[273746]] 1 はじめに近年、国際的な情報セキュリティ情勢が厳しさを増す中、国家の情報セ...

外部リンク: 史上最も包括的な外部リンクの説明

インタールード: この記事はこの観光客のメッセージのために書かれました (luoli はあなたがそれ...

情報漏洩事件の容疑者2人が拘束される:昼はエンジニア、夜はハッカー

実際、法的意識の弱さと遊び心により、インターネット企業のセキュリティに携わる技術スタッフやセキュリテ...

Google、データ需要の増加に伴いアジア太平洋地域のクラウドリージョンを3つ追加

Google は、データ分析、オープン インフラストラクチャ、オンライン接続の需要が高まっているアジ...