دي تريس

DTrace| نوع | |
|---|---|
| نظام التشغيل | |
| النموذج المصدري |
حقوق التأليف والنشر محفوظة [لغات أخرى] |
| المطور الأصلي | |
| المطورون | |
| المصمم | |
| موقع الويب |
| لغة البرمجة | |
|---|---|
| الإصدار الأول |
يناير 2005 |
| المستودع | |
| الرخصة |
دي تريس (بالإنجليزية: DTrace) هو إطار عمل شامل للتتبع الديناميكي تم إنشاؤه في الأصل بواسطة صن ميكروسيستمز لاستكشاف مشكلات النواة والتطبيقات على أنظمة الإنتاج في الوقت الفعلي. تم تطويره في الأصل لنظام سولاريس، وتم إصداره منذ ذلك الحين بموجب ترخيص التطوير والتوزيع المشترك المجاني (CDDL) في أوبن سولاريس ونسله إيلوموس، وتم نقله إلى العديد من الأنظمة الأخرى المشابهة لنظام يونكس. ستحتوي أنظمة ويندوز سيرفر من ويندوز سيرفر 2025 على دي تريس كجزء من النظام.
يمكن استخدام دي تريس للحصول على نظرة عامة عالمية على النظام قيد التشغيل، مثل كمية الذاكرة ووقت وحدة المعالجة المركزية ونظام الملفات وموارد الشبكة التي تستخدمها العمليات النشطة. يمكنه أيضًا توفير معلومات أكثر تفصيلًا، مثل سجل الوسائط التي يتم من خلالها استدعاء وظيفة معينة، أو قائمة بالعمليات التي تصل إلى ملف معين.
في عام 2010، استحوذت شركة أوراكل على شركة صن مايكروسيستمز وأعلنت عن إيقاف أوبن سولاريس. في إطار جهد مجتمعي لبعض مهندسي سولاريس الأساسيين لإنشاء نظام تشغيل سولاريس مفتوح المصدر حقًا، تم الإعلان عن إيلوموس عبر ندوة عبر الإنترنت يوم الخميس، 3 أغسطس 2010،[3] باعتباره فرعًا من توحيد أوبن سولاريس أو إس/نت، بما في ذلك تكنولوجيا دي تريس.
في أكتوبر 2011، أعلنت شركة أوراكل عن نقل دي تريس إلى لينكس،[4] وفي عام 2019 أصبح دي تريس الرسمي لفيدورا متاحًا على غيت هاب. لمدة عدة سنوات كان هناك منفذ غير رسمي لبرنامج دي تريس لنظام لينكس، دون أي تغييرات في شروط الترخيص.[5]
في أغسطس 2017، أصدرت شركة أوراكل كود نواة دي تريس بموجب رخصة جنو العمومية+، وكود مساحة المستخدم بموجب رخصة جنو العمومية ويو بي إل.[6] في سبتمبر 2018 أعلنت شركة مايكروسوفت أنها نقلت دي تريس من فري بي إس دي إلى ويندوز.[2]
في سبتمبر 2016، بدأت جهود أوبن دي تريس على غيت هاب بكل من الكود والتوثيق الشامل للأجزاء الداخلية للنظام. تحافظ جهود أوبن دي تريس على ترخيص التطوير والتوزيع المشترك الأصلي للكود من أوبن سولاريس مع مساهمات الكود الإضافية التي تأتي بموجب ترخيص رخص بي إس دي. الهدف من أوبن دي تريس هو توفير تنفيذ محمول لدي تريس مستقل عن نظام التشغيل ومقبول لجميع المستهلكين، بما في ذلك ماك أو إس وفري بي إس دي وأوبن بي إس دي ونت بي إس دي ولينكس بالإضافة إلى الأنظمة المضمنة.
الوصف
قامت شركة صن ميكروسيستمز بتصميم دي تريس لتقديم رؤى تشغيلية تسمح للمستخدمين بضبط التطبيقات ونظام التشغيل نفسه واستكشاف أخطائه وإصلاحها.
يكتب المختبرون برامج التتبع (يشار إليها أيضًا باسم البرامج النصية) باستخدام لغة البرمجة دي (لا ينبغي الخلط بينها وبين لغات البرمجة الأخرى المسماة «دي»). اللغة، المستوحاة من لغة سي، تتضمن وظائف ومتغيرات إضافية خاصة بالتتبع. تشبه برامج D برامج أوك في البنية؛ فهي تتكون من قائمة مكونة من مسبار واحد أو أكثر (نقاط القياس)، ويرتبط كل مسبار بإجراء. تعتبر هذه المجسات قابلة للمقارنة مع نقطة القطع في البرمجة الموجهة للجوانب. عندما يتم استيفاء شرط المجس، يتم تنفيذ الإجراء المرتبط به (يتم إطلاق المجس). قد يتم إطلاق المسبار النموذجي عند فتح ملف معين، أو بدء عملية، أو تنفيذ سطر معين من التعليمات البرمجية. قد يقوم المسبار الذي يتم إطلاقه بتحليل موقف وقت التشغيل من خلال الوصول إلى مكدس النداء ومتغيرات السياق وتقييم التعبيرات؛ ويمكنه بعد ذلك طباعة بعض المعلومات أو تسجيلها، أو تسجيلها في قاعدة بيانات، أو تعديل متغيرات السياق. إن قراءة وكتابة متغيرات السياق تسمح للمجسات بنقل المعلومات إلى بعضها البعض، مما يسمح لها بتحليل الارتباط بين الأحداث المختلفة بشكل تعاوني.
لقد تم إيلاء اهتمام خاص لجعل دي تريس آمنًا للاستخدام في بيئة الإنتاج. على سبيل المثال، يكون تأثير المجس ضئيلاً عند إجراء التتبع، ولا يوجد تأثير على الأداء مرتبط بأي مجس معطل؛ وهذا مهم نظرًا لوجود عشرات الآلاف من مجسات دي تريس التي يمكن تمكينها. يمكن أيضًا إنشاء مجسات جديدة بشكل ديناميكي.
أمثلة على سطر الأوامر
يمكن استدعاء نصوص دي تريس مباشرةً من سطر الأوامر، مع توفير واحد أو أكثر من الاختبارات والإجراءات كوسائط. إليك بعض الأمثلة:
# New processes with arguments
dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }'
# Files opened by process
dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
# Syscall count by program
dtrace -n 'syscall:::entry { @num[execname] = count(); }'
# Syscall count by syscall
dtrace -n 'syscall:::entry { @num[probefunc] = count(); }'
# Syscall count by process
dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }'
# Disk size by process
dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }'
# Pages paged in by process
dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }'
يمكن أيضًا كتابة نصوص برمجية يمكن أن يصل طولها إلى مئات الأسطر، على الرغم من أن عشرات الأسطر فقط عادةً ما تكون مطلوبة لاستكشاف الأخطاء وإصلاحها والتحليل المتقدم. يمكن العثور على أكثر من 200 مثال لنصوص دي تريس مفتوحة المصدر في مجموعة أدوات دي تريس،[7] التي أنشأها بريندان جريج (مؤلف كتاب دي تريس[8])، والتي توفر أيضًا توثيقًا وعروضًا توضيحية لكل منها.
المنصات المدعومة
أصبح دي تريس متاحًا للاستخدام لأول مرة في نوفمبر 2003، وتم إصداره رسميًا كجزء من صن سولاريس 10 في يناير 2005. كان دي تريس هو أول مكون لمشروع أوبن سولاريس يتم إصدار الكود المصدري الخاص به بموجب ترخيص التطوير والتوزيع المشترك (CDDL).
يعد دي تريس جزءًا لا يتجزأ من إيلوموس والتوزيعات ذات الصلة.
دي تريس هو جزء قياسي من فري بي إس دي[9] ونت بي إس دي.[10]
أضافت Apple دعم دي تريس في نظام التشغيل ماك أو إس إكس 10.5 «ليوبارد»، بما في ذلك واجهة المستخدم الرسومية المسماة إنسترمينتس.[11] تم تضمين أكثر من 40 نص دي تريس من مجموعة أدوات دي تريس في /usr/bin،[12] بما في ذلك الأدوات اللازمة لفحص إدخال/إخراج القرص (iosnoop) وتنفيذ العملية (execsnoop). على عكس المنصات الأخرى التي يدعمها دي تريس، يحتوي نظام التشغيل ماك أو إس إكس على علم (P_LNOATTACH) يمكن للبرنامج تعيينه لمنع تتبع هذه العملية من خلال أدوات تصحيح الأخطاء مثل دي تريس و gdb. في تنفيذ ماك أو إس إكس دي تريس الأصلي، قد يؤثر هذا على تتبع معلومات النظام الأخرى، حيث أن المجسات غير ذات الصلة التي يجب أن يتم تشغيلها أثناء تشغيل برنامج يحمل هذه العلامة المحددة ستفشل في القيام بذلك.[13] نظام التشغيل تم معالجة هذه المشكلة في تحديث X 10.5.3 بعد بضعة أشهر.[14] ومع ذلك، منذ إل كابيتان، تمنع ميزة حماية سلامة النظام المستخدم من تتبع الملفات الثنائية المحمية بشكل افتراضي.
لقد أصبح منفذ لينكس الخاص بـ دي تريس متاحًا منذ عام 2008؛[15] ويستمر العمل بنشاط على تحسين وإصلاح المشكلات. هناك أيضًا تنفيذ نشط على غيت هاب. يتوفر مزودو النواة القياسيون (fbt، syscall، profile)، بالإضافة إلى مزود «instr» خاص (بعض مزودي سولاريس غير متاحين اعتبارًا من 2013). تنفيذ لينكس دي تريس عبارة عن وحدة كرنل قابلة للتحميل، مما يعني أن النواة نفسها لا تتطلب أي تعديل، وبالتالي يسمح دي تريس بتجنب تعارضات ترخيص CDDL مقابل GPL (في شكله المصدر، على الأقل). ومع ذلك، بمجرد تحميل دي تريس، سيتم وضع علامة على مثيل كرنل باعتباره ملوثًا.
في عام 2007، أعلن أحد المطورين في شركة كيو إن إكس أنظمة البرمجيات على مدونته أنه وزميل له يعملان على دمج دي تريس في نظام التشغيل كيو إن إكس.[16]
أضافت شركة شركة أوراكل دعمًا تجريبيًا لـ دي تريس لنظام أوراكل لينكس في عام 2011،[1] كمعاينة تكنولوجية في إصدار أوراكل إنتربرايس كرنل 2، والذي يخضع لرخصة جنو العمومية (تم إصدار وحدة دي تريس كرنل لينكس في الأصل بموجب CDDL).[17] تم الإعلان عن التوفر العام في ديسمبر 2012.[18][19]
في 11 مارس 2019، أصدرت مايكروسوفت إصدارًا من دي تريس لإصدارات ويندوز 10 إنسايدر.[20] قامت مايكروسوفت بتضمين دي تريس كأداة مدمجة في ويندوز سيرفر 2025.[21][22]
مقدمو اللغة والتطبيقات
باستخدام موفر لغة مدعوم، يمكن لدي تريس استرداد سياق الكود، بما في ذلك الوظيفة وملف المصدر وموقع رقم السطر. علاوة على ذلك، يمكن توفير تخصيص الذاكرة الديناميكي وجمع القمامة إذا كانت اللغة تدعم ذلك.[23] تتضمن موفرات اللغة المدعومة لغة التجميع،[بحاجة لتوضيح] C، C++، جافا، إرلانج، جافا سكريبت، بيرل، بي إتش بي، بايثون، روبي، إخطاط واجهة الأوامر، وتي سي إل.
يتيح موفرو التطبيقات لـ دي تريس متابعة تشغيل التطبيقات من خلال مكالمات النظام وإلى النواة. تتضمن التطبيقات التي توفر موفري تطبيقات دي تريس كلاً من ماي إس كيو إل وبوستجري إس كيو إل وقاعدة بيانات أوراكل ومحرك أوراكل جريد وفيرفكس.[23][24][25]
المؤلفون والجوائز
تم تصميم دي تريس وتنفيذه بواسطة برايان كانتريل ومايك شابيرو وآدم ليفينثال.
وقد حصل المؤلفون في عام 2005 على تقدير لابتكاراتهم في دي تريس من إنفو وورلد وإم آي تي تكنولوجي ريفيو.[26][27] فازت دي تريس بالجائزة الكبرى في مسابقة جوائز الابتكار التكنولوجي لعام 2006 التي صحيفة وول ستريت جورنال.[28] تم تكريم المؤلفين من قبل يوسينكس بجائزة مجموعة مستخدمي أدوات البرمجيات (STUG) في عام 2008.[29]
الاستشهادات
- Cantrill، Bryan (فبراير 2006). "Hidden in Plain Sight". ACM Queue. ج. 4 ع. 1: 26–36. DOI:10.1145/1117389.1117401. مؤرشف من الأصل في 2025-03-29. اطلع عليه بتاريخ 2017-12-19.
- Bryan M. Cantrill, Michael W. Shapiro and Adam H. Leventhal (يونيو 2004). "Dynamic Instrumentation of Production Systems". Proceedings of the 2004 USENIX Annual Technical Conference. مؤرشف من الأصل في 2012-02-03. اطلع عليه بتاريخ 2006-09-08.
المراجع
- 1 2 Wim Coekaerts (9 أكتوبر 2011). "Trying out dtrace". blogs.oracle.com. مؤرشف من الأصل في 2016-03-16. اطلع عليه بتاريخ 2018-02-15.
- 1 2 "OS internals: Technical deep-dive into operating system innovations - BRK3365". Microsoft Ignite Channel. 8 أكتوبر 2018. مؤرشف من الأصل في 2024-11-26.
- ↑ D'Amore، Garrett (3 أغسطس 2010). "Illumos - Hope and Light Springs Anew - Presented by Garrett D'Amore" (PDF). illumos.org. مؤرشف من الأصل (PDF) في 2025-04-07. اطلع عليه بتاريخ 2010-08-03.
- ↑ "Oracle To Bring Dtrace To Linux". Slashdot. 4 أكتوبر 2011. مؤرشف من الأصل في 2024-11-26. اطلع عليه بتاريخ 2020-11-11.
- ↑ "The original DTrace is licensed under Sun's (now Oracle) CDDL license. Original copyrights are left intact. No GPL code is incorporated into the release, to avoid legal conflicts." نسخة محفوظة 2025-04-02 على موقع واي باك مشين.
- ↑ Wielaard، Mark J. (14 فبراير 2018). "dtrace for linux; Oracle does the right thing". Mark J. Wielaard blog. مؤرشف من الأصل في 2025-05-19. اطلع عليه بتاريخ 2018-02-14.
- ↑ "DTraceToolkit". Brendan Gregg. مؤرشف من الأصل في 2025-05-12. اطلع عليه بتاريخ 2014-06-08.
- ↑ DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD. Safari Books. 2011. ISBN:978-0132091510. مؤرشف من الأصل في 2011-04-06. اطلع عليه بتاريخ 2011-01-03.
- ↑ "FreeBSD 7.1-RELEASE Announcement". 6 يناير 2009. مؤرشف من الأصل في 2020-12-22. اطلع عليه بتاريخ 2009-01-06.
- ↑ "NetBSD source changes, 21 February 2010". مؤرشف من الأصل في 2024-11-26.
- ↑ "Mac OS X Leopard - Developer Tools - Instruments". أبل. مؤرشف من الأصل في 2007-10-24. اطلع عليه بتاريخ 2007-10-19.
- ↑ "Mac OS X DTrace". أبل. مؤرشف من الأصل في 2022-06-05. اطلع عليه بتاريخ 2010-05-31.
- ↑ "Mac OS X and the missing probes". Leventhal, Adam H. 18 يناير 2008. مؤرشف من الأصل في 2023-09-21. اطلع عليه بتاريخ 2008-01-20.
- ↑ "Apple Updates DTrace". Leventhal, Adam H. 7 يونيو 2008. مؤرشف من الأصل في 2023-05-21. اطلع عليه بتاريخ 2008-06-16.
- ↑ "CRiSP tools download page". مؤرشف من الأصل في 2020-11-16. اطلع عليه بتاريخ 2011-03-02.
- ↑ "DTrace on QNX!". Oracle The Observation Deck Blog. 8 نوفمبر 2007. مؤرشف من الأصل في 2016-09-09.
- ↑ Zannoni، Elena؛ Van Hees، Kris (2012). "DTrace on Linux" (PDF). Linux Foundation Collaboration Summit. مؤرشف من الأصل (PDF) في 2014-07-07. اطلع عليه بتاريخ 2012-04-05.
- ↑ Koch، Zeynep (12 ديسمبر 2012). "Announcement: DTrace for Oracle Linux General Availability". Oracle Linux Blog. مؤرشف من الأصل في 2017-02-26.
- ↑ DTrace module source code for Linux
- ↑ Pulapaka، Hari (11 مارس 2019). "DTrace on Windows". Microsoft Tech Community. مؤرشف من الأصل في 2021-11-01.
- ↑ "DTrace". Microsoft Learn (بالإنجليزية الأمريكية). 19 Apr 2024. Archived from the original on 2025-03-30. Retrieved 2024-11-07.
- ↑ Gatlan, Sergiu (4 Nov 2024). "Windows Server 2025 released—here are the new features". BleepingComputer (بالإنجليزية الأمريكية). Archived from the original on 2024-11-05. Retrieved 2024-11-07.
- 1 2 DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD. برنتيس هول. 2011. ص. 1152. ISBN:9780132091510.
- ↑ "Open Grid Scheduler / Grid Engine Documentation". Open Grid Scheduler. مؤرشف من الأصل في 2024-04-15. اطلع عليه بتاريخ 2012-12-30.
- ↑ "DTrace – MDN". Mozilla. مؤرشف من الأصل في 2014-09-05. اطلع عليه بتاريخ 2012-12-30.
- ↑ "Tracing software in real time". Technology Review. MIT. 2005. مؤرشف من الأصل في 2014-04-07. اطلع عليه بتاريخ 2007-03-31.
- ↑ McAllister، Neil (أغسطس 2005). "Innovation is alive and well in 2005". InfoWorld. IDG. مؤرشف من الأصل في 2005-11-23. اطلع عليه بتاريخ 2007-03-31.
- ↑ Totty، Michael (سبتمبر 2006). "The Winners Are..." The Wall Street Journal. Dow Jones & Company, Inc. مؤرشف من الأصل في 2015-11-27. اطلع عليه بتاريخ 2007-03-31.
- ↑ "2008 USENIX Annual Technical Conference (USENIX '08)". 2008. مؤرشف من الأصل في 2011-08-06. اطلع عليه بتاريخ 2008-11-26.
وصلات خارجية
- أدوات دي تريس – أمثلة دي تريس لبريندان جريج (2004)
- مجموعة أدوات دي تريس – مجموعة من نصوص دي تريس
- نصوص كتاب دي تريس – نصوص كتب دي تريس على غيت هاب
- صفحة فري بي إس دي دي تريس – الصفحة الرئيسية لفري بي إس دي دي تريس، تتضمن برنامجًا تعليميًا وسطورًا واحدة
- كتاب دي تريس
- دليل دي تريس – كتاب إيلوموس دي تريس
- التتبع الديناميكي باستخدام دي تريس ونظام تاب – كتاب مجاني مع أمثلة وتمارين
- مختبر دي تريس العملي – دورة خطوة بخطوة لتعلم دي تريس
- برنامج تعليمي حول دي لايت – أداة واجهة مستخدم رسومية تفاعلية لمطوري C/C++ تعتمد على تقنية دي تريس؛ جزء من أوراكل سولاريس ستوديو قبل الإصدار 12.4
- استكشاف ليوبارد مع دي تريس – دي تريس للتصحيح والاستكشاف
- محاضرة تقنية حول دي تريس يقدمها برايان كانتريل
- مخفية في العلن، صن مايكروسيستمز، بقلم برايان كانتريل
- منفذ أوراكل دي تريس الرسمي لنظام لينكس:
- دي تريس على فيدورا