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

推薦する

HTML5が普及するには少なくとも5年かかると予想されており、現在、話題のピークを迎えている。

HTML5 は遠い夢物語でしょうか、それとも現在のモバイル インターネットの救いの手でしょうか? 1...

あなたの会社はクラウド コンピューティングを保護する準備ができていますか?

クラウド コンピューティング サービスがもたらすメリットは明らかです。クラウド コンピューティング ...

インターネットの「無料トライアル」マーケティング技術についての簡単な説明

最適化した後、安心してリラックスできますか? ウェブサイトの重量が重いと、収益を上げることができます...

家具の電子商取引 Niuwo.com は 3 か月で閉鎖され、1 億元以上の資金が浪費されたとみられる - A5 Webmaster Network

新快報記者ハン・ジェンが報告最近、設立からわずか3か月の家具EC会社Niuwo.comが倒産しそうに...

Zookeeper を廃止した後、Kafka はトピックとコンシューマー グループをどのように保存しますか?

筆者の会社で現在使用している Kafka のバージョンは 2.2.1 であるため、Kafka カーネ...

インターネットがクラウドプラットフォームへと移行する仕組み

最近、Eben Moglen 氏の「クラウドの自由」と題する講演を聞いて困惑しました。実際、このスピ...

BandwagonHost Hong Kong cn2 giaはどうですか?

BandwagonHost の香港 cn2 gia vps は、1Gbps の帯域幅、3 つのネット...

ウェブサイト分析 高度なセグメンテーション 六経 神剣 第一経

ウェブサイトアナリストは、トレンドとセグメンテーションについてよく話します。いわゆるトレンド分析は、...

新ブランド、非公開にしたくないIPマーケティング手法!

2019年、世界経済は回復し、成長しています。2019年の世界経済は5.5%成長し、中国の経済成長率...

sharktech (Shark Data Center): 20% 割引コード (レア)、ロサンゼルスの高防御サーバー

米国のSharktech(Shark Data Center)では、めったに大きな割引はありません。...

Qihoo 360 検索が SEO に与える影響

Qihoo 360検索エンジンがひっそりとリリースされた日から、360検索からのトラフィックがかなり...

今年の共同購入の売上高は210億ドルを超えると予想されており、定期的な割引は目新しさに欠ける

独立系共同購入ナビゲーションサイト「Tuan800」の最新データによると、今年11月の国内主流共同購...

ウェブサイトのトラフィックを増やすための10の必勝ヒント

最近、私はいくつかのグループの皆さんとチャットをしています。多くのネットユーザーが、電子商取引サイト...

#V补货# BuyVM: AMD 高性能 VPS + 超大容量ハードディスク + 10Gbps 帯域幅 (トラフィック無制限) + Windows、苦情対策\DDoS の高防御

この投稿は buyvm の VPS の再入荷のお知らせです。再入荷後、ウェブページが更新され、皆様に...