دي تريس

دي تريس
المؤلف(ون) الأصلي(ون)بريان كانتريل ، آدم ليفينثال ، مايك شابيرو ( صن مايكروسيستمز )
المطور(ون)صن مايكروسيستمز ، أوراكل ، مايكروسوفت
الإصدار الأولييناير 2005 ؛ منذ 19 عامًا ( 2005-01 )
مستودعgithub.com/opendtrace
مكتوب فيج
نظام التشغيلSolaris ، illumos ، macOS ، FreeBSD ، NetBSD ، Linux ، [1] Windows [2]
يكتبالتتبع
رخصةرخصة CDDL ، GPLv2 ، UPL
موقع إلكترونيdtrace.org

DTrace هو إطار عمل شامل للتتبع الديناميكي تم إنشاؤه في الأصل بواسطة Sun Microsystems لاستكشاف مشكلات النواة والتطبيقات في أنظمة الإنتاج في الوقت الفعلي. تم تطويره في الأصل لنظام Solaris ، ومنذ ذلك الحين تم إصداره بموجب ترخيص التطوير والتوزيع المشترك المجاني (CDDL) في OpenSolaris و illumos التابع له ، وتم نقله إلى العديد من الأنظمة الأخرى المشابهة لنظام Unix .

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

في عام 2010، استحوذت شركة Oracle Corporation على شركة Sun Microsystems وأعلنت عن إيقاف OpenSolaris. وكجهد جماعي من جانب بعض مهندسي Solaris الأساسيين لإنشاء Solaris مفتوح المصدر حقًا، تم الإعلان عن نظام التشغيل illumos عبر ندوة عبر الإنترنت يوم الخميس، 3 أغسطس 2010، [3] باعتباره فرعًا من دمج OpenSolaris OS/Net، بما في ذلك تقنية DTrace.

في أكتوبر 2011، أعلنت شركة أوراكل عن نقل DTrace إلى لينكس ، [4] وفي عام 2019، أصبح DTrace الرسمي لفيدورا متاحًا على GitHub . لعدة سنوات، كان هناك منفذ غير رسمي لـ DTrace إلى لينكس متاحًا، دون أي تغييرات في شروط الترخيص. [5]

في أغسطس 2017، أصدرت شركة أوراكل كود نواة DTrace بموجب ترخيص GPLv2+ ، وكود مساحة المستخدم بموجب ترخيص GPLv2 وUPL. [6] في سبتمبر 2018، أعلنت شركة مايكروسوفت أنها نقلت DTrace من FreeBSD إلى Windows. [2]

في سبتمبر 2016، بدأت جهود OpenDTrace على github بكل من الكود والتوثيق الشامل للأجزاء الداخلية للنظام. تحافظ جهود OpenDTrace على ترخيص CDDL الأصلي للكود من OpenSolaris مع مساهمات كود إضافية تأتي بموجب ترخيص BSD 2 Clause . الهدف من OpenDTrace هو توفير تنفيذ محمول مستقل عن نظام التشغيل لـ DTrace مقبول لجميع المستهلكين، بما في ذلك macOS وFreeBSD وOpenBSD وNetBSD وLinux بالإضافة إلى الأنظمة المضمنة.

وصف

قامت شركة Sun Microsystems بتصميم DTrace لتقديم رؤى تشغيلية تسمح للمستخدمين بضبط التطبيقات ونظام التشغيل نفسه واستكشاف أخطائه وإصلاحها.

يكتب المختبرون برامج تتبع (يشار إليها أيضًا باسم البرامج النصية) باستخدام لغة برمجة D (لا ينبغي الخلط بينها وبين لغات البرمجة الأخرى المسماة "D" ). تتضمن اللغة، المستوحاة من C ، وظائف ومتغيرات إضافية خاصة بالتتبع. تشبه برامج D برامج AWK في البنية؛ فهي تتكون من قائمة من مسبار واحد أو أكثر (نقاط القياس)، ويرتبط كل مسبار بعمل. هذه المجسات قابلة للمقارنة بنقطة القطع في البرمجة الموجهة للجوانب . كلما تم استيفاء شرط المسبار، يتم تنفيذ العمل المرتبط به (يُطلق المسبار "إطلاقًا"). قد يطلق المسبار النموذجي عند فتح ملف معين، أو بدء عملية، أو تنفيذ سطر معين من التعليمات البرمجية. قد يحلل المسبار الذي يطلق موقف وقت التشغيل من خلال الوصول إلى مكدس النداء ومتغيرات السياق وتقييم التعبيرات؛ يمكنه بعد ذلك طباعة أو تسجيل بعض المعلومات، أو تسجيلها في قاعدة بيانات، أو تعديل متغيرات السياق. تسمح قراءة وكتابة متغيرات السياق للمجسات بتمرير المعلومات إلى بعضها البعض، مما يسمح لها بتحليل ارتباط الأحداث المختلفة بشكل تعاوني.

لقد تم الاهتمام بشكل خاص بجعل DTrace آمنًا للاستخدام في بيئة الإنتاج. على سبيل المثال، هناك تأثير ضئيل للمجس عند إجراء التتبع، ولا يوجد تأثير على الأداء مرتبط بأي مجسات معطلة؛ وهذا مهم نظرًا لوجود عشرات الآلاف من مجسات DTrace التي يمكن تمكينها. كما يمكن إنشاء مجسات جديدة بشكل ديناميكي.

أمثلة على سطر الأوامر

يمكن استدعاء نصوص DTrace مباشرةً من سطر الأوامر، مما يوفر فحصًا واحدًا أو أكثر وإجراءات كحجج. بعض الأمثلة:

# عمليات جديدة مع الوسائط 
dtrace  -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' 

# الملفات المفتوحة بواسطة العملية 
dtrace  -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }' 

# عدد نداءات النظام حسب البرنامج 
dtrace  -n 'syscall:::entry { @num[execname] = count(); }' 

# عدد نداءات النظام حسب نداء النظام 
dtrace  -n 'syscall:::entry { @num[probefunc] = count(); }' 

# عدد نداءات النظام حسب العملية 
dtrace  -n 'syscall:::entry { @num[pid,execname] = count(); }' 

# حجم القرص حسب العملية 
dtrace  -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' 

# الصفحات التي تم تقسيمها بواسطة العملية 
dtrace  -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }' 

يمكن أيضًا كتابة نصوص برمجية يمكن أن يصل طولها إلى مئات الأسطر، على الرغم من أن عشرات الأسطر فقط مطلوبة عادةً لاستكشاف الأخطاء وإصلاحها وتحليلها. يمكن العثور على أكثر من 200 مثال لنصوص DTrace مفتوحة المصدر في DTraceToolkit، [7] التي أنشأها بريندان جريج (مؤلف كتاب DTrace [8] )، والتي توفر أيضًا توثيقًا وعروضًا توضيحية لكل منها.

المنصات المدعومة

أصبح DTrace متاحًا للاستخدام لأول مرة في نوفمبر 2003، وتم إصداره رسميًا كجزء من Sun's Solaris 10 في يناير 2005. كان DTrace هو المكون الأول لمشروع OpenSolaris الذي تم إصدار كود المصدر الخاص به بموجب ترخيص التطوير والتوزيع المشترك (CDDL).

يعد DTrace جزءًا لا يتجزأ من illumos والتوزيعات ذات الصلة.

DTrace هو جزء قياسي من FreeBSD [9] و NetBSD . [10]

أضافت شركة Apple دعم DTrace في نظام التشغيل Mac OS X 10.5 "Leopard"، بما في ذلك واجهة المستخدم الرسومية المسماة Instruments . [11] تم تضمين أكثر من 40 نصًا برمجيًا لـ DTrace من DTraceToolkit في /usr/bin، [12] بما في ذلك أدوات لفحص إدخال/إخراج القرص (iosnoop) وتنفيذ العملية (execsnoop). على عكس الأنظمة الأساسية الأخرى التي يدعمها DTrace، يحتوي نظام التشغيل Mac OS X على علامة (P_LNOATTACH) قد يضعها البرنامج والتي تمنع تتبع هذه العملية من خلال أدوات تصحيح أخطاء مثل DTrace و gdb . في تنفيذ DTrace الأصلي لنظام التشغيل Mac OS X، قد يؤثر هذا على تتبع معلومات النظام الأخرى، حيث تفشل المجسات غير ذات الصلة التي يجب أن يتم تشغيلها أثناء تشغيل برنامج تم تعيين هذه العلامة عليه في القيام بذلك. [13] عالج تحديث OS X 10.5.3 هذه المشكلة بعد بضعة أشهر. [14] ومع ذلك، منذ El Capitan، تمنع حماية سلامة النظام المستخدم من DTracing الثنائي المحمي افتراضيًا.

يتوفر منفذ Linux الخاص بـ DTrace منذ عام 2008؛ [ 15 ] ويستمر العمل بنشاط لتحسين وإصلاح المشكلات. يوجد أيضًا تنفيذ نشط على github. يتوفر موفرو النواة القياسيون (fbt وsyscall وprofile)، بالإضافة إلى موفر "instr" خاص (بعض موفري Solaris غير متوفرين حتى عام 2013 ). يعد تنفيذ Linux DTrace عبارة عن وحدة نمطية للنواة قابلة للتحميل ، مما يعني أن النواة نفسها لا تتطلب أي تعديل، وبالتالي يسمح لـ DTrace بتجنب تعارضات ترخيص CDDL مقابل GPL (في شكله المصدر، على الأقل). ومع ذلك، بمجرد تحميل DTrace، سيتم وضع علامة على مثيل النواة على أنه ملوث .

في عام 2007، أعلن أحد المطورين في شركة QNX Software Systems على مدونته أنه وزميل له يعملان على دمج DTrace في نظام التشغيل QNX . [16]

أضافت شركة Oracle Corporation دعمًا تجريبيًا لـ DTrace لنظام Oracle Linux في عام 2011، [1] كمعاينة تقنية في إصدار Unbreakable Enterprise Kernel 2، والذي يخضع لـ GPLv2 (تم إصدار وحدة DTrace Linux kernel في الأصل بموجب CDDL). [17] تم الإعلان عن التوافر العام في ديسمبر 2012. [18] [19]

في 11 مارس 2019، أصدرت Microsoft إصدارها من DTrace لإصدارات Windows 10 Insider. [20]

مقدمو اللغة والتطبيق

مع موفر لغة مدعوم ، يمكن لـ DTrace استرداد سياق الكود، بما في ذلك الوظيفة وملف المصدر وموقع رقم السطر. علاوة على ذلك، يمكن توفير تخصيص الذاكرة الديناميكي وجمع القمامة إذا كانت اللغة تدعم ذلك. [21] تشمل موفرات اللغة المدعومة لغة التجميع [ يحتاج إلى توضيح ] و C و C++ و Java و Erlang و JavaScript و Perl و PHP و Python و Ruby و shell script و Tcl .

يتيح موفرو التطبيقات لـ DTrace متابعة تشغيل التطبيقات من خلال مكالمات النظام وإلى النواة. تشمل التطبيقات التي توفر موفري تطبيقات DTrace MySQL و PostgreSQL و Oracle Database و Oracle Grid Engine و Firefox . [21] [22] [23]

المؤلفون والجوائز

تم تصميم DTrace وتنفيذه بواسطة Bryan Cantrill و Mike Shapiro و Adam Leventhal .

حصل المؤلفون على تقدير في عام 2005 للابتكارات في DTrace من InfoWorld و Technology Review . [24] [25] فاز DTrace بالجائزة الكبرى في مسابقة جوائز الابتكار التكنولوجي لعام 2006 التي نظمتها صحيفة وول ستريت جورنال . [26] تم تكريم المؤلفين من قبل USENIX بجائزة مجموعة مستخدمي أدوات البرمجيات (STUG) في عام 2008. [27]

انظر أيضا

  • eBPF  – واجهة خلفية لتتبع نواة Linux توفر مجموعة من الميزات المشابهة لـ DTrace [28] منذ إصدار نواة 4.9
  • ftrace  – إطار عمل للتتبع لنواة Linux، قادر على تتبع أحداث الجدولة، والمقاطعات، وعمليات الإدخال/الإخراج المخصصة للذاكرة، وانتقالات حالة طاقة وحدة المعالجة المركزية، وما إلى ذلك.
  • ktrace  – أداة مساعدة لنظامي التشغيل BSD Unix وmacOS تتتبع تفاعلات النواة مع البرنامج
  • ltrace  – أداة تصحيح أخطاء Linux، تعرض المكالمات التي يقوم بها تطبيق userland للمكتبات المشتركة
  • strace  – أداة تصحيح أخطاء لنظام Linux، تراقب مكالمات النظام التي يستخدمها البرنامج وجميع الإشارات المستلمة
  • SystemTap  – لغة برمجة وأداة مساعدة تستخدم لتجهيز تثبيتات Linux
  • ل ت ت ن
  • برنامج IBM ProbeVue

مراجع

  • كانتريل، برايان (فبراير 2006). "مخفي في العلن". قائمة انتظار ACM . 4 (1): 26–36. doi : 10.1145/1117389.1117401 . تم الاسترجاع في 2017-12-19 .
  • بريان إم. كانتريل ومايكل دبليو. شابيرو وآدم إتش. ليفينثال (يونيو 2004). الأجهزة الديناميكية لأنظمة الإنتاج. وقائع المؤتمر الفني السنوي لـ USENIX لعام 2004. تم الاسترجاع في 2006-09-08 .

ملحوظات

  1. ^ بواسطة Wim Coekaerts (2011-10-09). "Trying out dtrace". blogs.oracle.com . تم الاسترجاع في 2018-02-15 .
  2. ^ "التفاصيل الداخلية لنظام التشغيل: نظرة تقنية متعمقة على ابتكارات نظام التشغيل - BRK3365". قناة Microsoft Ignite . 2018-10-08.
  3. ^ D'Amore, Garrett (3 أغسطس 2010). "Illumos - Hope and Light Springs Anew - Presented by Garrett D'Amore" (PDF) . illumos.org . تم الاسترجاع في 3 أغسطس 2010 .
  4. ^ "Oracle ستجلب Dtrace إلى Linux". Slashdot . 2011-10-04 . تم الاسترجاع في 2020-11-11 .
  5. ^ [1] "تم ترخيص DTrace الأصلي بموجب ترخيص CDDL الخاص بشركة Sun (الآن Oracle). تم ترك حقوق الطبع والنشر الأصلية كما هي. لم يتم تضمين أي كود GPL في الإصدار، لتجنب النزاعات القانونية."
  6. ^ Wielaard, Mark J. (2018-02-14). "dtrace for linux; Oracle does the right thing". مدونة مارك جيه ويلارد . تم الاسترجاع في 2018-02-14 .
  7. ^ "DTraceToolkit". Brendan Gregg . تم الاسترجاع في 2014-06-08 .
  8. ^ DTrace: التتبع الديناميكي في Oracle Solaris وMac OS X وFreeBSD. Safari Books. 2011. ISBN 978-0132091510. تم أرشفة النسخة الأصلية في 2011-04-06 . تم استرجاعها في 2011-01-03 .
  9. ^ "إعلان عن إصدار FreeBSD 7.1". 2009-01-06 . تم الاسترجاع 2009-01-06 .
  10. ^ "تغييرات مصدر NetBSD، 21 فبراير 2010".
  11. ^ "Mac OS X Leopard - Developer Tools - Instruments". تم أرشفة النسخة الأصلية في 2007-10-24 . تم استرجاعها في 2007-10-19 .
  12. ^ "Mac OS X DTrace". Apple Inc. تم الاسترجاع في 2010-05-31 .
  13. ^ "Mac OS X والمجسات المفقودة". Leventhal, Adam H. 18 يناير 2008. تم الاسترجاع في 20 يناير 2008 .
  14. ^ "Apple Updates DTrace". Leventhal, Adam H. 7 يونيو 2008. تم الاسترجاع في 2008-06-16 .
  15. ^ "صفحة تنزيل أدوات CRiSP". مؤرشف من الأصل في 2020-11-16 . تم الاسترجاع في 2011-03-02 .
  16. ^ "DTrace on QNX!". مدونة Oracle The Observation Deck . 8 نوفمبر (تشرين الثاني) 2007.
  17. ^ Zannoni, Elena; Van Hees, Kris (2012). DTrace on Linux (PDF) . Linux Foundation Collaboration Summit. مؤرشف من الأصل (PDF) في 2014-07-07 . تم الاسترجاع في 2012-04-05 .
  18. ^ Koch, Zeynep (12 ديسمبر 2012). "إعلان: DTrace متاح بشكل عام لنظام Oracle Linux". مدونة Oracle Linux .
  19. ^ كود مصدر وحدة DTrace لنظام Linux [ رابط ميت دائم ]
  20. ^ بولاباكا ، هاري (11 مارس 2019). "DTrace على نظام التشغيل Windows". مجتمع مايكروسوفت التقني .
  21. ^ ab DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD . Prentice Hall . 2011. ص. 1152. ISBN 9780132091510.
  22. ^ "Open Grid Scheduler / Grid Engine Documentation". Open Grid Scheduler . تم الاسترجاع في 30 ديسمبر 2012 .
  23. ^ "DTrace – MDN". Mozilla. مؤرشف من الأصل في 5 سبتمبر 2014. تم الاسترجاع في 30 ديسمبر 2012 .
  24. ^ "برامج التتبع في الوقت الحقيقي". مراجعة التكنولوجيا . معهد ماساتشوستس للتكنولوجيا. 2005. تم الاسترجاع في 31 مارس 2007 .
  25. ^ ماكاليستر، نيل (أغسطس 2005). "الابتكار حي وبصحة جيدة في عام 2005". InfoWorld . IDG. مؤرشف من الأصل في 2005-11-23 . تم الاسترجاع في 2007-03-31 .
  26. ^ توتي، مايكل (سبتمبر 2006). "الفائزون هم..." صحيفة وول ستريت جورنال . شركة داو جونز . تم الاسترجاع في 31 مارس 2007 .
  27. ^ "المؤتمر الفني السنوي لـ USENIX 2008 (USENIX '08)". 2008 . تم الاسترجاع في 2008-11-26 .
  28. ^ "أدوات DTrace" . تم الاسترجاع في 2017-11-27 .
  • أدوات DTrace – أمثلة DTrace لبريندان جريج (2004)
  • DTraceToolkit – مجموعة من نصوص DTrace
  • نصوص كتاب DTrace – نصوص كتاب DTrace على GitHub
  • صفحة FreeBSD DTrace – الصفحة الرئيسية لـ FreeBSD DTrace، تتضمن برنامجًا تعليميًا وسطورًا قصيرة
  • كتاب DTrace
  • دليل DTrace – كتاب Illumos DTrace
  • التتبع الديناميكي باستخدام DTrace وSystemTap – كتاب مجاني يحتوي على أمثلة وتمارين
  • مختبر DTrace العملي – دورة تدريبية خطوة بخطوة لتعلم DTrace
  • برنامج DLight Tutorial – أداة واجهة مستخدم رسومية تفاعلية لمطوري C/C++ تعتمد على تقنية DTrace؛ جزء من Oracle Solaris Studio قبل الإصدار 12.4
  • استكشاف Leopard باستخدام DTrace – DTrace للاستكشاف وتصحيح الأخطاء
  • محاضرة تقنية حول DTrace يقدمها براين كانتريل
  • مخفية أمام أعيننا، شركة صن مايكروسستمز، بقلم بريان كانتريل
  • منفذ Oracle DTrace الرسمي لنظام Linux:
    • تم دمج تصحيحات DTrace مع إصدارات نواة Linux الأخيرة
    • جزء مساحة المستخدم من منفذ DTrace إلى Linux
    • مكتبة تنسيق النوع المضغوط التي يستخدمها DTrace على Linux
  • DTrace على فيدورا
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=DTrace&oldid=1253575391"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate