Перейти к основному содержимому

Инструменты для анализа производительности и отладки

Инструменты для анализа производительности и отладки

strace — это утилита командной строки для Linux, предназначенная для трассировки системных вызовов и сигналов, позволяющая отслеживать взаимодействие процесса с ядром операционной системы, доступная только на платформе Linux, распространяемая под лицензией GNU General Public License, входящая в стандартный набор инструментов большинства дистрибутивов.

lsof — это консольная утилита для Unix-подобных систем, выводящая список открытых файлов и сетевых соединений, ассоциированных с запущенными процессами, работающая на Linux, macOS и других POSIX-совместимых платформах, распространяемая под лицензией BSD, не требующая дополнительных зависимостей.

tcpdump — это утилита командной строки для перехвата и анализа сетевого трафика в реальном времени, использующая библиотеку libpcap для захвата пакетов, доступная на Linux, macOS и других Unix-системах, распространяемая под лицензией BSD, поддерживающая фильтрацию по протоколам, портам и IP-адресам.

perf — это инструмент профилирования производительности ядра Linux и пользовательских приложений, предоставляющий данные о циклах CPU, кэш-промахах, ветвлении и других аппаратных событиях, встроенный в ядро Linux начиная с версии 2.6.31, доступный только на Linux, распространяемый под лицензией GNU General Public License.

Valgrind — это фреймворк для динамического анализа программ на C и C++, обнаруживающий утечки памяти, ошибки использования памяти и гонки данных, работающий на Linux, macOS и некоторых других Unix-системах, распространяемый под лицензией GNU General Public License, использующий интерпретацию и инструментирование машинного кода.

Visual Studio Diagnostic Tools — это встроенный набор инструментов отладки и профилирования в среде разработки Visual Studio, предоставляющий анализ потребления памяти, загрузки CPU, времени выполнения методов и событий сборщика мусора для приложений на .NET, C++ и других языках, доступный только на Windows, включённый в коммерческие и бесплатные (Community) редакции Visual Studio.

dotMemory — это коммерческий инструмент от JetBrains для анализа использования памяти в .NET-приложениях, позволяющий выявлять утечки, исследовать графы объектов и отслеживать давление сборщика мусора, работающий на Windows и macOS, распространяемый по подписке, интегрируемый с Visual Studio и Rider.

dotTrace — это коммерческий профайлер от JetBrains для анализа производительности .NET-приложений, измеряющий время выполнения методов, частоту вызовов и блокировки потоков, доступный на Windows и macOS, распространяемый по подписке, поддерживающий присоединение к работающим процессам и сравнение снапшотов.

YourKit Java Profiler — это коммерческий инструмент профилирования для Java-приложений, предоставляющий детализированные метрики по CPU, памяти, потокам и сборщику мусора, работающий на Windows, macOS и Linux, распространяемый по лицензии с пробным периодом, поддерживающий удалённое профилирование и интеграцию с IDE.

JProfiler — это коммерческий профайлер для Java и Kotlin, разработанный компанией ej-technologies, предлагающий анализ CPU, памяти, потоков, мониторов и баз данных, доступный на Windows, macOS и Linux, распространяемый по лицензии с пробным периодом, интегрируемый с IntelliJ IDEA, Eclipse и другими IDE.

Java VisualVM — это бесплатный инструмент мониторинга и профилирования Java-приложений, входящий в состав JDK до версии 8 и доступный как отдельный проект после этого, предоставляющий информацию о heap, потоках, GC и CPU, работающий на всех платформах с поддержкой Java, распространяемый под лицензией GNU General Public License.

Async Profiler — это open-source профайлер для JVM-приложений, основанный на сборе стеков через сигналы и perf_events, способный строить flame graphs без значительного влияния на производительность, работающий на Linux и macOS, распространяемый под лицензией Apache 2.0, совместимый с OpenJDK и Oracle JDK.

Py-Spy — это утилита с открытым исходным кодом для профилирования Python-процессов без изменения их кода, использующая чтение памяти процесса для получения стеков вызовов, доступная на Linux, macOS и Windows, распространяемая под лицензией MIT, поддерживающая генерацию flame graphs и текстовых отчётов.

cProfile — это модуль стандартной библиотеки Python для профилирования производительности скриптов, измеряющий время выполнения функций и количество вызовов, встроенный в CPython, доступный на всех платформах, где работает Python, распространяемый под лицензией Python Software Foundation License.

memory_profiler — это утилита с открытым исходным кодом для мониторинга потребления памяти Python-скриптами в реальном времени, реализованная как декоратор или модуль командной строки, работающая на всех платформах с Python, распространяемая под лицензией BSD, требующая зависимости psutil.

gdb — это отладчик с открытым исходным кодом из проекта GNU, предназначенный для анализа исполняемых файлов на C, C++ и других языках, поддерживающий пошаговое выполнение, установку точек останова и анализ core-дампов, доступный на Linux, macOS и других Unix-системах, распространяемый под лицензией GNU General Public License.

LLDB — это современный отладчик от проекта LLVM, используемый по умолчанию в Xcode, поддерживающий отладку C, C++, Objective-C и Swift, работающий на macOS, iOS, Linux и других платформах с поддержкой LLVM, распространяемый под лицензией Apache 2.0.

WinDbg — это отладчик от Microsoft для Windows, предназначенный для анализа дампов памяти, отладки ядра и пользовательских режимов, входящий в Windows SDK и Windows Driver Kit, доступный только на Windows, распространяемый бесплатно, поддерживающий расширения и скрипты.

ProcDump — это утилита командной строки от Sysinternals (Microsoft), создающая дампы памяти процессов по заданным условиям, таким как использование CPU или исключения, доступная только на Windows, распространяемая бесплатно, не требующая установки.

Process Explorer — это продвинутый менеджер задач и диагностический инструмент от Sysinternals, показывающий дерево процессов, открытые дескрипторы, DLL и свойства безопасности, доступный только на Windows, распространяемый бесплатно, работающий без установки.

htop — это интерактивный монитор системных ресурсов для Unix-систем, отображающий процессы, загрузку CPU, память и swap в реальном времени с возможностью сортировки и фильтрации, доступный на Linux, macOS и других POSIX-платформах, распространяемый под лицензией GNU General Public License.

vmstat — это стандартная утилита Unix для отображения статистики по виртуальной памяти, процессам, дисковому вводу-выводу и CPU, встроенная в большинство дистрибутивов Linux и BSD, распространяемая под лицензией BSD или GPL в зависимости от реализации.

iostat — это утилита из пакета sysstat для мониторинга статистики дискового ввода-вывода и загрузки CPU, доступная на Linux и других Unix-системах, распространяемая под лицензией GNU General Public License.

dstat — это универсальный заменитель vmstat, iostat, netstat и ifstat, объединяющий метрики системы в одном интерфейсе, работающий на Linux и других Unix-платформах, распространяемый под лицензией GNU General Public License.

Wireshark — это графический анализатор сетевого трафика с открытым исходным кодом, позволяющий детально исследовать пакеты на всех уровнях стека протоколов, доступный на Windows, macOS и Linux, распространяемый под лицензией GNU General Public License, использующий библиотеку libpcap/WinPcap/Npcap.

Prometheus — это система мониторинга и сбора метрик с открытым исходным кодом, основанная на pull-модели, хранящая временные ряды и поддерживающая запросы через язык PromQL, доступная на всех основных платформах, распространяемая под лицензией Apache 2.0, часто используемая вместе с Grafana.

Grafana — это веб-платформа с открытым исходным кодом для визуализации метрик, логов и трассировок, поддерживающая источники данных вроде Prometheus, Loki, Elasticsearch и InfluxDB, доступная на Windows, macOS, Linux и в виде облачного сервиса, распространяемая под лицензией AGPLv3.

OpenTelemetry — это набор инструментов, API и SDK с открытым исходным кодом для сбора телеметрии (трассировка, метрики, логи) из приложений, поддерживаемый Cloud Native Computing Foundation, доступный для множества языков и платформ, распространяемый под лицензией Apache 2.0.

FlameGraph — это инструмент визуализации профилировочных данных в виде иерархических столбчатых диаграмм, разработанный Бренданом Греггом, работающий на основе текстовых стеков вызовов, доступный на всех платформах через Perl-скрипты, распространяемый под лицензией CDDL.

Intel VTune Profiler — это коммерческий инструмент анализа производительности от Intel, оптимизированный для процессоров Intel, предоставляющий детализированные данные по CPU, памяти, потокам и векторизации, доступный на Windows, Linux и macOS, предлагаемый бесплатно для некоммерческого использования.

AMD uProf — это бесплатный профайлер от AMD для анализа производительности CPU и GPU на системах с процессорами AMD, предоставляющий данные по тактам, кэшу, ветвлению и шейдерам, доступный на Windows и Linux, распространяемый бесплатно.

PerfView — это бесплатный инструмент от Microsoft для глубокого анализа производительности .NET-приложений на Windows, основанный на ETW-трассировке, позволяющий исследовать GC, JIT-компиляцию и блокировки, распространяемый как портативное приложение.

eBPF — это технология ядра Linux для безопасного выполнения пользовательского кода в пространстве ядра без изменения самого ядра, используемая для создания высокопроизводительных инструментов мониторинга и отладки, доступная только на Linux, интегрированная в ядро начиная с версии 4.1.

bpftrace — это утилита с открытым исходным кодом для написания однострочных скриптов на основе eBPF, предназначенная для динамической трассировки ядра и пользовательских программ, доступная на Linux, распространяемая под лицензией Apache 2.0.

sysdig — это инструмент мониторинга и отладки систем на Linux, объединяющий функции strace, tcpdump и htop, работающий на основе модуля ядра или eBPF, доступный на Linux, распространяемый под лицензией Apache 2.0, имеющий коммерческую версию Sysdig Secure.

Netdata — это система мониторинга в реальном времени с открытым исходным кодом, отображающая сотни метрик системы и приложений через веб-интерфейс, доступная на Linux, FreeBSD и других Unix-системах, распространяемая под лицензией GPL v3.

Scalene — это профайлер для Python с открытым исходным кодом, разделяющий затраты CPU, GPU и памяти по строкам кода, поддерживающий многопоточность и Jupyter Notebook, доступный на Linux и macOS, распространяемый под лицензией Apache 2.0.

pprof — это инструмент профилирования от Google, встроенный в Go runtime и доступный как отдельная утилита, позволяющий анализировать CPU, память, блокировки и горутины, работающий на всех платформах с поддержкой Go, распространяемый под лицензией BSD.

Chrome DevTools Performance Tab — это встроенный инструмент в браузере Google Chrome для записи и анализа производительности веб-страниц, включая FPS, время выполнения JavaScript, перерисовку и layout, доступный на всех платформах, где работает Chrome, распространяемый бесплатно как часть браузера.

Firefox Profiler — это встроенный профайлер в браузере Firefox, записывающий стеки вызовов JavaScript, C++ и системные события для анализа производительности веб-приложений, доступный на всех платформах, где работает Firefox, распространяемый бесплатно.

Xcode Instruments — это набор инструментов профилирования в составе Xcode от Apple, включающий Allocations, Leaks, Time Profiler и другие, предназначенный для отладки и анализа приложений на iOS и macOS, доступный только на macOS, распространяемый бесплатно.

Android Profiler — это компонент Android Studio для мониторинга CPU, памяти, сети и энергопотребления Android-приложений в реальном времени, доступный на Windows, macOS и Linux, распространяемый бесплатно как часть Android Studio.

JConsole — это графический инструмент мониторинга Java-приложений, входящий в состав JDK, предоставляющий данные по памяти, потокам, классам и MBean, работающий на всех платформах с поддержкой Java, распространяемый под лицензией GNU General Public License.

MAT (Eclipse Memory Analyzer) — это инструмент с открытым исходным кодом для анализа heap-дампов Java-приложений, выявляющий утечки памяти и доминирующие объекты, доступный на Windows, macOS и Linux, распространяемый под лицензией Eclipse Public License.

Heaptrack — это профайлер памяти для Linux с открытым исходным кодом, отслеживающий аллокации и освобождения памяти в C/C++-приложениях, предоставляющий отчёт через Qt-интерфейс, распространяемый под лицензией GNU General Public License.

DTrace — это фреймворк динамической трассировки, разработанный Sun Microsystems, доступный в Solaris, macOS (до Catalina) и некоторых Linux-дистрибутивах через порты, позволяющий отслеживать ядро и пользовательские процессы без перезапуска, распространяемый под лицензией CDDL.

SystemTap — это инструмент динамической инструментации для Linux, позволяющий писать скрипты для мониторинга ядра и приложений, аналогичный DTrace, доступный в основном на RHEL и производных, распространяемый под лицензией GNU General Public License.

OProfile — это система профилирования для Linux, основанная на сэмплировании, работающая на уровне ядра и поддерживающая анализ CPU-событий, доступная на Linux, распространяемая под лицензией GNU General Public License, постепенно заменяется perf.

LTTng (Linux Trace Toolkit Next Generation) — это набор инструментов для низкоуровневой трассировки ядра и пользовательских приложений в Linux с минимальным влиянием на производительность, доступный на Linux, распространяемый под лицензией GNU Lesser General Public License.