IO Profiler Overview



IO profiling APIs allows applications to obtain statistics of IO channel utilization over specific period of time. The statistics could be used to identify IO utilization characteristics and bottlenecks for applications. Cafe IO consists of the following IO channels and the total IO bandwidth gets distributed among them.

IO Channel Description
USB Universal Serial Bus
NET Network
CONTROLLER Various controllers
SECURE IO Secure network IO using HTTPS/SSL
SYSTEM Internal System IO

The APIs provide statistics about percentage IO bandwidth (of the total available IO bandwidth) consumed by each of the channels. The IO bandwidth utilization numbers include usage by the application as well as internal system services. Some IO activities result in more than one channel being used. e.g. Network activity over USB Ethernet uses NET as well as USB channel, File system activity on USB disk drive uses FILE SYSTEM as well as USB channel.

IO profiling APIs are only available in DEV and TEST mode. They are not available in PRODUCTION mode. Do NOT use the APIs in applications meant to run in PRODUCTION mode. Use the APIs only in DEV or TEST mode to profile application performance.

How To

Profiling data is collected between start and end of a profiling checkpoint. The application should start a profiling checkpoint just before starting the task which is to be profiled. The application should end the checkpoint after the task to be profiled is completed. Ending the checkpoint returns statistics for time period between the start of the checkpoint and end of the checkpoint. The application can either stop profiling when it ends a checkpoint or it can start the next checkpoint. An application can profile different tasks within the application by starting and ending a profiling checkpoint multiple times (before and after each of the task to be profiled).

IO profiling checkpoint is common system wide and is not maintained per application level. Internally the system collects the profiling data in a single data structure (system wide) which is affected by each of the start and end checkpoint operation performed by any application/tool.

IO profiling APIs are available in form of nio_prof.rpl. API declarations are available in cafe/io_prof.h.

For more information, refer to the following demos.

Demo Description
system/src/demo/io_prof/io_prof_demo_continuous.cpp This demo illustrates use of IO profiling APIs to obtain IO channel utilization for file read operation and during idle period. It demonstrates use of profiling in continuous mode where end of a profiling checkpoint implicitly starts the next profiling checkpoint.
system/src/demo/io_prof/io_prof_demo_intermittent.cpp This demo illustrates use of IO profiling APIs to obtain IO channel utilization for file read operation followed by an idle period (profiling is OFF during the idle period). It demonstrates use of profiling in intermittent mode where end of checkpoint stops profiling. The next profiling checkpoint is explicitly started.

Revision History

2013/06/19 Initial version