Skip to main content
  • تأكد من أن جهازك المضيف يستوفي المتطلبات المسبقة اللازمة لـ QPL
  • يكون deflate_qpl ممكّنًا افتراضيًا أثناء البناء باستخدام cmake. إذا غيّرته عن طريق الخطأ، فيُرجى التحقق مجددًا من علامة البناء: ENABLE_QPL=1
  • للاطلاع على المتطلبات العامة، يُرجى الرجوع إلى إرشادات البناء العامة الخاصة بـ ClickHouse

قائمة الملفات

تقدّم المجلدات benchmark_sample ضمن qpl-cmake مثالًا على تشغيل اختبار الأداء باستخدام نصوص بايثون البرمجية: يحتوي client_scripts على نصوص بايثون البرمجية لتشغيل اختبار أداء نموذجي، على سبيل المثال:
  • client_stressing_test.py: نص بايثون برمجي لاختبار الضغط على الاستعلامات مع [1~4] مثيلات خادم.
  • queries_ssb.sql: يسرد هذا الملف جميع الاستعلامات الخاصة بـ Star Schema Benchmark
  • allin1_ssb.sh: ينفّذ نص shell البرمجي هذا سير عمل اختبار الأداء الكل في واحد تلقائيًا.
يعني database_files أنه سيخزّن ملفات قاعدة البيانات وفقًا لـ codec ‏lz4/deflate/zstd.

شغّل الاختبار المعياري تلقائيًا على مخطط النجمة:

بعد اكتمال العملية، يُرجى التحقق من جميع النتائج في هذا المجلد:./output/ في حال حدوث أي إخفاق، يُرجى تشغيل الاختبار المعياري يدويًا كما هو موضح في الأقسام أدناه.

التعريف

[CLICKHOUSE_EXE] يشير إلى مسار الملف التنفيذي لـ ClickHouse.

البيئة

[فحص ذاتي لـ IAA]
المخرجات المتوقعة ستكون على النحو التالي:
إذا لم يظهر أي ناتج، فهذا يعني أن IAA ليس جاهزًا للعمل. يُرجى التحقق من إعداد IAA مرة أخرى.

توليد البيانات الخام

استخدم dbgen لإنشاء بيانات تضم 100 مليون صف باستخدام المعلمة التالية: -s 20 يُتوقع إنشاء ملفات مثل *.tbl ضمن ./benchmark_sample/rawdata_dir/ssb-dbgen:

إعداد قاعدة البيانات

هيّئ قاعدة البيانات باستخدام خوارزمية الضغط LZ4
هنا ينبغي أن ترى الرسالة Connected to ClickHouse server في وحدة التحكّم، ما يعني أن العميل نجح في إعداد اتصال مع الخادم. أكمل الخطوات الثلاث أدناه المذكورة في Star Schema Benchmark
  • إنشاء الجداول في ClickHouse
  • إدراج البيانات. ينبغي هنا استخدام ./benchmark_sample/rawdata_dir/ssb-dbgen/*.tbl كبيانات إدخال.
  • تحويل “star schema” إلى مخطط “flat schema” غير مُطبَّع
أعِد إعداد قاعدة البيانات باستخدام codec ‏IAA Deflate
أكمل الخطوات الثلاث نفسها كما في lz4 أعلاه أعِدّ قاعدة البيانات باستخدام ترميز ZSTD
أكمل ثلاث خطوات كما هو موضح لـ lz4 أعلاه [self-check] لكل codec‏ (lz4/zstd/deflate)، يُرجى تنفيذ الاستعلام أدناه للتأكد من إنشاء قواعد البيانات بنجاح:
يُفترض أن تظهر لك المخرجات التالية:
[فحص ذاتي لترميز IAA Deflate] عند تنفيذ أول عملية إدراج أو استعلام من العميل، من المتوقع أن يطبع خادم ClickHouse هذا السجل في وحدة التحكم:
إذا لم تعثر على هذا مطلقًا، لكن ظهر لك سجل آخر كما يلي:
هذا يعني أن أجهزة IAA غير جاهزة، ويجب عليك التحقق من إعدادات IAA مرة أخرى.

اختبار الأداء باستخدام مثيل واحد

  • قبل بدء اختبار الأداء، يُرجى تعطيل C6 وضبط حاكم تردد CPU على performance
  • لإزالة تأثير ربط الذاكرة عبر المقابس، نستخدم numactl لربط الخادم بمقبس واحد والعميل بمقبس آخر.
  • يعني المثيل الواحد خادمًا واحدًا متصلًا بعميل واحد
شغّل الآن الاختبار المعياري لـ LZ4/Deflate/ZSTD على التوالي: LZ4:
ضغط IAA:
ZSTD:
الآن يجب أن تظهر ثلاثة سجلات كما هو متوقع:
كيفية التحقق من مقاييس الأداء: نركّز على QPS، يُرجى البحث عن الكلمة المفتاحية: QPS_Final ثم جمع الإحصاءات

القياس المعياري باستخدام مثيلات متعددة

  • لتقليل أثر القيود المرتبطة بالذاكرة عند استخدام عدد كبير جدًا من الخيوط، نوصي بإجراء القياس المعياري باستخدام مثيلات متعددة.
  • تعني المثيلات المتعددة وجود عدة خوادم (2 أو 4) يتصل كلٌّ منها بالعميل المقابل له.
  • يجب تقسيم الأنوية في socket واحد بالتساوي وتخصيصها للخوادم كلٌّ على حدة.
  • عند استخدام مثيلات متعددة، يجب إنشاء مجلد جديد لكل codec وإدراج مجموعة البيانات باتباع خطوات مشابهة لخطوات المثيل الواحد.
يوجد اختلافان:
  • من جهة العميل، تحتاج إلى تشغيل ClickHouse باستخدام المنفذ المخصص أثناء إنشاء الجدول وإدراج البيانات.
  • من جهة الخادم، تحتاج إلى تشغيل ClickHouse باستخدام ملف xml config المحدد الذي جرى تعيين المنفذ فيه. وقد جرى توفير جميع ملفات xml config المخصصة للمثيلات المتعددة ضمن ./server_config.
نفترض هنا وجود 60 نواة لكل socket، ونأخذ مثيلين على سبيل المثال. شغّل الخادم للمثيل الأول LZ4:
ZSTD:
IAA Deflate:
[شغّل الخادم للمثيل الثاني] LZ4:
ZSTD:
IAA Deflate:
إنشاء الجداول && إدراج البيانات في المثيل الثاني إنشاء الجداول:
إدخال البيانات:
  • يمثّل [TBL_FILE_NAME] اسم ملف مُسمّى وفقًا للتعبير النمطي: *. tbl ضمن ./benchmark_sample/rawdata_dir/ssb-dbgen.
  • يشير --port=9001 إلى المنفذ المخصّص لمثيل الخادم، وهو معرّف أيضًا في config_lz4_s2.xml/config_zstd_s2.xml/config_deflate_s2.xml. ولإضافة المزيد من المثيلات، يجب استبداله بالقيمة 9002/9003، التي تشير إلى المثيلين s3/s4 على التوالي. وإذا لم تُعيّنه، فسيكون المنفذ 9000 افتراضيًا، وهو مستخدم بالفعل من قِبل المثيل الأول.
قياس الأداء باستخدام مثيلين LZ4:
ZSTD:
ضغط deflate باستخدام IAA
هنا تشير الوسيطة الأخيرة: 2 في client_stressing_test.py إلى عدد المثيلات. ولزيادة عدد المثيلات، عليك استبدالها بالقيمة 3 أو 4. يدعم هذا البرنامج النصي ما يصل إلى 4 مثيلات/ الآن ينبغي أن تظهر ثلاثة سجلات كما هو متوقع:
كيفية التحقق من مقاييس الأداء: نركّز على QPS، يُرجى البحث عن الكلمة المفتاحية: QPS_Final وجمع الإحصاءات إعداد اختبار الأداء لأربعة مثيلات مماثل لإعداد المثيلين المذكورين أعلاه. نوصي باستخدام بيانات اختبار الأداء الخاصة بمثيلين بوصفها التقرير النهائي للمراجعة.

نصائح

في كل مرة قبل تشغيل ClickHouse server جديد، يُرجى التأكد من عدم وجود أي عملية ClickHouse تعمل في الخلفية، ثم التحقق منها وإنهاء العملية القديمة:
بمقارنة قائمة الاستعلامات في ./client_scripts/queries_ssb.sql مع Star Schema Benchmark الرسمي، ستجد أن 3 استعلامات غير مشمولة: Q1.2/Q1.3/Q3.4 . ويرجع ذلك إلى أن نسبة استخدام CPU في هذه الاستعلامات منخفضة جدًا (< 10%)، ما يعني أنها لا تُبرز فروق الأداء.
آخر تعديل في ٣ يوليو ٢٠٢٦