كيف نقيس
قيست كل الأرقام التي يقدّمها هذا الموقع بوصفها قياسات على خادم فعلي، بالمعالج الذي تستخدمه خوادم الإنتاج لدينا: النوم والاستيقاظ واللقطة، واختبار أداء CPU. وتجد هنا كلًّا منها، مع الجهاز والتاريخ وطريقة القياس ومكان نتائجه الخام.
- خادم فعلي. جهاز مادي كامل، لا جهاز افتراضي على جهاز يملكه غيرنا، فلا يشاركه شيء لا نراه.
- قيم وسيطة، مع تشتتها. القيمة الوسطى لمرات تشغيل كثيرة، وبجانبها المئين 95 وعدد مرات التشغيل.
- أفضل الحالات نسمّيها كذلك. شُغّل معظمها والجهاز خالٍ من أي عمل آخر؛ وحيث يكون الأمر كذلك، تذكره الصفحة.
- النتائج الخام محفوظة. يذكر كل رقم الملف الذي قُرئ منه، في المستودع إلى جانب الكود الذي أنتجه.
النوم والاستيقاظ واللقطة
- الجهاز
- Cherry Servers، سنغافورة: AMD Ryzen 9 9950X (Zen 5، 16 نواة)، 128 GB، Ubuntu 26.04.1، نواة النظام 7.0.0-34
- التاريخ
- 3 أكتوبر 2026
- Sandbox
- بيئة معزولة 4 vCPU / 8 GiB، node:24-bookworm
- العقدة
- sandboxd بإعدادات ذلك اليوم الافتراضية: Firecracker معدَّل، وذاكرة في طبقتين، وعملية محفوظة جاهزة لكل بيئة معزولة نائمة، وأجهزة على PCI
- المستدعي
- على الجهاز نفسه، عبر اتصال واحد يبقى مفتوحًا، فيقيس الرقم الطلب نفسه لا المصافحة
| القياس | طريقة التوقيت | القيمة الوسيطة | p95 | مرات التشغيل | المصدر |
|---|---|---|---|---|---|
| التنويم | POST …/sleep، كما رآه المستدعي | 2.3 مللي ثانية | 2.8 مللي ثانية | 30 | wake.txt cycle sleep |
| الاستيقاظ، بعد أن نامت من تلقاء نفسها | حساب العقدة نفسها لمدة استعادتها (ترويسة Server-Timing الخاصة بها)، للاستدعاء التالي | 3.5 مللي ثانية | 3.9 مللي ثانية | 29 | wake.txt auto wake |
| ذلك الاستدعاء، حتى الإجابة عنه | الطلب الذي أيقظها كاملًا، من إرساله حتى الإجابة عنه | 6.7 مللي ثانية | 7.1 مللي ثانية | 29 | wake.txt auto call |
| الاستيقاظ، مباشرة بعد النوم | العملية المحفوظة جاهزةً للاستيقاظ التالي لا تزال في طور البدء، فيضطر إلى انتظارها | 5.6 مللي ثانية | 6.3 مللي ثانية | 30 | wake.txt cycle wake |
| لقطة لبيئة معزولة قيد التشغيل | عبر API: الذاكرة والعمليات والقرص، أثناء تشغيلها | 32 مللي ثانية | — | 4 | snapshot.txt 31.5 to 31.9 ms |
| الإنشاء، من المجمّع | نسخة من قالب يعمل مسبقًا | 1.3 مللي ثانية | — | 100 | tti-sequential.txt create median |
| الإنشاء، حتى الإجابة عن أول أمر | واحدة تلو الأخرى، مئة مرة | 11.0 مللي ثانية | 12.0 مللي ثانية | 100 | tti-sequential.txt sequential x100 |
| 30 معًا: حتى نوم الجميع | ثلاثون بيئة معزولة تُنوَّم في اللحظة نفسها، حتى آخرها | 49.0 مللي ثانية | — | 1 | wake.txt concurrent 30 sleep_all |
| 30 معًا: حتى استيقاظ الجميع | الثلاثون نفسها تُوقَظ في اللحظة نفسها، حتى آخرها | 61.4 مللي ثانية | — | 1 | wake.txt concurrent 30 wake_all |
الملفات في sandboxd/bench/results/2026-10-03-s3-ryzen9950x/4c8g-layers-final/؛ والتقرير هو sandboxd/bench/results/README.md، الجولة 2، القسم 二. وتقرأ صفحات الموقع الأخرى أرقام النوم والاستيقاظ (3.5 مللي ثانية للاستيقاظ، و2.3 مللي ثانية للنوم) من الملف نفسه الذي يقرأ منه هذا الجدول، فهي من هذه الجولة. وقد فُحصت اللقطة صفحةً صفحة مقابل الذاكرة كاملةً كما كتبها Firecracker بنفسه: اختلفت 3 بايتات من صفحة واحدة من أصل 2,097,152.
يمكنك قراءة الرقم نفسه لبيئاتك المعزولة: كل استدعاء API اضطر إلى إيقاظ إحداها يذكر المدة التي استغرقها ذلك، بالمللي ثانية، في ترويسة Server-Timing: wake;dur=… الخاصة به.
CPU: اختبار الأداء المفتوح من StarSling
تنشر StarSling اختبار أداء مفتوحًا لمزودي البيئات المعزولة (github.com/starslingdev/hpc-sandbox-benchmarks). نتيجة CPU فيه هي أدوات الويب في Node.js داخل بيئة معزولة ذات 4 vCPU و8 GiB، بعدد مرات التشغيل في الثانية. شغّلنا مجموعة اختباراته في بيئة معزولة من Glac، وقارنّا النتيجة بالمزودين في أحدث تشغيل منشور له تحتويه نسختنا من بياناته.
- Glac، مرات التشغيل في الثانية
- 29.0
- القيمة الوسيطة لدى 13 مزودًا
- 17.26
- أسرع من تلك القيمة الوسيطة
- 68%
نتيجتنا
- أول خادم إنتاج لدينا، في كوفنتري بالمملكة المتحدة: AMD Ryzen 9 9950X مع 128 GB، في 10 أكتوبر 2026، أثناء اختبار قبوله، ولا بيئة معزولة أخرى مشغولة عليه.
- مجموعة اختبارات StarSling وصورتها نفسها (
sandbox-benchmarks-toolchain:v8)، في بيئة معزولة ذات 4 vCPU و8 GiB، مُشغَّلة كما يشغّلها المنتج. - ثلاث جولات من مجموعة الاختبارات؛ قيمة كل جولة هي القيمة الوسيطة لمحاولاتها الثلاث: 28.97, 29.27, 29.00. والرقم هو القيمة الوسيطة لها، 29.00.
نتيجتهم
- تشغيل StarSling رقم 36498291449: التشغيل الذي عرضته لوحة صدارته في 2 أكتوبر 2026، حين أخذنا نسختنا من بياناته، وهو أحدث التشغيلات التسعة في تلك النسخة (من 23 إلى 29 سبتمبر 2026).
- قيمة المزود هي القيمة الوسيطة لقيم بيئاته المعزولة، وقيمة كل بيئة هي محاولتها الوسيطة: وهذه قاعدة لوحة الصدارة نفسها.
- تحفظ نسختنا كل قيمة نسبةً إلى قيمة مزود واحد في التشغيل نفسه، بثلاث خانات عشرية، فكل قيمة أدناه لا تبعد عن قيمة StarSling نفسها إلا بنحو 0.02.
نتيجتنا، وقيم المزودين البالغ عددها 13، بعدد مرات التشغيل في الثانية، من الأعلى إلى الأدنى
29.0 ÷ 17.26 = 1.68، أي أسرع من القيمة الوسيطة بنسبة 68%. أسماء المزودين موجودة في بيانات StarSling المنشورة؛ وتُقرأ القيم هنا وقت البناء من reports/providers/sources/performance-bar/starsling-metrics.tsv، الذي أنتجه من تلك البيانات analyse.py المجاور له.
ما لا يقوله
- شُغّل اختبارنا والجهاز خالٍ من أي عمل آخر؛ أما اختباراتهم فشُغّلت على ما كانت تحمله أجهزتهم المضيفة في ذلك اليوم. والجهاز المشغول يخفض النتيجة: على 9950X مع 1.25 vCPU مشغولة أخرى لكل نواة من أنويته، سجّلت مجموعة الاختبارات نفسها 10.4 في بيئتنا المعزولة (8 أكتوبر 2026). وكان أولئك الجيران يشغّلون الاختبار نفسه في حلقة متكررة، وهو أشد الأحمال استهلاكًا لذاكرة التخزين المؤقت، وأثقل مما يحمله أسطول حقيقي.
- إنه اختبار أداء واحد لنوع واحد من العمل، هو تشغيل Node.js لأدوات JavaScript، ونتيجته تتبع سرعة الأنوية. ولا يقول شيئًا عن الأقراص أو الشبكات.
الملفات
sandboxd/bench/results/2026-10-10-cvt-01-accept/: اختبار القبول، ومخرجاته الخام وresults.jsonreports/providers/sources/performance-bar/starsling-metrics.tsvreports/providers/sources/performance-bar.md: كيف صُنعت النسخة وكيف قُرئتsandboxd/bench/results/README.md: القسمان 40 و42
أين توجد النتائج الخام
كل مسار في هذه الصفحة ملف في مستودع Glac نفسه، إلى جانب الكود الذي أجرى القياس. المستودع ليس عامًا؛ فالمسارات تبيّن من أي تشغيل جاء كل رقم، ويشرح تقرير كل جولة ما شُغّل، وعلى أي جهاز، وما الذي لم يجرِ كما ينبغي.