Видеть несправедливость и молчать – это значит, самому участвовать в ней

Самолет терпит аварию, в этом самолете всего два парашюта и три мужика, которые спорят, кому же все-таки достанутся парашюты. ...

Госучреждения Южной Кореи планируют перевести на Linux
Mon, 20 May 2019 23:36:17 +0300

Google ограничит доступ Huawei к своим сервисам для Android
Mon, 20 May 2019 08:35:29 +0300

Названы открытые образовательные проекты, получившие 15 млн долларов от фонда XPRIZE
Sun, 19 May 2019 09:39:29 +0300

Cloudflare, Mozilla и Facebook развивают BinaryAST для ускорения загрузки JavaScript
Fri, 17 May 2019 20:13:47 +0300

Microsoft открыл код библиотеки векторного поиска, используемой в Bing
Fri, 17 May 2019 10:18:44 +0300

Фонд свободного ПО сертифицировал звуковые карты и WiFi-адаптеры ThinkPenguin
Fri, 17 May 2019 09:08:30 +0300

Фонд Khronos создаёт рабочую группу по развитию открытых стандартов 3D-коммерции
Thu, 16 May 2019 22:32:19 +0300

В Firefox будут убраны настройки для отключения многопроцессного режима
Thu, 16 May 2019 08:24:50 +0300

Intel развивает открытую прошивку ModernFW и гипервизор на языке Rust
Wed, 15 May 2019 23:41:59 +0300

Проект по избавлению GNOME от ошибок и недоработок, проявляющихся при работе поверх Wayland
Wed, 15 May 2019 12:14:47 +0300

В OpenBSD-CURRENT добавлена утилита sysupgrade для автоматического обновления
Tue, 14 May 2019 00:05:09 +0300

GitHub ввёл в строй реестр пакетов, совместимый с NPM, Docker, Maven, NuGet и RubyGems
Sat, 11 May 2019 15:36:17 +0300

Linux-дистрибутиву MagOS исполнилось 10 лет
Sat, 11 May 2019 06:35:35 +0300

В Chrome появится защита от передачи сторонних Cookie и скрытой идентификации
Fri, 10 May 2019 10:30:06 +0300

Сделка по покупке NGINX компанией F5 Networks успешно завершена
Thu, 09 May 2019 21:30:19 +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(); }'

64.4888 71.9631 0.5856 9.3265

НОВОСТИ: Intel опубликовал редакцию дистрибутива Clear Linux для разработ ... Thu, 16 May 2019 09:21:13 +0300

Компания Intel сообщила о расширении области применения дистрибутива Clear Linux, ранее позиционируемого как специализированное решение для контейнерной изоляции. Новая редакция Clear Linux Developer Edition позволяет использовать дистрибутив на рабочих станциях разработчиков. По умолчанию предлагается рабочий стол GNOME, но опционально доступны KDE Plasma, Xfce, LXQt, Awesome и i3.

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