Skip to content
IntelSEAPI
Branch: master
Clone or download
araud Merge pull request #35 from alalek/build_with_aarch64
build: add support for aarch64
Latest commit 88a56e0 Jul 11, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dotnet add Linux and OSX initializers, refactoring, add test tool Jan 21, 2018
driver DGML support Dec 25, 2015
ittnotify build: add support for aarch64 Jul 6, 2019
java
runtool Performance Co-Pilot (http://pcp.io) initial integration Apr 1, 2018
sea_itt_lib Performance Co-Pilot (http://pcp.io) initial integration Apr 1, 2018
wiki
.gitignore add Linux and OSX initializers, refactoring, add test tool Jan 21, 2018
CMakeLists.txt Performance Co-Pilot (http://pcp.io) initial integration Apr 1, 2018
CompilerAutomatedInstrumentation.cpp DTrace support: Context Switches, GPU & Metal tracing Jun 14, 2016
Doxyfile.in Build Doxygen documentation for ittnotify Sep 25, 2017
InstrumentationExample.cpp Call-graph from samples, initial pprof support Apr 15, 2017
README.txt test pull Mar 30, 2018
android.toolchain.cmake first commit Nov 7, 2015
buildall.py Performance Co-Pilot (http://pcp.io) initial integration Apr 1, 2018
itt_notify.hpp JIT profiling support (nodejs), Android tracing from host, SteamVR su… Dec 15, 2016
main.cpp Redesign of OSX GPU/CPU queues Jul 25, 2017
memory.cpp Redesign of OSX GPU/CPU queues Jul 25, 2017
test_dotnet.bat add Linux and OSX initializers, refactoring, add test tool Jan 21, 2018
test_linux.sh Adreno, PowerVR support for Android Jan 28, 2017
test_osx.sh Performance Co-Pilot (http://pcp.io) initial integration Apr 1, 2018
test_win.bat Performance Co-Pilot (http://pcp.io) initial integration Apr 1, 2018

README.txt

-= Welcome to Intel® Single Event API (Intel® SEAPI)! =-

Before reading further please visit wiki to see examples of visualization. https://github.com/01org/IntelSEAPI/wiki

Intel® SEAPI is the translator of itt_notify calls into several OS specific and third party tracing formats.
You can use it as memory/performance/whatever profiler.

itt_notify is open-source cross-platform plain C library for instrumentation of C/C++ code with tasks/markers/counters/etc...
Some documentation can be found here: https://software.intel.com/en-us/node/544201
For usage examples please see https://github.com/01org/IntelSEAPI/blob/master/InstrumentationExample.cpp and https://github.com/01org/IntelSEAPI/blob/master/memory.cpp of Intel® SEAPI package

After your code is instrumented with itt, to load up the library follow these steps:
    On Windows and Linux:
        Set environment variable INTEL_LIBITTNOTIFY32/INTEL_LIBITTNOTIFY64 to the full path to the IntelSEAPI[32/64].[dll/so]
    On OSX:
        Set environment variable DYLD_INSERT_LIBRARIES to the full path to the libIntelSEAPI.dylib
    On Android:
        Write path to libIntelSEAPI[32/64].so in one of these two files:
            System wide: /data/local/tmp/com.intel.itt.collector_lib_[32/64]
            Per package: /data/data/<package_name>/com.intel.itt.collector_lib_[32/64]
        Write save path to file: /data/local/tmp/com.intel.sea.save_to
OR you can use sea_runtool.py, see examples in test_<OS>.<bat/sh>

Bulding:
    Make sure you have cmake (https://cmake.org) in PATH
    All platforms except Android:
        >> python buildall.py -i
        this will produce installer
        on Windows requires Visual Studio 2013 and NSIS (http://nsis.sourceforge.net) installed
        for Yocto just run this script in the Yocto build environment
    Android:
        requires ANDROID_NDK to be set in environment to the Android NDK path
        >> python buildall.py -a
        this will produce .so to be put into your application folder manually
        on windows requires Ninja (https://github.com/ninja-build/ninja/releases) to be in PATH

Open Source Intel® SEAPI currently supports these formats:

* Windows Performance Analyzer - Windows (ETW): https://msdn.microsoft.com/en-us/library/windows/hardware/hh448170.aspx
    Cons: Only immediate tasks, markers and counters are supported (currently).
    Pros: correlation with all system metrics (more than 6 hundred providers)
    To enable:
        Use wprui.exe from 'Windows Kits\10\Windows Performance Toolkit' (if it's installed just: Win+R wprui).
        Where add this file as collector: <InstalDir>IntelSEAPI\ETW\IntelSEAPI.wprp
        After collection it will propose to open with WPA
        Inside WPA apply IntelSEAPI profile using menu Profiles->Apply->Browse, select <InstalDir>IntelSEAPI\ETW\IntelSEAPI.wpaProfile
    Kernel Mode Driver:
        Currenlty only static linkage is supported
        Include driver/sea_itt_driver.c from IntelSEAPI sources.
        Call __itt_event_start(0) in DriverEntry to init itt, AND __itt_event_end(0) in UnloadDriver to clean up everything.

* Systrace - Android: http://developer.android.com/tools/help/systrace.html
    Cons: only immediate tasks and counters are supported (currently).
    Pros: corellation with all system metric systrace can collect on the phone.
    To enable: use systrace from AndroidStudio/Eclipse.

* Json google trace format - All platforms: https://www.chromium.org/developers/how-tos/trace-event-profiling-tool
    Cons: no concerns, excellent viewer
    Pros: any platform; Corellation with ftrace (Android, Yocto, Linux), ETW (Windows). Supported: object state tracing, counters, tasks (sync and async) - immediate and with clock domains...
    To enable set environment variable INTEL_SEA_SAVE_TO=<any path>/<trace name>
    Use runtool to transform the SEA directory into json format with next command:
        python <InstalDir>IntelSEAPI\bin\sea_runtool.py -o <target> -f gt -i <source folder>
    Use chrome://tracing/ to view trace <target>.json

* DTrace - for MAC OS X XCode Instruments: https://developer.apple.com/library/watchos/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/index.html
    Cons: Only immediate tasks are supported (currently), no support of iOS.
    Pros: correlation with everything XCode Instruments can collect
    To enable set DYLD_INSERT_LIBRARIES in Instruments target settings

* QT Creator Profiler - cross platform: http://doc.qt.io/qtcreator/creator-qml-performance-monitor.html
    Cons: Only tasks are supported
    Pros: Butterfly view, file&line navigation
    To enable set environment variable INTEL_SEA_SAVE_TO=<any path>/<trace name>
    Use runtool to transform the SEA directory into json format with next command:
        python <InstalDir>IntelSEAPI\bin\sea_runtool.py -o <target> -f gt -i <source folder>
    In QT Creator open "Analyze->QML Profiler Options->Load QML Trace"

* Trace Compass - cross platform: https://projects.eclipse.org/projects/tools.tracecompass
    Initial implementation, thanks for Adrian Negreanu contribution
    To enable set environment variable INTEL_SEA_SAVE_TO=<any path>/<trace name>
    Use runtool to transform the SEA directory into .btf format with next command:
        python <InstalDir>IntelSEAPI\bin\sea_runtool.py -o <target> -f btf -i <source folder>

* GraphViz - cross platform: http://www.graphviz.org
    Initial implementation
    To enable set environment variable INTEL_SEA_SAVE_TO=<any path>/<trace name>
    Use runtool to transform the SEA directory into .gv format with next command:
        python <InstalDir>IntelSEAPI\bin\sea_runtool.py -o <target> -f gv -i <source folder>

Remote access (on Yocto example, from Windows):
    <InstalDir>IntelSEAPI\bin\sea_runtool.py -f gv gt btf qt -b ..\build_yocto\bin -o c:\temp\remote --ssh user@W.X.Y.Z -p password ! /opt/SEA/TestIntelSEAPI64
    Such call remotely runs /opt/SEA/TestIntelSEAPI64 application on Yocto device, copies result to c:\temp\remote folder and transforms it to GraphViz, chrome://tracing, BTF, QTCreator
    On Windows plink and pscp (from Putty package) are expected to be in PATH

Contribution is highly appreciated.

With respect, Alexander Raud.
email: alexander.a.raud@intel.com
You can’t perform that action at this time.