ДТрейс
Оригинальный автор(ы) | Брайан Кэнтрилл , Адам Левенталь , Майк Шапиро ( Sun Microsystems ) |
---|---|
Разработчик(и) | Сан Микросистемс , Оракл , Майкрософт |
Первоначальный выпуск | январь 2005 г |
Репозиторий | github |
Написано в | С |
Операционная система | Solaris , Illumos , macOS , FreeBSD , NetBSD , Linux , [1] Окна [2] |
Тип | Отслеживание |
Лицензия | CDDL , GPLv2 , УПЛ |
Веб-сайт | dtrace |
DTrace — это комплексная среда динамической трассировки , изначально созданная Sun Microsystems для устранения проблем ядра и приложений в производственных системах в режиме реального времени. Первоначально разработанный для Solaris , он с тех пор был выпущен под бесплатной общей лицензией на разработку и распространение (CDDL) в OpenSolaris и его потомке illumos , а также был портирован на несколько других Unix-подобных систем.
DTrace можно использовать для получения глобального обзора работающей системы, например объема памяти, времени процессора, файловой системы и сетевых ресурсов, используемых активными процессами. Он также может предоставить гораздо более подробную информацию, например журнал аргументов, с которыми вызывается определенная функция, или список процессов, обращающихся к определенному файлу.
В 2010 году корпорация Oracle приобрела Sun Microsystems и объявила о прекращении поддержки OpenSolaris. В результате усилий сообщества некоторых основных инженеров Solaris по созданию Solaris с действительно открытым исходным кодом illumos операционная система была анонсирована на вебинаре в четверг, 3 августа 2010 г. [3] как ответвление консолидации OpenSolaris OS/Net, включая технологию DTrace.
В октябре 2011 года Oracle объявила о портировании DTrace на Linux . [4] а в 2019 году официальный DTrace для Fedora доступен на GitHub . В течение нескольких лет был доступен неофициальный порт DTrace для Linux без изменений условий лицензирования. [5]
В августе 2017 года Oracle выпустила код ядра DTrace под лицензией GPLv2+ и пользовательского пространства код под лицензией GPLv2 и UPL . [6] В сентябре 2018 года Microsoft объявила, что перенесла DTrace с FreeBSD на Windows. [2]
началась работа над OpenDTrace В сентябре 2016 года на GitHub с кодом и подробной документацией внутреннего устройства системы. Проект OpenDTrace сохраняет исходное лицензирование CDDL для кода OpenSolaris с дополнительным кодом, подпадающим под лицензию BSD 2 . Цель OpenDTrace — предоставить независимую от ОС переносимую реализацию DTrace, приемлемую для всех потребителей, включая macOS, FreeBSD, OpenBSD, NetBSD и Linux, а также встраиваемые системы.
Описание
[ редактировать ]Компания Sun Microsystems разработала DTrace, чтобы предоставлять оперативную информацию, которая позволяет пользователям настраивать и устранять неполадки приложений и самой ОС.
Тестировщики пишут программы трассировки (также называемые сценариями), используя язык программирования D (не путать с другими языками программирования, называемыми «D» ). Язык, вдохновленный C , включает в себя дополнительные функции и переменные, специфичные для трассировки. Программы D AWK по структуре напоминают программы ; они состоят из списка из одного или нескольких зондов (инструментальных точек), и каждый зонд связан с действием. Эти пробы можно сравнить с точечным разрезом в аспектно-ориентированном программировании . Всякий раз, когда условие для зонда выполняется, соответствующее действие выполняется («зонд срабатывает»). Типичный зонд может срабатывать при открытии определенного файла, запуске процесса или выполнении определенной строки кода. Запускаемый зонд может анализировать ситуацию во время выполнения, обращаясь к стеку вызовов и переменным контекста и оценивая выражения; затем он может распечатать или зарегистрировать некоторую информацию, записать ее в базу данных или изменить переменные контекста. Чтение и запись контекстных переменных позволяет зондам передавать информацию друг другу, что позволяет им совместно анализировать корреляцию различных событий.
Особое внимание было уделено обеспечению безопасности использования DTrace в производственной среде. Например, влияние пробы во время трассировки минимально, а отключенная проверка не влияет на производительность; это важно, поскольку существуют десятки тысяч зондов DTrace, которые можно включить. Новые зонды также можно создавать динамически.
Примеры командной строки
[ редактировать ]Сценарии DTrace можно вызывать непосредственно из командной строки, предоставляя в качестве аргументов один или несколько тестов и действий. Несколько примеров:
# 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 примеров сценариев DTrace с открытым исходным кодом можно найти в DTraceToolkit. [7] создан Бренданом Греггом (автором книги DTrace) [8] ), который также предоставляет документацию и демонстрации каждого из них.
Поддерживаемые платформы
[ редактировать ]DTrace впервые стал доступен для использования в ноябре 2003 года и был официально выпущен как часть Sun Solaris 10 в январе 2005 года. DTrace был первым компонентом проекта OpenSolaris , исходный код которого был выпущен под лицензией Common Development and Distribution License (CDDL).
DTrace является неотъемлемой частью Illumos и связанных с ним дистрибутивов.
DTrace — стандартная часть FreeBSD. [9] и НетБСД . [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 . В исходной реализации Mac OS X DTrace это могло повлиять на отслеживание другой системной информации, поскольку несвязанные зонды, которые должны запускаться во время работы программы с этим установленным флагом, не могли этого сделать. [13] Обновление OS X 10.5.3 решило эту проблему несколько месяцев спустя. [14] Однако, начиная с El Capitan, защита целостности системы по умолчанию не позволяет пользователю использовать защищенный двоичный файл DTracing.
Порт DTrace для Linux доступен с 2008 года; [15] продолжается активная работа по улучшению и устранению проблем. Также есть активная реализация на github . Доступны стандартные основные поставщики (fbt, syscall, Profile), а также специальный поставщик «instr» (некоторые поставщики Solaris еще недоступны по состоянию на 2013 г.). [update]). Реализация Linux DTrace представляет собой загружаемый модуль ядра , что означает, что само ядро не требует никаких изменений и, таким образом, позволяет DTrace избежать конфликтов лицензирования CDDL и GPL (по крайней мере, в исходной форме). Однако после загрузки DTrace экземпляр ядра будет помечен как испорченный .
В 2007 году разработчик из QNX Software Systems объявил в своем блоге, что он и его коллега работают над включением DTrace в операционную систему QNX . [16]
Корпорация Oracle добавила поддержку бета-версии DTrace для Oracle Linux в 2011 году. [1] в качестве предварительной версии технологии в выпуске 2 Unbreakable Enterprise Kernel , который находится под лицензией GPLv2 (модуль ядра DTrace Linux изначально был выпущен под лицензией CDDL). [17] О общей доступности было объявлено в декабре 2012 года. [18] [19]
11 марта 2019 года Microsoft выпустила сборку DTrace для инсайдерских сборок Windows 10. [20]
Поставщики языков и приложений
[ редактировать ]При наличии поддерживаемого поставщика языка DTrace может получить контекст кода, включая функцию, исходный файл и расположение номера строки. Кроме того, могут быть доступны динамическое распределение памяти и сборка мусора, если они поддерживаются языком. [21] Поддерживаемые поставщики языков включают ассемблер. [ нужны разъяснения ] , C , C++ , Java , Erlang , JavaScript , Perl , PHP , Python , Ruby , сценарий оболочки и Tcl .
Поставщики приложений позволяют DTrace отслеживать работу приложений через системные вызовы и в ядре. Приложения, которые предлагают поставщики приложений DTrace, включают MySQL , PostgreSQL , Oracle Database , Oracle Grid Engine и Firefox . [21] [22] [23]
Авторы и награды
[ редактировать ]DTrace был разработан и реализован Брайаном Кантрилом , Майком Шапиро и Адамом Левенталем .
Авторы получили признание в 2005 году за инновации в DTrace от InfoWorld и Technology Review . [24] [25] DTrace выиграла главный приз на The Wall Street Journal . конкурсе Technology Innovation Awards 2006, проводимом [26] Авторы были отмечены USENIX наградой Software Tools User Group (STUG) в 2008 году. [27]
См. также
[ редактировать ]- eBPF — серверная часть трассировки ядра Linux, предоставляющая набор функций, аналогичных DTrace. [28] начиная с версии ядра 4.9
- ftrace — платформа трассировки для ядра Linux, способная отслеживать события планирования, прерывания, ввод-вывод с отображением в памяти, переходы между состояниями питания процессора и т. д.
- ktrace - утилита BSD для Unix и macOS, которая отслеживает взаимодействие ядра и программы.
- ltrace — утилита отладки Linux, отображает вызовы пользовательского приложения к общим библиотекам.
- strace — утилита отладки для Linux, отслеживает системные вызовы, используемые программой, и все полученные сигналы.
- SystemTap — язык сценариев и утилита, используемая для инструментирования установок Linux.
- ЛТТнг
- IBM ProbeVue
Ссылки
[ редактировать ]- Кантрилл, Брайан (февраль 2006 г.). «Спрятано на виду» . Очередь АКМ . 4 (1): 26–36. дои : 10.1145/1117389.1117401 . Проверено 19 декабря 2017 г.
- Брайан М. Кантрилл, Майкл В. Шапиро и Адам Х. Левенталь (июнь 2004 г.). Динамическое инструментирование производственных систем . Материалы USENIX ежегодной технической конференции 2004 г. Проверено 8 сентября 2006 г.
Примечания
[ редактировать ]- ^ Jump up to: а б Вим Кукартс (9 октября 2011 г.). «Пробываем dtrace» . blogs.oracle.com . Проверено 15 февраля 2018 г.
- ^ Jump up to: а б «Внутреннее устройство ОС: Технический обзор инноваций операционной системы — BRK3365» . Канал Microsoft Ignite . 08.10.2018.
- ^ Д'Амор, Гаррет (3 августа 2010 г.). «Иллюмос - Надежда и свет рождаются заново - Представлено Гарретом Д'Амором» (PDF) . иллюмос.орг . Проверено 3 августа 2010 г.
- ^ «Oracle внедрит Dtrace в Linux» . Слэшдот . 04.10.2011 . Проверено 11 ноября 2020 г.
- ^ [1] «Оригинальный DTrace лицензируется по лицензии Sun (теперь Oracle) CDDL. Первоначальные авторские права сохранены. В выпуск не включен код GPL, чтобы избежать юридических конфликтов».
- ^ Вилаард, Марк Дж. (14 февраля 2018 г.). «dtrace для Linux; Oracle поступает правильно» . Блог Марка Дж. Вилаарда . Проверено 14 февраля 2018 г.
- ^ «DTraceToolkit» . Брендан Грегг . Проверено 8 июня 2014 г.
- ^ DTrace: динамическая трассировка в Oracle Solaris, Mac OS X и FreeBSD . Книги о сафари . 2011. ISBN 978-0132091510 . Архивировано из оригинала 6 апреля 2011 г. Проверено 3 января 2011 г.
- ^ «Объявление о выпуске FreeBSD 7.1» . 6 января 2009 г. Проверено 6 января 2009 г.
- ^ «Изменения исходного кода NetBSD, 21 февраля 2010 г.» .
- ^ «Mac OS X Leopard — Инструменты разработчика — Инструменты» . Apple Inc. Архивировано из оригинала 24 октября 2007 г. Проверено 19 октября 2007 г.
- ^ «Mac OS X DTrace» . Apple Inc. Проверено 31 мая 2010 г.
- ^ «Mac OS X и пропавшие зонды» . Левенталь, Адам Х. 18 января 2008 г. Проверено 20 января 2008 г.
- ^ «Обновления Apple DTrace» . Левенталь, Адам Х. 7 июня 2008 г. Проверено 16 июня 2008 г.
- ^ «Страница загрузки инструментов CRISP» . Архивировано из оригинала 16 ноября 2020 г. Проверено 2 марта 2011 г.
- ^ «DTrace на QNX!» . Oracle Блог смотровой площадки . 8 ноября 2007 г.
- ^ Заннони, Елена; Ван Хис, Крис (2012). DTrace в Linux (PDF) . Саммит по сотрудничеству Linux Foundation. Архивировано из оригинала (PDF) 7 июля 2014 г. Проверено 5 апреля 2012 г.
- ^ Кох, Зейнеп (12 декабря 2012 г.). «Объявление: общедоступная версия DTrace для Oracle Linux» . Блог Oracle Linux .
- ^ Исходный код модуля DTrace для Linux [ постоянная мертвая ссылка ]
- ^ Пулапака, Хари (11 марта 2019 г.). «DTrace в Windows» . Техническое сообщество Microsoft .
- ^ Jump up to: а б DTrace: динамическая трассировка в Oracle Solaris, Mac OS X и FreeBSD . Прентис Холл . 2011. с. 1152. ИСБН 9780132091510 .
- ^ «Документация по планировщику Open Grid/Grid Engine» . Откройте планировщик сетки . Проверено 30 декабря 2012 г.
- ^ «DTrace – MDN» . Мозилла. Архивировано из оригинала 5 сентября 2014 года . Проверено 30 декабря 2012 г.
- ^ «Программное обеспечение для отслеживания в реальном времени» . Обзор технологий . Массачусетский технологический институт. 2005 . Проверено 31 марта 2007 г.
- ^ Макаллистер, Нил (август 2005 г.). «Инновации живы и процветают в 2005 году» . Инфомир . ИДГ. Архивировано из оригинала 23 ноября 2005 г. Проверено 31 марта 2007 г.
- ^ Тотти, Майкл (сентябрь 2006 г.). «Победители…» The Wall Street Journal . Доу Джонс и компания, Инк . Проверено 31 марта 2007 г.
- ^ «Ежегодная техническая конференция USENIX 2008 (USENIX '08)» . 2008 год . Проверено 26 ноября 2008 г.
- ^ «Инструменты DTrace» . Проверено 27 ноября 2017 г.
Внешние ссылки
[ редактировать ]- DTrace Tools - примеры DTrace Брендана Грегга (2004 г.)
- Страница FreeBSD DTrace — домашняя страница FreeBSD DTrace, включает руководство и однострочники.
- Книга DTrace. Архивировано 7 ноября 2013 г. на archive.today . Включает сотни примеров сценариев.
- Руководство по DTrace – книга Illumos DTrace
- Динамическая трассировка с помощью DTrace и SystemTap – бесплатная книга с примерами и упражнениями
- Скрипты книг DTrace — сценарии книг DTrace на GitHub
- DTraceToolkit — набор скриптов DTrace.
- DTrace Hands On Lab – пошаговый курс изучения DTrace
- DLight Tutorial – интерактивная утилита с графическим интерфейсом для разработчиков C/C++, основанная на технологии DTrace; часть Oracle Solaris Studio до версии 12.4
- Исследование Leopard с помощью DTrace – DTrace для отладки и исследования.
- Технический доклад о DTrace, проведенный Брайаном Кэнтрилом
- «Спрятано на виду» , Sun Microsystems, Брайан Кэнтрилл
- На dtrace.org размещены блоги разработчиков программного обеспечения, связанные с DTrace.
- Официальный порт Oracle DTrace для Linux:
- DTrace в Fedora