Perf (Linux) - Perf (Linux)
Репозиторий | https://github.com/torvalds/linux/tree/master/tools/perf |
---|---|
Написано в | C |
Операционная система | Ядро Linux |
Тип | Мониторинг производительности и тестирование |
Лицензия | GNU GPL |
Интернет сайт | перф |
перф (иногда называют perf_events[1] или же инструменты perfизначально Счетчики производительности для Linux, PCL)[2] это анализ производительности инструмент в Linux, Доступна с Ядро Linux версия 2.6.31 в 2009 году.[3] Пространство пользователя управляющая утилита, названная перф
, доступен из командная строка и предоставляет ряд подкоманды; он способен к статистическому профилированию всей системы (как ядра, так и кода пользователя).
Он поддерживает счетчики производительности оборудования, точки трассировки, программные счетчики производительности (например, hrtimer) и динамические зонды (например, kprobes или uprobes).[4] В 2012 году два IBM инженеры признали perf (вместе с OProfile ) как один из двух наиболее часто используемых счетчик производительности инструменты профилирования в Linux.[5]
Выполнение
Интерфейс между утилитой perf и ядром состоит только из одного системный вызов и делается через дескриптор файла и отображенная область памяти.[6] В отличие от LTTng или более старые версии профиль, не обслуживается демоны необходимы, поскольку большая часть функций интегрирована в ядро. Утилита perf выгружает необработанные данные из сопоставленного буфера на диск, когда буфер заполняется. По словам Р. Витилло (LBNL ), профилирование, выполняемое с помощью perf, требует очень малых накладных расходов.[6]
По состоянию на 2010 г.[Обновить], архитектуры, обеспечивающие поддержку аппаратных счетчиков, включают x86, PowerPC 64, UltraSPARC (III и IV ), РУКА (v5, v6, v7, Cortex-A8 и -A9 ), Альфа EV56 и SuperH.[4] Использование записей последней ветки,[7] а отслеживание веток реализация доступна в Intel Процессоров с Pentium 4, доступен как патч.[6] Начиная с версии 3.14 Основная линия ядра Linux, выпущенный 31 марта 2014 г., perf также поддерживает рабочий предел средней мощности (RAPL) для измерения энергопотребления, который доступен как функция некоторых процессоров Intel.[8][9][10]
Perf изначально поддерживается во многих популярных дистрибутивах Linux, включая Red Hat Enterprise Linux (с версии 6, выпущенной в 2010 году)[11] и Debian в пакете linux-tools-common (так как его Сжимать версия выпущена в 2011 году).[12]
Подкоманды
perf используется с несколькими подкомандами:
- стат: измерить общее количество событий для отдельной программы или для системы в течение некоторого времени
- верх: верх -подобный динамический просмотр самых горячих функций
- записывать: измерять и сохранять данные выборки для одной программы[13]
- отчет: анализировать файл, сгенерированный функцией perf record; может создавать плоский или графический профиль.[13]
- аннотировать: аннотировать источники или сборку
- расписание: отслеживание / измерение действий и задержек планировщика[14]
- список: список доступных событий
Критика
Документация по perf не очень подробная (по состоянию на 2014 год); например, он не документирует большинство событий и не объясняет их псевдонимы (часто внешние инструменты используются для получения имен и кодов событий[15]).[16] Инструменты Perf также не могут профилировать на основе истинного времени настенных часов.[16]
Безопасность
Подсистема perf ядер Linux от 2.6.37 до 3.8.8 и ядра RHEL6 2.6.32 содержала уязвимость безопасности (CVE -2013-2094 ), который был использован для получения привилегий root локальным пользователем.[17][18] Проблема заключалась в использовании неправильного типа (32-битное int вместо 64-битного) в пути кода проверки event_id.[19]
Смотрите также
- Список инструментов анализа производительности
- OProfile
- Интерфейс программирования приложений производительности
- Профилирование (компьютерное программирование)
Рекомендации
- ^ Винс Уивер, Неофициальная веб-страница Linux Perf Events
- ^ Особенности и накладные расходы на событие Linux perf // Семинар FastPath 2013, Винс Уивер
- ^ Джейк Эдж, Perfcounters добавлены в основную линию, LWN 1 июля 2009 г., "счетчики перфокартона включены в основную ветку во время недавно завершенного окна слияния 2.6.31"
- ^ а б Арнальдо Карвалью де Мело, Инструменты New Linux 'perf', презентация Linux Kongress, сентябрь 2010 г.
- ^ А. Занелла, Р. Арнольд. Оцените производительность Linux на POWER. Анализируйте производительность с помощью инструментов Linux, 12 июня 2012 г. // Техническая библиотека IBM DeveloperWorks
- ^ а б c Роберто А. Витилло (LBNL ). РАЗРАБОТКИ ЭФФЕКТИВНЫХ ИНСТРУМЕНТОВ, 16 июня 2011 г., презентация с конференции «Будущие вычисления в физике элементарных частиц»
- ^ Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32, том 3B: Руководство по системному программированию, часть 2. Intel. Июнь 2009. с. 19-2 т. 3.
- ^ Джейк Эдж (9 апреля 2014 г.). «Множество новых функций производительности». LWN.net. Получено 2014-04-22.
- ^ Джейкоб Пэн (2013-04-02). "Драйвер RAPL (ограничение средней мощности)". LWN.net. Получено 2014-04-22.
- ^ "kernel / git / torvalds / linux.git - дерево исходных текстов ядра Linux". Git.kernel.org. 2014-01-20. Получено 2014-03-31.
- ^ 6.4. Счетчики производительности для инструментов Linux (PCL) и perf // Руководство разработчика RHEL
- ^ "Debian - Подробная информация о пакете linux-tools-2.6.32 в сжатом виде". Packages.debian.org. Получено 2014-03-31.
- ^ а б Урс Фесслерформат файла perf В архиве 2012-12-14 в Wayback Machine, ЦЕРН OpenLab, 2011
- ^ Инго Мольнар, 'perf sched': Утилита для сбора, измерения и анализа задержек и поведения планировщика., 17 сен 2009
- ^ Как отслеживать весь спектр событий производительности процессора // Боян Николич, 2012
- ^ а б Роберт Хаас (PostgreSQL), perf: хорошее, плохое, уродливое // 06 июня 2012 г.
- ^ Майкл Ларабель (15.05.2013). «Использована новая уязвимость ядра Linux». Фороникс.
- ^ корбет (15.05.2013). «Локальная корневая уязвимость в ядре». LWN.
- ^ Джо Дамато (20 мая 2013 г.). «Более пристальный взгляд на недавнюю ошибку повышения привилегий в Linux (CVE-2013-2094)».
внешняя ссылка
- вики Perf на kernel.org
- Арнальдо Карвалью де Мело, Инструменты New Linux 'perf', презентация Linux Kongress, сентябрь 2010 г.
- Профилирование ядра Linux с помощью perf руководство
- Графики поддержки оборудования PMU - проверьте столбец perf_event
- perf Примеры Брендан Грегг