The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Выход ktap 0.2, системы динамической трассировки для ядра Li..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +/
Сообщение от opennews (??) on 01-Авг-13, 12:25 
Представлен (https://lkml.org/lkml/2013/7/30/869) второй выпуск  проекта ktap (https://github.com/ktap/ktap), в рамках которого развивается новая система динамической трассировки работы ядра Linux, предоставляющая собственный скриптовый язык для создания сценариев. Сценарии могут быть использованы как для автоматизации выявления узких мест, так и для изменения параметров работы ядра. В том числе, скрипты ktap могут использоваться для изменения поведения систем ядра и даже для реализации дополнительной функциональности. Код проекта распространяется (https://github.com/ktap/ktap) под лицензией GPL и оформлен в виде модуля для ядра Linux (поддерживаются ядра начиная с ветки 3.1), не требующего применения дополнительный патчей.


От существующих систем, таких как SystemTap и DTrace, ktap отличается иной архитектурой и другими принципами организации выполнения скриптов трассировки. Скрипты преобразуются (https://github.com/ktap/ktap/blob/master/doc/design.txt) в байткод, загружаемый и выполняемый уже работающим центральным модулем ktap, что не требует сборки и загрузки отдельных модулей ядра из расчёта отдельный модуль для каждого из сценариев трассировки. Байткод выполняется внутри специальной регистровой виртуальной машины ktapvm (подобный подход близок к DTrace и отличается от SystemTap, в котором  используется транслятор). Байткод является универсальным и может быть использован без пересборки в ядрах на системах с различной архитектурой, т.е. скрипт может быть собран и проверен на ПК разработчика и потом выполнен на встраиваемом устройстве на базе другой процессорной архитектуры.

Синтаксис (https://github.com/ktap/ktap/blob/master/doc/syntax.txt) языка сценариев напоминает язык Си и отличается в основном методом объявления переменных (в ktap используются динамические переменные, без явного объявления), поддержкой вместо массивов табличных структур (хэши ключ/значение, позволяющие указывать t["key"] = 10), отсутствием необходимости завершения строки  знаком ';'. Замедление работы ядра при активации ktap не превышает 10%, после интеграции JIT в виртуальную машину ktapvm паразитную нагрузку планируется свести к 3-5%.

В новой версии расширены возможности скриптового языка, добавлен новый синтаксис для определения блоков трассировки (ключевые слова trace и trace_end), задания фильтров трассировки, трассировки функций и использования uprobe/uretprobe. В утилиту ktap добавлны средства для написания однострочников, например, "ktap -e 'trace "syscalls:*" function (e) { print(e) }'". Унифицирован интерфейс для взаимодействия с подсистемой ядра perf. Проведена оптимизация производительности. В дополнение к ранее поддерживаемым  32- и 64-разрядным системам x86, в новом выпуске появилась поддержка архитектур ARM и PowerPC, а также обеспечена возможность работы совместно с ядром preempt-rt.


Из возможностей также отмечается поддержка установки точек трассировки (tracepoints), анализ работы системных вызовов, использование контрольных проверок kprobes, uprobe и kretprobes, отслеживание вызова обработчиков событий от таймера, оценка состояния стека. Для использования в скриптах поставляется встроенная библиотека функций (https://github.com/ktap/ktap/blob/master/doc/library.txt) для упрощения работы с различными низкоуровневыми механизмами трассировки.

URL: https://lkml.org/lkml/2013/7/30/869
Новость: https://www.opennet.ru/opennews/art.shtml?num=37563

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +1 +/
Сообщение от Аноним (??) on 01-Авг-13, 12:25 
Какое-то жалкое подобие DTrace.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  –1 +/
Сообщение от XVilka (ok) on 01-Авг-13, 13:41 
Нигде почему-то не упомянуто, что байткод выполняется в виртуальной машине, 1-в-1 повторяющей виртуальную машину Lua. Сравните https://github.com/lua/lua/blob/master/src/lvm.c и https://github.com/ktap/ktap/blob/master/interpreter/vm.c
Смотреть функции static void ktap_execute(ktap_state *ks) и void luaV_execute (lua_State *L).
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +2 +/
Сообщение от Аноним (??) on 01-Авг-13, 14:03 
Так оно и есть, плюсую
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +3 +/
Сообщение от Прохожий (??) on 01-Авг-13, 14:40 
> Нигде почему-то не упомянуто, что байткод выполняется в виртуальной машине, 1-в-1
> повторяющей виртуальную машину Lua

Ну почему же нигде. На сайте в README.md: "simple but powerful script language(forked by lua, proven to be fast)"

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +/
Сообщение от XVilka (ok) on 01-Авг-13, 16:05 
Да, не заметил :(
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +/
Сообщение от YetAnotherOnanym (ok) on 01-Авг-13, 16:10 
Офигеть, куда Lua пролез...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +1 +/
Сообщение от Аноним (??) on 01-Авг-13, 16:47 
А почему "жалкое"?
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

8. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  –1 +/
Сообщение от Аноним (??) on 01-Авг-13, 17:15 
понятно теперь на чем вирусы для линукса будут писать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +1 +/
Сообщение от Аноним (??) on 01-Авг-13, 17:54 
Вирусы для линукса исторически пишутся на сях.
Но, к сожалению, не работают. И это проблема вызвана не ЯП, а юниксовым механизмом разграничения доступа.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +/
Сообщение от LuaSysDeveloper on 01-Авг-13, 18:47 
(пошел менять работу, с Haskell на Lua!)
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

11. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  –3 +/
Сообщение от Аноним (??) on 01-Авг-13, 19:04 
Нищебродское подделие наперсточников
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

12. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  –1 +/
Сообщение от анончик on 01-Авг-13, 22:41 
> Вирусы для линукса исторически пишутся на сях.
> Но, к сожалению, не работают. И это проблема вызвана не ЯП, а
> юниксовым механизмом разграничения доступа.

работают с привилегиями пользователя

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "Выход ktap 0.2, системы динамической трассировки для..."  +1 +/
Сообщение от arisu (ok) on 02-Авг-13, 01:33 
> работают с привилегиями пользователя

а что, пользователям до сих пор дом и /tmp монтируют без noexec? ну, ССЗБ.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Выход ktap 0.2, системы динамической трассировки для..."  –1 +/
Сообщение от Kott (??) on 02-Авг-13, 03:26 
Зачем дом монтировать в noexec?
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  –1 +/
Сообщение от Андрей (??) on 02-Авг-13, 05:54 
Ограничение доступа?
Где в этом смысл? Мне, как пользователю важно не потерять свои файлы, а не файлы рута/системы.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

16. "Выход ktap 0.2, системы динамической трассировки для..."  +1 +/
Сообщение от arisu (ok) on 02-Авг-13, 13:39 
> Зачем дом монтировать в noexec?

а зачем «обычному юзеру» права на исполнение чего-либо в доме? «обычный юзер» даже скрипты не пишет, у него от одного вида терминала начинается синдром «немоугнеумеюнезнаюнехочудайтекнопачку!»

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

17. "Выход ktap 0.2, системы динамической трассировки для..."  +1 +/
Сообщение от arisu (ok) on 02-Авг-13, 13:41 
> Ограничение доступа?
> Где в этом смысл? Мне, как пользователю важно не потерять свои файлы,
> а не файлы рута/системы.

но при этом ты таки скачал непонятный бинарь из непонятного источника и запустил? сам виноват. система выживет. а неосторожный пользователь… его проблемы. сколько раз говорили же: не тяни в рот что попало!

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "Выход ktap 0.2, системы динамической трассировки для ядра Li..."  +/
Сообщение от Аноним (??) on 09-Авг-13, 05:43 
http://nginx.org/en/docs/nginx_dtrace_pid_provider.html#see_...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Ideco
Hosting by Hoster.ru
Хостинг:

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