Евгений Ильин
Познай себя и познай своего врага.
Тогда в сотне битв ты не будешь знать поражения.
Сан дзу. Искусство войны
Снять гипс с «клиента» без «шума и пыли», можно, как известно,
несколькими способами. Если говорить о трассировке, DTrace предлагает свой,
элегантный метод добраться до бриллиантов, где бы они ни были спрятаны в
системе.
Недавно я делал презентацию об открытых технологиях Sun Microsystems.
Технологий было много и получалось, что обзор каждой должен занимать не более
пяти минут, в том числе и рассказ о таком мощном средстве наблюдения
за системой, каким является DTrace. Чтобы дать аудитории краткое и понятное
представление об этом инструменте, я придумал, как мне кажется, удачную
аналогию: «DTrace – рентген для операционной системы». Ведь как рентген
может «заглянуть» внутрь живого организма, так и DTrace позволяет увидеть
процессы, происходящие внутри операционной системы и пользовательских
приложений. С помощью этой технологии можно получить исчерпывающую информацию о
внутреннем состоянии приложения, причём сам процесс исследования для «пациента»
абсолютно безопасен, так как он не оказывает никакого влияния на
«жизнедеятельность» объекта исследования.
Правда, это не совсем полная аналогия, поскольку
принципы работы DTrace и рентгеновского аппарата отличаются. DTrace получает
информацию от многочисленных датчиков, что находятся в ядре, библиотеках и
приложениях, которые срабатывают только в том случае, когда кто-то включил их в
явном виде. Выключенные датчики не оказывают никакого влияния на
производительность, и система в целом работает так, как будто их вообще нет.
Весь секрет в том, что DTrace умеет динамически модифицировать объект
исследования.
Пожалуй, можно провести еще одну параллель между
DTrace и рентгеном. Для успешного рентгеновского исследования необходимо знание
физиологии, анатомии и устройства рентгеновского оборудования. Аналогично и для
эффективного использования DTrace необходимо понимание принципов работы
операционной системы и устройства инструмента, который позволяет заглянуть
внутрь работающей системы.
В этой статье пойдёт рассказ об архитектуре
DTrace, её составляющих элементах и методологиях модификации системы. Для того
чтобы приведённые примеры были понятны, представлено краткое описание языка
программирования D, который предоставляет универсальный доступ ко всем
возможностям DTrace.