<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Выход ktap 0.2, системы динамической трассировки для ядра Linux]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=29388&amp;type=atom" />
	<updated>2013-08-01T12:43:05Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=29388</id>
		<entry>
			<title type="html"><![CDATA[Выход ktap 0.2, системы динамической трассировки для ядра Linux]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=356451#p356451" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Драко Стаарн]]></name>
				<uri>https://linuxforum.ru/profile.php?id=24508</uri>
			</author>
			<updated>2013-08-01T12:43:05Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=356451#p356451</id>
		</entry>
</feed>
