summaryrefslogtreecommitdiff
path: root/endless/eosprofile.c
Commit message (Collapse)AuthorAge
* Do not clean up the profile state before writing dataEmmanuele Bassi2018-01-19
| | | | We use the fields in the profile state singleton.
* Move private profile symbols into the private headerEmmanuele Bassi2018-01-19
| | | | We are going to re-use them in the profile CLI tool.
* Add more metadata in the profile stateEmmanuele Bassi2018-01-18
| | | | | | | We want to have access to more metadata, including the application id, when capturing profiling data for later review, as the immediate association between a process and its profiling data is not available in that case.
* Do not attempt to remove probes twiceEmmanuele Bassi2018-01-18
| | | | | We only remove probes when unloading state, so we don't need to remove the probe from the state itself.
* Remove unused refcount from EosProfileProbeEmmanuele Bassi2018-01-18
| | | | Leftovers from an earlier iteration.
* Use similar output for single/multi sample probesEmmanuele Bassi2018-01-17
| | | | | | Always print out the number of samples and the total time, regardless of the number of samples; in case we have more than one sample, be more specific and add the average, minimum, maximum, and standard deviation.
* Print out total time for single-sample probesEmmanuele Bassi2018-01-17
| | | | | | We should only give up if we didn't have any samples. https://phabricator.endlessm.com/T20769
* Add initial infrastructure for ProfilingEmmanuele Bassi2018-01-10
The EosProfileProbe API allows defining profiling probes that can be used to efficiently measure the time spent in a critical section. The Profiling API is meant to collect samples and generate a report at the end of the lifetime of the process, either by printing out the results once the process terminates; or by saving the raw data in a binary file that can be loaded at a later date. This profiling API is meant to be as close as possible to a zero cost abstraction: - probes are only allocated if profiling is enabled - all profiling API is a no-op if profiling isn't enabled - the C API is meant to be easily tied to a scope, through the use of auto-cleanup macros provided by GLib This allows projects using the Endless SDK to keep the profiling probes in place, instead of conditionally compile them in. https://phabricator.endlessm.com/T18514