Аксиома Кана

Если ничто другое не помогает, прочтите, наконец, инструкцию!

Вини_Пух с Пятачком очень часто заходили в гости к Кролику... ...

СУБД MongoDB переведена на новую лицензию, которая пока не проверена на открытость
Wed, 17 Oct 2018 08:17:28 +0300

Мероприятие по выявлению ошибок в LibreOffice 6.2 alpha 1
Tue, 16 Oct 2018 16:59:06 +0300

Firefox, Chrome, Edge и Safari прекратят поддержку TLS 1.0 и TLS 1.1
Tue, 16 Oct 2018 09:09:56 +0300

Проект KDE получил пожертвование размером 300 тысяч долларов
Mon, 15 Oct 2018 19:32:24 +0300

Открытый проект Bro переименован в Zeek из-за негативной коннотации
Mon, 15 Oct 2018 14:31:08 +0300

Выпуск операционной системы MidnightBSD 1.0
Sat, 13 Oct 2018 19:53:00 +0300

Разработчики Mozilla отложили прекращение доверия к сертификатам Symantec
Fri, 12 Oct 2018 09:25:48 +0300

Организация Linux Foundation выпустила LTSI-ветку на базе ядра Linux 4.14
Fri, 12 Oct 2018 08:52:28 +0300

Компания Microsoft присоединилась к инициативе по защите Linux от патентных претензий
Wed, 10 Oct 2018 19:00:13 +0300

В Fedora 30 решено поставлять по умолчанию сборку Firefox на базе Wayland
Wed, 10 Oct 2018 08:39:46 +0300

В GNOME 3.32 будет прекращена поддержка глобального меню
Tue, 09 Oct 2018 20:21:29 +0300

Влияние несущественных изменений кода на производительность при использовании GCC
Tue, 09 Oct 2018 08:53:30 +0300

Основан проект GoodFORM, который продолжит развитие свободных модулей к СУБД Redis
Mon, 08 Oct 2018 23:13:17 +0300

Google закрывает социальную сеть Google+
Mon, 08 Oct 2018 22:10:38 +0300

В Firefox будет добавлена поддержка формата изображений WebP
Sun, 07 Oct 2018 10:37:39 +0300

Новости OPENNET
Новости

Брендан Грег (Brendan Gregg), один из разработчиков DTrace, объявил об открытии доступа к репозиторию проекта BPFtrace, в рамках которого развивается высокоуровневый язык для написания скриптов динамической отладки и анализа производительности приложений и ядра, продолжающий развитие системы DTrace (позиционируется как DTrace 2.0). Наработки проекта распространяются под лицензией Apache 2.0.

BPFtrace реализован в виде фронтэнда, транслирующего отладочные сценарии в форму приложений eBPF, имеющих доступ к низкоуровневым примитивам ядра для анализа производительности. Для компиляции скриптов BPFtrace в байткод BPF применяется бэкенд на базе LLVM. Язык BPFtrace напоминает AWK и Си, и предоставляет возможности для упрощения трассировки, похожие на DTrace и SystemTap.

eBPF представляет собой встроенный в ядро Linux интерпретатор байткода, позволяющий создавать обработчики сетевых операций, отслеживать работу систем, перехватывать системные вызовы, контролировать доступ, обрабатывать события с сохранением хронометража (perf_event_open), подсчитывать частоту и время выполнения операций, выполнять трассировку с использованием kprobes/uprobes/tracepoints. Благодаря применению JIT-компиляции, байткод на лету транслируется в машинные инструкции и выполняется с производительностью нативного кода. BPFtrace пока ограничен поддержкой платформы Linux, но

ведётся разработка реализации eBPF для FreeBSD, после завершения которой BPFtrace сможет быть портирован на FreeBSD.

BPFtrace позволяет отслеживать поведение системы и выполнять диагностику проблем в режиме реального времени, не влияя в процессе отладки на работу и производительность исследуемых приложений. В сценариях BPFtrace может учитываться разнообразная статистика о подсистемах ядра, процессах, системных вызовах, обрабатываемых файлах, блочном вводе/выводе, сетевой активности, состоянии кэшей, работе планировщика задач, утилизации CPU (например, можно определить какое ядро CPU в данным момент выполняет код) и многих других параметрах.

Возможна привязка скриптов-обработчиков к функциям ядра (kprobe:vfs_read), функциям в пространстве пользователя (uprobe:/bin/bash:readline), точкам трассировки в ядре (tracepoint:sched:sched_switch), программным и аппаратным событиям (software:faults: и hardware:cache-references:). Возможен периодический запуск скриптов для сбора статистики (profile:ms: и interval:ms:). Поддерживается привязка скрипта сразу к нескольким событиям, привязка по маске (kprobe:vfs_*) и определение условий для вызова (kprobe:sys_open / uid == 0 /). Для использования в скриптах предлагается типовой набор функций и библиотека готовых обработчиков на основе BCC (BPF Compiler Collection).

Из возможностей, которые имеются в DTrace и пока отсутствуют в BPFtrace упоминаются средства агрегирования вывода, обработка аргументов для shell, поддержка трансляторов, sizeof() и спекулятивный режим трассировки. Среди функциональности, которая есть в BPFtrace, но недоступна в DTrace отмечается поддержка сохранения и извлечения трассировок стека с использованием переменных, а также возможность привлечения инструментария bcc для создания сложных сценариев и обработки аргументов.

Эквивалентные вызовы в DTrace и BPFtrace:

Примеры однострочников:


# Отслеживание задержек при чтении данных процессом с PID 181:

bpftrace -e 'kprobe:vfs_read /pid == 30153/ { @start[tid] = nsecs; }
kretprobe:vfs_read /@start[tid]/ { @ns = hist(nsecs - @start[tid]); delete(@start[tid]); }'


# Отображение новых процессов с аргументами их вызова
bpftrace -e 'tracepoint:syscalls:sys_enter_execve { join(args->argv); }'

# Отслеживание файлов, открытых процессами
bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%s %s\n", comm, str(args->filename)); }'

# Подсчёт системных вызовов с группировкой по приложениям
bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'

#  Подсчёт системных вызовов с группировкой по системным вызовам
bpftrace -e 'tracepoint:syscalls:sys_enter_* { @[name] = count(); }'

# Подсчёт системных вызовов с группировкой по процессам
bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[pid, comm] = count(); }'

# Размер данных в байтах, прочитанных процессом
bpftrace -e 'tracepoint:syscalls:sys_exit_read /args->ret/ { @[comm] = sum(args->ret); }'

# Активность обращения процессов к диску;
bpftrace -e 'tracepoint:block:block_rq_issue { printf("%d %s %d\n", pid, comm, args->bytes); }'

# Сведения об обращениях к не выделенным страницам памяти (page fault) с сортировкой по числу обращений; 
bpftrace -e 'software:major-faults:1 { @[comm] = count(); }'

# Сведения об обращениях к не выделенным страницам памяти (page fault) с сортировкой по процессам;
bpftrace -e 'software:faults:1 { @[comm] = count(); }'

# Профилирование стека процесса с PID 189 с частотой 99 Гц.

bpftrace -e 'profile:hz:99 /pid == 189/ { @[ustack] = count(); }'

65.4026 75.6512 0.5827 9.4447

НОВОСТИ: В продуктах Juniper исправлены 22 уязвимости Thu, 11 Oct 2018 11:38:02 +0300

В операционной системе Junos, основанной на FreeBSD и используемой в различных сетевых устройствах компании Juniper, устранено 22 уязвимости. Большинство проблем позволяют удалённо инициировать отказ в обслуживании, вызвав крах как отдельных сервисов (RPD - Routing Protocols Daemon, flowd, jdhcpd, L2ALD, dcd, J-Web, telnetd ), так и ядра системы.

???????@Mail.ru Opera Firefox INFOBOX - хостинг Google Chrome