The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Google готовит к открытию систему трассировки XRay

08.05.2016 10:00

Компания Google объявила о скором открытии исходных текстов проекта XRay, в рамках которого развивается система трассировки вызова функций в приложениях, активно используемая для отладки внутренних сервисов Google, таких как BigTable и движка контекстной рекламы. Система примечательна поддержкой динамической активации, позволяющей включать отладочный режим, создающий паразитную нагрузку, только при необходимости, в остальное время практически не создавая накладных расходов. Подобный подход позволяет использовать XRay для отладки высоконагруженных приложений в их естественной рабочей среде, где невозможно применение обычных систем отладки и профилирования.

Основу XRay составляют добавляемые во время компиляции точки перехвата и динамически загружаемая библиотека. В обычном режиме точки перехвата работают как пустые заглушки ("nop sleds"), а библиотека может включаться и выключаться на лету, во время работы приложения. При включении библиотеки заглушки заменяются на вызовы предоставляемых библиотекой обработчиков, выполняющих операции детализированной трассировки. Подлежащие трассировке функции помечаются в исходных текстах через добавление специальных аннотаций ("__attribute__(...)");

Трассировка достаточно точно отражает все возникающие задержки вызова в условиях работы приложения в промышленной эксплуатации. Для изучения собранных данных подготовлен специальный аналитический инструментарий, в том числе позволяющий наглядно оценить возможные проблемы на графике. В ближайшие недели наработки XRay будут переданы сообществу LLVM.

  1. Главная ссылка к новости (http://google-opensource.blogs...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44387-xray
Ключевые слова: xray, debug, trace, llvm, clang
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (28) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:01, 08/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    Понапридумают же всякой фигни..
    Пока читал заголовок, думал что о рейтрейсинге речь идёт.
     
     
  • 2.2, Аноним (-), 11:37, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тоже
     
  • 2.5, asd (??), 12:13, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • +12 +/
    у меня в голове вообще автоваз всплыл
     
  • 2.12, anonymous (??), 18:07, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >Пока читал заголовок, думал что о рейтрейсинге речь идёт.

    Для моделирования рентгеновских снимков? о_О

     
  • 2.14, Аноним (-), 22:14, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А я подумал о трассировке лучей.
     

  • 1.3, A.Stahl (ok), 11:48, 08/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >>открытии исходных текстов проекта XRay
    >В ближайшие недели наработки XRay будут переданы сообществу LLVM.

    Как это понимать? Откроют только для LLVM или "сообществу LLVM" будет оказана дополнительная помощь при разборе этого кода?

     
     
  • 2.6, Аноним (-), 12:22, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    GCC уже не нужен гуглу.
     
  • 2.11, Аноним (-), 17:35, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    а зачем это GCC ? у них есть высокие идеалы которые запрещают использовать плагины под GPL v2/MIT/BSDL вместе с последними версиями gcc... так что gcc в пролете.
     
     
  • 3.23, all_glory_to_the_hypnotoad (ok), 13:20, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    уже прошло достаточно много времени существования llvm/clang и последнее не очень таки выстрелило, а именно уже сливает не только по среднему качеству кода, но и по скорости компиляции что изначально заявлялась как киллер фича. А какие-нибудь lldb так вообще полные дерьмища и им ещё лет 10 догонать gdb. В общем, помешательство на llvm/clang в скором будущем закончится.
     
     
  • 4.24, Аноним (-), 16:31, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Rust и Swift с вами не согласны
     
  • 4.26, soarin (ok), 18:10, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В общем, помешательство на llvm/clang в скором будущем закончится.

    Ага, фантазируй больше. Всё только начинается ;)

    http://www.phoronix.com/scan.php?page=news_item&px=MTg0MTk

     
     
  • 5.29, all_glory_to_the_hypnotoad (ok), 20:20, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Овощ, ты умеешь читать содержимое ссылок которые даёшь и в особенности дату публикации?
     
     
  • 6.30, soarin (ok), 20:37, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А что то изменилось в худшую сторону для clang?
    PS: особо не надеюсь на здравомыслие, тут редко такое встретишь, обычно фанатизм людям заменяет мозг. И мысли чётко детско-максималистичные. Хотя бывают исключения.
    PSS: естественно читал и ссылки в той статье и комментарии (тогда ещё), да и вообще за этой темой поглядываю.
     
     
  • 7.31, Аноним (-), 21:32, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Добро пожаловать на лор https://www.linux.org.ru/news/gnu/12552668
    результаты измерений в треде
     
     
  • 8.32, soarin (ok), 06:12, 10/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не нашёл там особого здравомыслия Один вообще не понятно какой замер и полтреда... текст свёрнут, показать
     
  • 6.33, iPony (?), 08:55, 10/05/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Овощ

    Фрукт, ну на тебе ещё.
    Если бы полтора года назад google напоролся бы на 'ужасный' clang
    То наверно бы не было вот этого перевода Android NDK c gcc на clang в декабре 2015 года

     

  • 1.4, all_glory_to_the_hypnotoad (ok), 12:08, 08/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Основу XRay составляют добавляемые во время компиляции ... через добавление специальных аннотаций ("__attribute__(...)");

    Сколько же можно плодить такие велосипеды.

     
     
  • 2.7, gogo (?), 13:08, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    у тебя есть альтернатива?
     
     
  • 3.8, all_glory_to_the_hypnotoad (ok), 14:48, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Из известных systemtap, dtrace, lwtrace
     
     
  • 4.9, Аноним (-), 16:19, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Неосиляторы гугла сочли dtrace слишком сложным.
     
  • 2.10, Аноним (-), 16:41, 08/05/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Согласен. Надо через #pragma.
     
  • 2.15, new_name (?), 00:27, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    по-другому невозможно при таком ТЗ.
    вы просто не поняли огромности ее функций. Это круче дебаггеров.
    это как дебаггер со скриптом но вместо интерпретатора скрипта там - скомпилированный код и оно может практич без потерь в производительности работать в продакшене
     
     
  • 3.21, Мяут (ok), 12:59, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > это как дебаггер со скриптом но вместо интерпретатора скрипта там - скомпилированный код и оно может практич без потерь в производительности работать в продакшене

    То есть, DTrace

     
  • 3.22, all_glory_to_the_hypnotoad (ok), 13:15, 09/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > это как дебаггер со скриптом но вместо интерпретатора скрипта там...

    Что ты мне тут эту херь втираешь? Точно так же работают все вышеобозначенные методы. Между ними и топиком есть только одно отличие - отсутствие поддержки со стороны компилятора, т.е. нужно несколько больше ручной работы. Но, с другой стороны, они допускают сложные параметрические пробы.

     

  • 1.27, Аноним (-), 18:40, 09/05/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    хмм, dtrace умеет делать подобное без каких либо указаний компилятору
     
     
  • 2.34, Нанобот (ok), 09:05, 10/05/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    подозреваю, что не всё так просто. dtrace, по-идее, может перехватывать только на границе функций, а если тебе нужно, скажем, один цикл внутри функции померять, то уже и не получится (нужно, чтобы в машинном коде появилось место для внедрения точки перехвата, соответственно нужно компилятору указать, в каких местах nop-инструкции ставить)
     
     
  • 3.35, butcher (ok), 11:36, 10/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Для этого в dtrace можно эти самые точки (пробы) точно так же вставлять в код, компилировать и затем использовать по мере необходимости.
     
  • 3.36, Мяут (ok), 11:39, 10/05/2016 [^] [^^] [^^^] [ответить]  
  • +/
    DTrace умеет это делать для любой инструкции, правда разрешено это для юзерспейсных приложений:

       $ /usr/sbin/dtrace -l -n 'pid$target::main:*'  -c /bin/true

    SystemTap еще умеет к строчкам кода привязываться

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру