لغز إلغاء تراكب المكدس في Perf

2025-01-31
لغز إلغاء تراكب المكدس في Perf

Perf، وهي أداة قوية لتحليل الأداء، تستخدم مقاطعات تجاوز عداد PMU لالتقاط حالات الخيوط لإنشاء ملفات تعريف. ومع ذلك، فإن إلغاء تراكب المكدس يمثل تحديًا. تقوم المُترجمات الحديثة بحذف مُشير الإطار افتراضيًا، مما يجعل تتبع المكدس صعبًا. وعلى الرغم من إمكانية إعادة التجميع باستخدام -fno-omit-frame-pointer، إلا أن هذا مكلف وقد يؤدي إلى عدم توافق مكتبات النظام. يوفر DWARF بديلاً، لكن تعقيده وزيادة الحمل على الأداء كبيران، مما دفع Linus Torvalds إلى رفض استخدامه في إلغاء تراكب مكدس النواة. لذلك، تعتمد Perf على حل وسط: نسخ الجزء العلوي فقط من المكدس إلى مساحة المستخدم لإلغاء التراكب. هذا يحد من حجم المكدس (65,528 بايت)، ولكنه يوازن بشكل فعال بين الأداء والعملية.