PAPIPerformance Application Programming Interface (PAPI, Прикладной программный интерфейс для анализа производительности) — переносимый интерфейс, реализованный в виде библиотеки, для доступа к счетчикам аппаратной производительности на различных современных микропроцессорах. Он широко применяется для сбора низкоуровневых метрик производительности (например, счетчики инструкций, количество циклов на инструкцию[англ.], промахи кэшей) в компьютерных системах, работающих под операционными системами семейства UNIX или Linux. Библиотека PAPI доступна к использованию из программ на языках Си, C++, Fortran, Java, Matlab[1]. ОписаниеPAPI обеспечивает предопределенные высокоуровневые аппаратные события для наиболее распространенных процессоров и прямой доступ к низкоуровневым естественным событиям множества процессоров. Также поддерживаются мультиплексирование наборов счетчиков и управление переполнением счетчиков для получения периодического сигнала (sampling). Например, библиотека может использоваться для подсчета количества операций над числами с плавающей запятой[2]. ИспользованиеНа базе PAPI реализовано несколько программных систем для изучения производительности программ, в частности[3]:
Поддержка процессоровВ PAPI реализована поддержка событий множества процессоров, в том числе:[3]
Поддержка со стороны операционных системОперационная система должна поддерживать доступ к аппаратным счетчикам, что необходимо для использования PAPI. Например, ядро Linux/x86 может предоставлять доступ к счетчикам при помощи патча драйвера аппаратного мониторинга (perfctr), через драйвер доступа к MSR регистрам (на процессорах семейства x86) или через подсистему perf_events, чтобы появилась поддержка PAPI. В современных ядрах Linux добавлен упрощенный интерфейс perf_events для сходных целей. См. такжеПримечания
Литература
Ссылки
|