DTrace

редактировать
DTrace
Команда DTrace Команда DTrace
Оригинальный автор (ы) Брайан Кантрилл, Адам Левенталь, Майк Шапиро (Sun Microsystems )
Разработчик (и) Oracle, Microsoft
Первоначальный выпускянварь 2005 г.; 15 лет назад (2005-01)
Операционная система Solaris, illumos, macOS, FreeBSD, NetBSD, Linux, Windows
Тип Трассировка
Лицензия CDDL, GPLv2,
Веб-сайтdtrace.org / blogs / about /

DTrace - это комплексная структура динамической трассировки, изначально созданная Sun Microsystems для устранения неполадок проблем ядра и приложений в производственных системах в реальном времени. Первоначально разработанный для Solaris, с тех пор он был выпущен в рамках бесплатной Common Development and Лицензия на распространение (CDDL) в OpenSolaris и его потомке illumos и была перенесено на несколько других Unix-подобных систем.

DTrace можно использовать для получения общего обзора работающей системы, такого как объем памяти, время процессора, файловая система и сетевые ресурсы, используемые активными процессами. Он также может предоставить гораздо более подробную информацию, такую ​​как журнал аргументов, с которыми вызывается конкретная функция, или список процессов, обращающихся к определенному файлу.

В 2010 году корпорация Oracle приобрела Sun Microsystems и объявила о прекращении поддержки OpenSolaris. В рамках усилий сообщества некоторых основных инженеров Solaris по созданию Solaris с действительно открытым исходным кодом illumos операционная система была объявлена ​​на вебинаре в четверг, 3 августа 2010 г. форк консолидации OpenSolaris OS / Net, включая технологию DTrace.

В октябре 2011 года Oracle объявила о переносе DTrace на Linux, но в течение нескольких лет был доступен только неофициальный перенос DTrace на Linux без каких-либо изменений в лицензировании.

В августе 2017 года Oracle выпустила код ядра DTrace по лицензии GPLv2 + и код пользовательского пространства по GPLv2 и лицензированию. В сентябре 2018 года Microsoft объявила о переносе DTrace с FreeBSD на Windows.

В сентябре 2016 года работа над OpenDTrace началась на github с кода и исчерпывающей документации внутренности системы. Работа OpenDTrace поддерживает исходную лицензию CDDL для кода из OpenSolaris с дополнительными кодами, входящими в лицензию BSD 2 Clause. Цель OpenDTrace - предоставить независимую от ОС переносимую реализацию DTrace, приемлемую для всех потребителей, включая macOS, FreeBSD, OpenBSD, NetBSD и Linux, а также встроенные системы.

Содержание

  • 1 Описание
  • 2 Примеры командной строки
  • 3 Поддерживаемые платформы
  • 4 Поставщики языков и приложений
  • 5 Авторы и награды
  • 6 См. Также
  • 7 Ссылки
    • 7.1 Примечания
  • 8 Внешние ссылки

Описание

Sun Microsystems разработала DTrace, чтобы предоставить операционную информацию, которая позволяет пользователям настраивать и устранять неполадки приложений и самой ОС.

Тестировщики пишут программы трассировки (также называемые сценариями), используя язык программирования D (не путать с другими языками программирования, называемыми «D» ). Язык, созданный на основе C, включает добавленные функции и переменные, специфичные для трассировки. Программы D по структуре напоминают программы awk ; они состоят из списка из одного или нескольких датчиков (точек измерения), и каждый датчик связан с действием. Эти датчики сопоставимы с pointcut в аспектно-ориентированном программировании. Каждый раз, когда выполняется условие для датчика, выполняется соответствующее действие (датчик «срабатывает»). Типичный зонд может срабатывать при открытии определенного файла, запуске процесса или выполнении определенной строки кода. Срабатывающий зонд может анализировать ситуацию времени выполнения, обращаясь к стеку вызовов и переменным контекста и оценивая выражения; затем он может распечатать или зарегистрировать некоторую информацию, записать ее в базу данных или изменить переменные контекста. Чтение и запись переменных контекста позволяет зондам передавать информацию друг другу, позволяя им совместно анализировать корреляцию различных событий.

Особое внимание было уделено тому, чтобы сделать 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 (); } '# Счетчик системных вызовов по syscall 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, созданном Бренданом Греггом (автором книги DTrace), который также предоставляет документацию и демонстрацию каждого из них.

Поддерживаемые платформы

DTrace впервые стал доступен для использования в ноябре 2003 г. и был официально выпущен как часть Sun Solaris 10 в январе 2005 г. DTrace был первым компонентом исходный код проекта OpenSolaris будет выпущен под Общей лицензией на разработку и распространение (CDDL).

DTrace в составе распределений illumos и illumos, являясь продолжением OpenSolaris.

DTrace является стандартной частью FreeBSD и NetBSD.

Apple добавила поддержку DTrace в Mac OS X 10.5 «Leopard», включая графический интерфейс под названием Инструменты. В / usr / bin включено более 40 сценариев DTrace из набора DTraceToolkit, включая инструменты для проверки дискового ввода-вывода (iosnoop) и выполнения процессов (execsnoop). В отличие от других платформ, на которых поддерживается DTrace, Mac OS X имеет флаг (P_LNOATTACH), который программа может установить, запрещая отслеживание этого процесса с помощью таких утилит отладки, как DTrace и gdb. В исходной реализации Mac OS X DTrace это могло повлиять на отслеживание другой системной информации, поскольку несвязанные зонды, которые должны запускаться во время работы программы с этим установленным флагом, не смогут этого сделать. Обновление OS X 10.5.3 решило эту проблему несколько месяцев спустя. Однако, начиная с El Capitan, Защита целостности системы по умолчанию запрещает пользователю использовать двоичные файлы, защищенные DTracing.

Порт Linux для DTrace доступен с 2008 года; продолжается активная работа по улучшению и исправлению проблем. Также есть активная реализация на github. Доступны стандартные основные поставщики (fbt, syscall, profile), а также специальный провайдер instr (некоторые из поставщиков Solaris еще не доступны по состоянию на 2013 год). Реализация Linux DTrace представляет собой загружаемый модуль ядра, что означает, что само ядро ​​не требует модификации, и, таким образом, позволяет DTrace избегать конфликтов лицензирования CDDL и GPL (по крайней мере, в исходной форме). Однако после загрузки DTrace экземпляр ядра будет помечен как tainted.

В 2007 году разработчик из QNX Software Systems объявил в своем блоге, что он и его коллеги работают над включением DTrace в QNX.

Корпорация Oracle добавила поддержку бета-версии DTrace для Oracle Linux в 2011 году в качестве предварительной версии технологии в Unbreakable Enterprise Kernel версии 2, находящейся под GPLv2 (модуль ядра DTrace Linux изначально был выпущен на условиях CDDL). Общая доступность была объявлена ​​в декабре 2012 года.

11 марта 2019 года Microsoft выпустила свою сборку DTrace для инсайдерских сборок Windows 10.

Поставщики языков и приложений

With Поддерживаемый поставщик языка, DTrace может извлекать контекст кода, включая функцию, исходный файл и расположение номера строки. Кроме того, могут быть доступны динамическое выделение памяти и сборка мусора, если они поддерживаются языком. Поддерживаемые поставщики языков включают язык ассемблера, C, C ++, Java, Erlang, JavaScript, Perl, PHP, Python, Ruby, сценарий оболочки и Tcl.

Поставщики приложений позволяют DTrace отслеживать работу приложений. через системные вызовы и в ядро. Приложения, которые предлагают поставщиков приложений DTrace, включают MySQL, PostgreSQL, Oracle Database, Oracle Grid Engine и Firefox.

Авторы и награды

DTrace был разработан и реализован Брайаном Кантрилом, Майком Шапиро и Адамом Левенталем.

Авторы получили признание в 2005 году за инновации в DTrace от InfoWorld и Technology Review. DTrace выиграл главный приз конкурса Wall Street Journal за 2006 г. в области технологических инноваций. Авторы были отмечены USENIX наградой Software Tools User Group (STUG) в 2008 году.

См. Также

  • icon Портал компьютерного программирования
  • Портал бесплатного программного обеспечения с открытым исходным кодом
  • eBPF - серверная часть трассировки ядра Linux, обеспечивающая набор функций, аналогичных DTrace начиная с версии ядра 4.9
  • ftrace - среда трассировки для ядра Linux, способная отслеживать события планирования, прерывания, отображаемые в памяти Ввод / вывод, переходы между состояниями питания ЦП и т. Д.
  • ktrace - утилита BSD для Unix и macOS, отслеживающая взаимодействия ядра и программы.
  • ltrace - утилита отладки Linux, отображает вызовы пользовательского приложения делает для разделяемых библиотек
  • strace - утилита отладки для Linux, отслеживает системные вызовы, используемые программой, и все полученные сигналы
  • SystemTap - язык сценариев и утилита, используемые для инструментария установок Linux
  • LTTng
  • IBM ProbeVue ​​

Ссылки

Примечания

Внешние ссылки

Последняя правка сделана 2021-05-16 09:35:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте