اختراق جامع القمامة في جو: تخزين المؤشرات من التجميع

2025-06-23
اختراق جامع القمامة في جو: تخزين المؤشرات من التجميع

يتناول هذا المنشور تعقيدات معالجة مؤشرات جو من رمز التجميع، مع التركيز على التفاعل الحاسم مع جامع القمامة في جو. تتطلب معالجة المؤشرات مباشرة إبلاغ جامع القمامة صراحةً من خلال وظائف مثل `runtime.gcWriteBarrier2` و `runtime.writeBarrier` لتجنب النزاعات والانهيارات المحتملة. يتناول المقال أيضًا تحدي تخصيص ذاكرة محاذاة 128 بت للاستخدام الأمثل لتعليمات AVX، مع تقديم حل ذكي. ومع ذلك، يحذر من الاعتماد على وظائف وقت التشغيل الداخلية، حيث قد تتغير توافرها في إصدارات جو المستقبلية.

اقرأ المزيد
التطوير تجميع جو

دفع حدود أنابيب لينكس إلى أقصى حد: من 3.5 جيجابايت/ثانية إلى 62.5 جيجابايت/ثانية

2025-06-22
دفع حدود أنابيب لينكس إلى أقصى حد: من 3.5 جيجابايت/ثانية إلى 62.5 جيجابايت/ثانية

يستكشف هذا المنشور تطبيق أنابيب يونكس في لينكس من خلال تحسين برنامج اختبار بشكل متكرر يكتب ويقرأ البيانات عبر أنبوب. بدءًا من برنامج بسيط يحقق حوالي 3.5 جيجابايت/ثانية من الإنتاجية، يحسن المؤلف أدائه عشرين مرة من خلال عدة مراحل تحسين. تتضمن التحسينات الرئيسية استخدام مكالمات النظام `vmsplice` و `splice` للقضاء على نسخ البيانات، واستخدام الصفحات الضخمة لتقليل تكلفة الصفحات، واستخدام حلقة مشغولة لتقليل تكاليف المزامنة. يتم شرح العملية بالتفصيل مع أمثلة على التعليمات البرمجية وتحليل الأداء باستخدام أداة `perf` من لينكس.

اقرأ المزيد
التطوير أنابيب