مرحبا بكم في حاوية كوارك.
هذا المستودع هو موطن كود Quark Containers.
Quark Container عبارة عن حاوية آمنة وعالية الأداء في وقت التشغيل مع الميزات التالية:
شرائح الأداء هي Performance.pdf. خطوات الاختبار التفصيلية والنتيجة هنا
تأخذ Quark Container بنية Linux Virtual Machine الكلاسيكية على النحو التالي. يتضمن HyperVisor المسمى QVisor ونواة ضيف تسمى QKernel. على عكس تصميم Linux Virtual Machine الشائع، حيث يمكن تشغيل صورة نظام التشغيل القياسية مثل Linux/Windows على Qemu. QVisor وQKernel مقترنان بإحكام. QVisor يدعم QKernel فقط.
التصميم عالي المستوى لـ Quark Container هو على النحو التالي. يتعامل مع طلب تطبيق الحاوية بالخطوات التالية.
تدعم Quark Container نقل حركة مرور TCP لتطبيق الحاوية من خلال اتصال RDMA، أي TSoR. TSoR هو مزود شبكة حاويات في مجموعة K8S ويمكن لتطبيق الحاوية القائم على TCP نقل البيانات من خلال RDMA دون أي تعديل. بينما يقوم TSoR بإلغاء تحميل عبء عمل مكدس بروتوكول TCP/IP إلى RDMA NIC. يمكنه تحقيق إنتاجية أعلى وزمن وصول منخفض مع مساحة أقل لوحدة المعالجة المركزية. نتيجة اختبار TSOR هي نتيجة اختبار Redis المعياري مع المقارنة بين Quark + TSoR وRunC + Flannel. يُظهر TSoR تحسينًا في الإنتاجية بمقدار 5 مرات مقارنة بالفانيلا. بنية TSoR هي على النحو التالي. المقدمة هنا
يدعم Quark بشكل أساسي X86-64. دعم Aarch64 أولي وقيد التطوير النشط. سوف تكون الهندسة المعمارية الأخرى متاحة في المستقبل.
تم تطوير Quark باستخدام لغة Rust. يحتاج البناء إلى تثبيت Rust ليلاً. الرجاء استخدام الإصدار الجيد الحالي والمعروف nightly-2023-12-11-x86_64-unknown-linux-gnu
(استبدل x86_64
بـ aarch64
لبناء 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
وقم بتثبيت "cargo-xbuild" لتجميع qkernel المتقاطع
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
. يحتوي "quark" على كود QVisor ويقوم أيضًا بتنفيذ واجهة OCI.sudo mkdir /var/log/quark
sudo systemctl restart docker
يمكن تنفيذ نموذج تطبيق عامل الإرساء hello-world على النحو التالي:
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. يمكن تمكينه أو تعطيله بواسطة "DebugLevel" لـ /etc/quark/config.json. هناك 5 قيم محتملة لـ "DebugLevel" على النحو التالي.
Off,
Error,
Warn,
Info,
Debug,
Trace,
عند تمكين السجل، على سبيل المثال التصحيح. بعد تشغيل صورة عامل إرساء باستخدام Quark Container، سيتم إنشاء السجلات في /var/log/quark/quark.log. راجع موقع wiki لمزيد من النصائح حول تصحيح الأخطاء.
يرجى الرجوع إلى هذا الرابط لإعداد k8s باستخدام حاوية الكوارك ودعم RDMA.
يتمتع Quark الآن بدعم أولي من نوع Aarch64 (لا يزال قيد التطوير النشط).
ملاحظات حول بنيات Arm64 الأحدث :
تضيف بنيات Arm64 الأحدث بت PAN (امتياز الوصول أبدًا) في الحالة pstate مما يمنع النواة (el1) من الوصول إلى ذاكرة المستخدم (el0). الدعم الكامل قيد التقدم. كحل مؤقت، نقوم ببساطة بمسح PAN في ملف qkernel. للقيام بذلك، تحتاج إلى تطبيق هذا التصحيح يدويًا
~quark/[email protected]
. للاشتراك في القائمة، أرسل بريدًا إلكترونيًا فارغًا إلى ~quark/[email protected]
لمعرفة المزيد حول استخدام القائمة البريدية، راجع آداب القائمة البريدية.