External Profiler Support
تقدم جوليا دعمًا صريحًا لبعض أدوات تتبع الأداء الخارجية، مما يتيح لك الحصول على نظرة عامة عالية المستوى حول سلوك تنفيذ وقت التشغيل.
المحللون المدعومون حاليًا هم:
Adding New Zones
لإضافة مناطق جديدة، استخدم ماكرو JL_TIMING
. يمكنك العثور على العديد من الأمثلة في جميع أنحاء قاعدة الشيفرة من خلال البحث عن JL_TIMING
. لإضافة نوع جديد من المنطقة، تقوم بإضافته إلى JL_TIMING_OWNERS
(وربما JL_TIMING_EVENTS
).
Dynamically Enabling and Disabling Zones
تسمح لك متغير البيئة JULIA_TIMING_SUBSYSTEMS
بتمكين أو تعطيل المناطق لجلسة جوليا معينة. على سبيل المثال، تعيين المتغير إلى +GC,-INFERENCE
سيمكن مناطق GC
ويعطل مناطق INFERENCE
.
Tracy Profiler
Tracy هو ملف تعريف مرن يمكن دمجه اختياريًا مع جوليا.
جلسة ترايسي النموذجية قد تبدو كالتالي:
Building Julia with Tracy
لتمكين تكامل Tracy، قم ببناء Julia مع الخيار الإضافي WITH_TRACY=1
في ملف Make.user
.
Installing the Tracy Profile Viewer
أسهل طريقة للحصول على عارض الملف الشخصي هي عن طريق إضافة حزمة TracyProfiler_jll
وتشغيل العارض باستخدام:
run(TracyProfiler_jll.tracy())
على macOS، قد ترغب في تعيين متغير البيئة TRACY_DPI_SCALE
إلى 1.0
إذا بدت عناصر واجهة المستخدم في المحلل كبيرة بشكل مفرط.
لتشغيل مثيل "بدون رأس" يقوم بحفظ الأثر على القرص، استخدم
run(`$(TracyProfiler_jll.capture()) -o mytracefile.tracy`)
بدلاً من ذلك.
للحصول على معلومات حول استخدام واجهة مستخدم تريسي، يرجى الرجوع إلى دليل تريسي.
Profiling Julia with Tracy
تتضمن سير العمل النموذجي لتوصيف جوليا باستخدام تريسي بدء جوليا باستخدام:
JULIA_WAIT_FOR_TRACY=1 ./julia -e '...'
تضمن متغير البيئة أن تنتظر جوليا حتى تتصل بنجاح بمحلل الأداء تريسي قبل متابعة التنفيذ. بعد ذلك، استخدم واجهة مستخدم محلل الأداء تريسي، انقر على Connect
، ويجب أن تستأنف جوليا التنفيذ ويجب أن يبدأ التحليل.
Profiling package precompilation with Tracy
لتحديد عملية ما قبل تجميع الحزمة، من الأسهل استدعاء Base.compilecache
بشكل صريح مع الحزمة التي تريد تجميعها مسبقًا:
pkg = Base.identify_package("SparseArrays")
withenv("JULIA_WAIT_FOR_TRACY" => 1, "TRACY_PORT" => 9001) do
Base.compilecache(pkg)
end
هنا، نستخدم منفذًا مخصصًا لـ tracy مما يسهل العثور على العميل الصحيح في واجهة مستخدم Tracy للاتصال به.
Adding metadata to zones
يمكن استخدام الدوال المختلفة jl_timing_show_*
و jl_timing_printf
لإرفاق سلسلة (أو سلاسل) بمنطقة معينة. على سبيل المثال، تُظهر منطقة تتبع الاستدلال مثيل الطريقة التي يتم استدلالها.
يمكن استخدام دالة TracyCZoneColor
لتعيين لون منطقة معينة. ابحث في قاعدة الشيفرة لترى كيف يتم استخدامها.
Viewing Tracy files in your browser
قم بزيارة https://topolarity.github.io/trace-viewer/ لمشاهدة (تجريبية) عارض ويب لتتبع Tracy.
يمكنك فتح ملف محلي بامتداد .tracy
أو تقديم عنوان URL من الويب (مثل ملف في مستودع Github). إذا قمت بتحميل ملف تتبع من الويب، يمكنك أيضًا مشاركة عنوان الصفحة مباشرة مع الآخرين، مما يتيح لهم عرض نفس التتبع.
Enabling stack trace samples
لتمكين أخذ عينات مكدس المكالمات في Tracy، قم ببناء Julia مع هذه الخيارات في ملف Make.user
:
WITH_TRACY := 1
WITH_TRACY_CALLSTACKS := 1
USE_BINARYBUILDER_LIBTRACYCLIENT := 0
قد تحتاج أيضًا إلى تشغيل make -C deps clean-libtracyclient
لإجبار إعادة بناء Tracy.
تؤثر هذه الميزة بشكل كبير على حجم التتبع وعبء التوصيف، لذا يُوصى بإيقاف تشغيل أخذ عينات مكدس الاستدعاءات عند الإمكان، خاصة إذا كنت تنوي مشاركة ملفات التتبع الخاصة بك عبر الإنترنت.
لاحظ أن وقت تشغيل JIT لجوليا لا يزال لا يحتوي على تكامل لتسمية الرموز في تريسي، لذا ستظل وظائف جوليا عادة غير معروفة في هذه تتبع المكدس.
Intel VTune (ITTAPI) Profiler
هذا القسم لم يُكتب بعد.