<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Выход ktap 0.2, системы динамической трассировки для ядра Linux]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=29388</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=29388&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Выход ktap 0.2, системы динамической трассировки для ядра Linux».]]></description>
		<lastBuildDate>Thu, 01 Aug 2013 12:43:05 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Выход ktap 0.2, системы динамической трассировки для ядра Linux]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=356451#p356451</link>
			<description><![CDATA[<p><a href="https://lkml.org/lkml/2013/7/30/869">Представлен</a> второй выпуск проекта <a href="https://github.com/ktap/ktap">ktap</a>, в рамках которого развивается новая система динамической трассировки работы ядра Linux, предоставляющая собственный скриптовый язык для создания сценариев. Сценарии могут быть использованы как для автоматизации выявления узких мест, так и для изменения параметров работы ядра. В том числе, скрипты ktap могут использоваться для изменения поведения систем ядра и даже для реализации дополнительной функциональности. Код проекта <a href="https://github.com/ktap/ktap">распространяется</a> под лицензией GPL и оформлен в виде модуля для ядра Linux (поддерживаются ядра начиная с ветки 3.1), не требующего применения дополнительный патчей. </p><p>От существующих систем, таких как SystemTap и DTrace, ktap отличается иной архитектурой и другими принципами организации выполнения скриптов трассировки. Скрипты <a href="https://github.com/ktap/ktap/blob/master/doc/design.txt">преобразуются</a> в байткод, загружаемый и выполняемый уже работающим центральным модулем ktap, что не требует сборки и загрузки отдельных модулей ядра из расчёта отдельный модуль для каждого из сценариев трассировки. Байткод выполняется внутри специальной регистровой виртуальной машины ktapvm, которая является форком быстрой и эффективной виртуальной машины Lua. Байткод является универсальным и может быть использован без пересборки в ядрах на системах с различной архитектурой, т.е. скрипт может быть собран и проверен на ПК разработчика и потом выполнен на встраиваемом устройстве на базе другой процессорной архитектуры. Применение виртуальной машины для выполнения байткода напоминает подход DTrace и отличается от SystemTap, в котором используется транслятор. </p><p><a href="https://github.com/ktap/ktap/blob/master/doc/syntax.txt">Синтаксис</a> языка сценариев напоминает язык Си и отличается в основном методом объявления переменных (в ktap используются динамические переменные, без явного объявления), поддержкой вместо массивов табличных структур (хэши ключ/значение, позволяющие указывать t[&quot;key&quot;] = 10), отсутствием необходимости завершения строки знаком &#039;;&#039;. Замедление работы ядра при активации ktap не превышает 10%, после интеграции JIT в виртуальную машину ktapvm паразитную нагрузку планируется свести к 3-5%. </p><p>В новой версии расширены возможности скриптового языка, добавлен новый синтаксис для определения блоков трассировки (ключевые слова trace и trace_end), задания фильтров трассировки, трассировки функций и использования uprobe/uretprobe. В утилиту ktap добавлены средства для написания однострочников, например, &quot;ktap -e &#039;trace &quot;syscalls:*&quot; function (e) { print(e) }&#039;&quot;. Унифицирован интерфейс для взаимодействия с подсистемой ядра perf. Проведена оптимизация производительности. В дополнение к ранее поддерживаемым 32- и 64-разрядным системам x86, в новом выпуске появилась поддержка архитектур ARM и PowerPC, а также обеспечена возможность работы совместно с ядром preempt-rt. </p><p>Из возможностей также отмечается поддержка установки точек трассировки (tracepoints), анализ работы системных вызовов, использование контрольных проверок kprobes, uprobe и kretprobes, отслеживание вызова обработчиков событий от таймера, оценка состояния стека. Для использования в скриптах поставляется встроенная <a href="https://github.com/ktap/ktap/blob/master/doc/library.txt">библиотека функций</a> для упрощения работы с различными низкоуровневыми механизмами трассировки.</p><p>Источник - <a href="http://www.opennet.ru/opennews/art.shtml?num=37563">http://www.opennet.ru/opennews/art.shtml?num=37563</a></p>]]></description>
			<author><![CDATA[null@example.com (Драко Стаарн)]]></author>
			<pubDate>Thu, 01 Aug 2013 12:43:05 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=356451#p356451</guid>
		</item>
	</channel>
</rss>
