Quarkコンテナへようこそ。
このリポジトリは、Quark Containers コードのホームです。
Quark Container は、次の機能を備えた高性能のセキュア コンテナ ランタイムです。
パフォーマンス スライスは、performance.pdf です。詳細なテスト手順と結果はこちら
Quark Container は、以下のような古典的な Linux 仮想マシン アーキテクチャを採用しています。これには、QVisor という名前の HyperVisor と QKernel という名前のゲスト カーネルが含まれています。 Linux/Windows などの標準 OS イメージを Qemu 上で実行できる一般的な Linux 仮想マシンの設計とは異なります。 QVisor と QKernel は密接に結合されています。 QVisor は QKernel のみをサポートします。
Quark Containerの上位設計は以下の通りです。次の手順でコンテナ アプリケーションのリクエストを処理します。
Quark Containerは、RDMA接続、つまりTSoRを使用したコンテナアプリケーションのTCPトラフィックの転送をサポートしています。 TSoR は K8S クラスターのコンテナー ネットワーク プロバイダーであり、既存の TCP ベースのコンテナー アプリケーションは、何も変更せずに RDMA 経由でデータを転送できます。 TSoR は、TCP/IP プロトコル スタックのワークロードを RDMA NIC にオフロードします。より少ない CPU フットプリントで、より高いスループットと低いレイテンシを実現できます。 TSOR テスト結果は、Quark + TSoR と RunC + Flannel を比較した Redis ベンチマーク テスト結果です。 TSoR は、Flannel に比べてスループットが 5 倍向上しています。 TSoR のアーキテクチャは以下のとおりです。紹介文はこちら
Quarkは主にX86-64をサポートしています。 aarch64 のサポートは暫定的なものであり、現在開発中です。他のアーキテクチャも将来的に利用可能になる予定です。
QuarkはRust言語で開発されています。ビルドでは毎晩 Rust をインストールする必要があります。現在の既知の良好なバージョンnightly-2023-12-11-x86_64-unknown-linux-gnu
(aarch64 ビルドの場合はx86_64
をaarch64
に置き換えてください) を使用してください。
rustup toolchain install nightly-2023-12-11-x86_64-unknown-linux-gnu
rustup default nightly-2023-12-11-x86_64-unknown-linux-gnu
Rust-src コンポーネントを現在のツールチェーンに追加します。
rustup component add rust-src
そして、qkernelクロスコンパイル用に「cargo-xbuild」をインストールします
cargo install cargo-xbuild
libcap ライブラリをインストールする
sudo apt-get install libcap-dev
また、RDMA モジュールをコンパイルするための追加ライブラリもいくつかあります。
sudo apt-get install build-essential cmake gcc libudev-dev libnl-3-dev
libnl-route-3-dev ninja-build pkg-config valgrind python3-dev cython3
python3-docutils pandoc libclang-dev
また、GPU モジュールをコンパイルするための追加ライブラリもいくつかあります。
(NVIDIA 以外のマシンでも次のコマンドを実行して、GPU モジュールをコンパイルできることに注意してください。)
sudo apt-get install libelf-dev nvidia-driver-535
git clone [email protected]:QuarkContainer/Quark.git
cd Quark
make
make install
make cuda_all
make install
make install
実行時に /usr/local/bin/ フォルダーにコピーされました。 「quark」には QVisor コードが含まれており、OCI インターフェイスも実装されています。sudo mkdir /var/log/quark
sudo systemctl restart docker
hello-world docker サンプル アプリケーションは次のように実行できます。
sudo systemctl restart docker
sudo systemctl restart docker.service
docker run --rm --runtime=quark hello-world
Quark Containerの構成ファイルは /etc/quark/config.json にあります。構成の詳細は未定です...
Quark Containerのデバッグログは/var/log/quark/quark.logに保存されます。 /etc/quark/config.json の「DebugLevel」で有効または無効にすることができます。 「DebugLevel」の値は以下の5つが考えられます。
Off,
Error,
Warn,
Info,
Debug,
Trace,
ログが有効になっている場合 (例: デバッグ)。 Quark ContainerでDockerイメージを実行すると、/var/log/quark/quark.logにログが生成されます。さらなるデバッグのヒントについては、Wiki を参照してください。
quark コンテナーと RDMA サポートを使用して k8s をセットアップするには、このリンクを参照してください。
Quark は現在、aarch64 を暫定的にサポートしています (現在も開発中です)。
新しい arm64 アーキテクチャに関する注意:
新しい arm64 アーキテクチャでは、pstate に PAN (Privilege Access Never) ビットが追加され、カーネル (el1) がユーザー (el0) メモリにアクセスするのを防ぎます。フルサポートはWIPです。一時的な回避策として、単純に qkernel 内の PAN をクリアします。これを行うには、このパッチを手動で適用する必要があります
~quark/[email protected]
に電子メールを送信するだけで、Quark メーリング リストを使用できます。リストに登録するには、空のメールを~quark/[email protected]
に送信してください。 メーリングリストの使用方法の詳細については、メーリング リストのエチケットを参照してください。