СистемаTap

Язык и инструмент сценариев
СистемаTap
Первоначальный выпуск2005 ( 2005 )
Стабильный релиз
5.2 / 8 ноября 2024 г. ; 54 дня назад ( 2024-11-08 )
Репозиторий
  • исходное ПО.org/git/systemtap.git
Написано вС , С++
Операционная системаЛинукс
ТипТрассировка языка программирования
ЛицензияСтандартная общественная лицензия GNU
Веб-сайтsourceware.org/systemtap/

В вычислительной технике SystemTap ( stap ) — это язык сценариев и инструмент для динамического инструментирования работающих производственных операционных систем на базе Linux . Системные администраторы могут использовать SystemTap для извлечения, фильтрации и суммирования данных с целью диагностики сложных проблем производительности или функциональности.

SystemTap состоит из бесплатного программного обеспечения с открытым исходным кодом и включает в себя вклады от Red Hat , IBM , Intel , Hitachi , Oracle , Университета Висконсин-Мэдисон и других членов сообщества. [1]

История

SystemTap дебютировал в 2005 году в Red Hat Enterprise Linux 4 Update 2 в качестве предварительной версии технологии. [2]

После четырех лет разработки SystemTap 1.0 был выпущен в 2009 году. [3]

По состоянию на 2011 год [обновлять]SystemTap полностью поддерживается во всех дистрибутивах Linux, включая RHEL / CentOS 5 [4] начиная с обновления 2, SLES 10 [5] , Fedora, Debian и Ubuntu.

Точки трассировки в CPython VM и JVM были добавлены в SystemTap 1.2 в 2009 году. [6]

В ноябре 2019 года в SystemTap 4.2 был включен экспортер Prometheus .

Использование

Файлы SystemTap написаны на языке SystemTap [7] (сохранены как .stpфайлы) и запускаются с помощью stapкомандной строки. [8]

Система выполняет ряд проходов анализа скрипта, прежде чем разрешить его запуск. Скрипты могут быть выполнены с одним из трех бэкэндов, выбранных опцией --runtime=. По умолчанию используется загружаемый модуль ядра , который имеет самые полные возможности для проверки и управления любой частью системы и, следовательно, требует наибольших привилегий. Другой бэкэнд основан на библиотеке динамического анализа программ DynInst для инструментирования только собственных программ пользовательского пространства пользователя и требует наименьших привилегий. Новейший бэкэнд [9] основан на байт-коде eBPF , ограничен возможностями интерпретатора ядра Linux и требует промежуточного уровня привилегий. В каждом случае модуль выгружается после завершения выполнения скрипта.

Скрипты обычно фокусируются на событиях (таких как запуск или завершение скрипта), скомпилированных контрольных точках, таких как «точки трассировки» Linux, или на выполнении функций или операторов в ядре или пользовательском пространстве.

Некоторые скрипты "guru mode" также могут иметь встроенный C, который может запускаться с -gпараметром командной строки. Однако использование guru mode не рекомендуется, и каждый выпуск SystemTap включает больше точек проверки, разработанных для устранения необходимости в скриптах guru-mode. Guru mode требуется для того, чтобы скрипты могли изменять состояние в инструментированном программном обеспечении, например, для применения некоторых типов экстренных исправлений безопасности.

Начиная с версии SystemTap 1.7, программное обеспечение реализует новую группу stapsys и уровень привилегий. [10]

Простые примеры

Следующий скрипт показывает все приложения, устанавливающие параметры сокета TCP в системе, какие параметры устанавливаются и успешно ли устанавливается параметр.

# Показать параметры настройки сокетов# Возвращает включено или выключено на основе значения optval function getstatus ( optval ) { if ( optval == 1 ) return "включение" else return "отключение" }            probe begin { print ( "\nПроверка приложений, устанавливающих параметры сокета\n" ) }  # Задать параметр сокета probe tcp . setsockopt { status = getstatus ( user_int ( $ optval )) printf ( " Приложение '%s' (PID %d) имеет параметр сокета %s... " , execname () , pid () , status , optstr ) } # Проверить, сработала ли настройка параметра сокета probe tcp . setsockopt . return { if ( ret == 0 ) printf ( "success" ) else printf ( "failed" ) printf ( "\n" ) }                                конец зонда { print ( "\nЗакрытие\n" ) } 

Многие другие примеры поставляются с SystemTap. [11] На странице «Военные истории» также есть реальные примеры использования SystemTap. [12]

Импорт скриптов из других технологий трассировки

SystemTap может присоединяться к маркерам DTrace , когда они скомпилированы в приложение с использованием макросов из sys/sdt.hзаголовочного файла.

Смотрите также

Ссылки

  1. ^ "Обновление SystemTap". LWN.net .
  2. ^ "Документация по продукту Red Hat Enterprise Linux". Red Hat .
  3. ^ "Джош Стоун - SystemTap релиз 1.0".
  4. ^ "Документация по продукту". Red Hat .
  5. ^ "Необязательное обновление для SystemTap". Novell . 10 октября 2006 г.
  6. ^ "Features/SystemtapStaticProbes - FedoraProject". Fedoraproject.
  7. ^ «Справочник языка SystemTap».
  8. ^ Сравните Romans, Robb (2009). "SystemTap Language Reference: Руководство по конструкциям и синтаксису, используемым в скриптах SystemTap". Red Hat: 4. CiteSeerX 10.1.1.172.5186 . SystemTap [...] требует привилегий root для фактического запуска объектов ядра, которые он создает с помощью команды sudo, применяемой к программе staprun. [...] staprun является частью пакета SystemTap, предназначенного для загрузки и выгрузки модулей и передачи данных от ядра к пользователю.  {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  9. ^ Мерей, Аарон (2017-10-18). "systemtap 3.2 release" . Получено 2017-10-18 . Команда systemtap объявляет о выпуске 3.2 [...] ранний экспериментальный бэкэнд eBPF (расширенный Berkeley Packet Filter) [...][ постоянная мертвая ссылка ‍ ]
  10. ^ Эйглер, Фрэнк Ч. (2012-02-01). "systemtap 1.7 release" . Получено 2013-03-26 . Команда systemtap объявляет о выпуске 1.7 [...] Добавлены новая группа и уровень привилегий "stapsys" [...]
  11. ^ «Примеры SystemTap».
  12. ^ «WarStories — Systemtap Wiki».
  • Официальный сайт
  • СистемаTap Wiki
  • Справочник языка SystemTap (PDF)
  • Анализ проекта SystemTap от Ohloh
  • Динамическая трассировка с помощью DTrace и SystemTap
  • Учебник Systemtap Фрэнк Ч. Эйглер
  • SystemTap Руководство для начинающих Дон Доминго, Уильям Коэн
  • Решение проблем с помощью Systemtap, симпозиум Ottawa Linux, архив 2008-09-13 на Wayback Machine 2006
  • Решение проблем с помощью SystemTap Архивировано 22.02.2012 на Wayback Machine , Юджин Тео, представлено на Red Hat Summit 2007 (сценарии)
  • Динамическая трассировка и анализ производительности с использованием SystemTap, Джошуа Стоун, представлено на конференции LinuxWorld 2008
  • Учебное пособие по SystemTap, Джим Кенистон, представленное на конференции Linux Plumbers Conference 2008 г.
Взято с "https://en.wikipedia.org/w/index.php?title=SystemTap&oldid=1256260298"