History log of /system/extras/simpleperf/event_selection_set.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b9214820bb9348e54fcb5013ae7ca8cc1c793141 01-Nov-2017 Yabin Cui <yabinc@google.com> simpleperf: avoid warning for default freq.

When max_freq = 1800, and run `simpleperf record -e cpu-cycles -f 1000`,
it prints warning for default freq:
Sample frequency 4000 is out of range [1, 1800], adjust it to 1800

This patch removes the unproper warning.
Also remove AdjustSampleFrequency() because the freq will
be adjusted in event_fd.cpp.

Bug: http://b/29574526
Test: run `simpleperf record -e cpu-cycles -f 1000`.
Test: run simpleperf_unit_test.
Change-Id: Ieed106fb539b7deb9fee3208f00228c6e0520acb
/system/extras/simpleperf/event_selection_set.cpp
f0047d7dfc6471ed9cb9273c5d98e45dd358ef62 06-Oct-2017 Yabin Cui <yabinc@google.com> simpleperf: fix --group option.

Bug: None.
Test: simpleperf_unit_test.
Change-Id: I970e52481e63757a37ef3aa51a724d3dba7de6f2
/system/extras/simpleperf/event_selection_set.cpp
6d4959c21b0fe3fb4b4ca1758d2a595a43965ee5 02-Sep-2017 Yabin Cui <yabinc@google.com> simpleperf: support --clockid option in record cmd.

Setting clockid is supported in kernel 4.x.
Whether it is supported by the kernel can be checked
via `simpleperf list --show-features`.

Bug: http://b/65214671
Test: run simpleperf_unit_test.
Change-Id: I6f312cc62893af0fa5092ed91434b6df46435d7f
/system/extras/simpleperf/event_selection_set.cpp
b3ae56e485b4d971a909a8b04da65713a3d56872 25-Aug-2017 Yabin Cui <yabinc@google.com> simpleperf: fix check of opening perf event files.

When asked to monitor a process, record/stat cmd checks if we can
open perf event files for all threads successfully. However, it
fails when the monitored process has an exiting thread. This makes
record_cmd.duration_option test flakey, when there are exiting
threads in other tests, like record_cmd.handle_SIGHUP.

To fix this, only check if we can open perf event files for at
least one thread for each monitored process.

Bug: http://b/65047463
Test: run CtsSimpleperfTestCases.
Change-Id: Ia02ed498f49c9c6c452023ad31abb01a58071152
/system/extras/simpleperf/event_selection_set.cpp
d8aa2eda659d69c5701281df9c767902a215d7e5 09-Aug-2017 Yabin Cui <yabinc@google.com> simpleperf: fix stat cmd.

Previous CL wrongly makes kernel dump samples for stat cmd.

Bug: http://b/64489160
Test: run simpleperf_unit_test.
Change-Id: I4f5c08839e283b2361e47d61310e5161433824bb
/system/extras/simpleperf/event_selection_set.cpp
f9ed7b5507b4355021acc22adc14451e2e2d63ef 08-Aug-2017 Yabin Cui <yabinc@google.com> Merge "simpleperf: allow recording events in different speed."
20b49f8991b55eda3309a0bbe3c18153376065da 04-Aug-2017 Yabin Cui <yabinc@google.com> simpleperf: allow recording events in different speed.

Currently record command interface only allows one sample freq or sample period
for all events. This is not convenient when recording both non tracepoint events
and tracepoint events. This CL allows setting different sample speed for
different events. For example, for "-f 1000 -e cpu-cycles -c 1 sched:sched_switch",
"-f 1000" applies to cpu-cycles, and "-c 1" applies to sched:sched_switch.

It also fixes a bug about trace-offcpu: if "-f 1000 --trace-offcpu" is used,
the sched:sched_switch is be samples with "-f 1000". But we want to sample it
with "-c 1".

Also change the order of options in the help msg of record cmd to make it more
readable. Remove -F option. Because adding it seems not useful.

Bug: http://b/37572306
Test: run simpleperf_unit_test.

Change-Id: Ifdbd27c8f9fec49aade0e0e6ce624d8114042020
/system/extras/simpleperf/event_selection_set.cpp
20663f5fece4082531567d5268130186e40e7f9a 01-Aug-2017 Yabin Cui <yabinc@google.com> simpleperf: export meta info in report_sample.proto.

To support perf.data generated with --trace-offcpu option,
update interface in report_sample.proto:
1. Add meta info to show all event types.
2. Add event_type_id in each sample to show which even type it belongs to.

Bug: http://b/37572306
Test: run simpleperf_unit_test.
Change-Id: I2878979ec2023904df1006ce353dcf233b6a2642
/system/extras/simpleperf/event_selection_set.cpp
d3cb3b0c50211ad68459d526fcc32eb11b8f26a5 24-Jul-2017 Yabin Cui <yabinc@google.com> simpleperf: exclude kernel callchains when needed.

Exclude kernel callchains when users only monitor events in user space.
After this change, when users use `record -e cpu-cycles:u --trace-offcpu`,
the samples of the implicitly added sched:sched_switch event won't contain
any kernel callchain.

Bug: http://b/37572306
Test: run simpleperf_unit_test.
Change-Id: Iffcb61bac796e734825e68f847f24b4006b44360
/system/extras/simpleperf/event_selection_set.cpp
68b8383d76a7a18bdaee13949cc66ca012cc3dee 20-Jul-2017 Yabin Cui <yabinc@google.com> simpleperf: support tracing offcpu time.

1. Add --trace-offcpu option in record command, to record the callstack
when a thread is scheduled off cpu.
2. Change the report command to report time spent not running on cpu
when --trace-offcpu option is used for recording.
3. Add related unittests and runtests.

Bug: http://b/37572306
Test: run simpleperf_unit_test.

Change-Id: Ia50cc39c8dde0c8fb1b1facbcb26bbd0a7ab1351
/system/extras/simpleperf/event_selection_set.cpp
b6b433224c144c46a08e5b118df3ce6501571aec 04-May-2017 Yabin Cui <yabinc@google.com> simpleperf: fix tracing counters.

Previously prev_counter is an uninitialized value, which makes
the tracing result not correct.

Test: run simpleperf/systrace.py to profile an app.
Change-Id: I440771f705e22dec7a2948cb2f1164c17d41259a
/system/extras/simpleperf/event_selection_set.cpp
b92bae84b27889b548214bee8d0730ef10da0c6d 10-Feb-2017 Yabin Cui <yabinc@google.com> simpleperf: build libsimpleperf_inplace_sampler library.

libsimpleperf_inplace_sampler.so is a library linked with
user's app. It opens a unix socket server and waits for
simpleperf's profiling request. This patch doesn't contain
code generating real samples, instead it uses a fake sample
for testing.
Add runtest for 32bit. Increase runtest duration to 2 seconds
and adjust some args in runtest.conf to make test result stable.
Fix one tiny error in cmd_report.cpp to report correctly
in `report --sort comm,symbol`.

Bug: http://b/30974760
Test: run simpleperf_unit_test.
Test: run runtest.py.
Change-Id: I58163fe47f62e6ba7dd684b33a2ce302feb880f5
/system/extras/simpleperf/event_selection_set.cpp
b16a51ac5e3e7e581bcd79cb7ec91cdb62b45a2b 10-Feb-2017 Yabin Cui <yabinc@google.com> simpleperf: fix an error in checking monitored targets.

Bug: http://b/30974760
Test: run simpleperf_unit_test.
Change-Id: Ib3b5772468f0d67f54859d7dff15f66b567fac95
/system/extras/simpleperf/event_selection_set.cpp
26968e6c48dea2eaa217991ade5a04e801f1be8f 30-Jan-2017 Yabin Cui <yabinc@google.com> simpleperf: add inplace-sampler event type.

Add inplace-sampler event type, so it can be used in
record/list command. This cl doesn't add code for communicating
with profiled process, and fake records in InplaceSamplerClient.cpp
for testing purpose.
Refactor runtest.py to test inplace-sampler profiling.

Bug: http://b/30974760
Test: run runtest.py --inplace-sampler.
Change-Id: I92d8b03583c58b3589207f5c655e03853899be3a
/system/extras/simpleperf/event_selection_set.cpp
5f43fc4ac870b49542b4cf530a3729f9f1e0e9ab 13-Dec-2016 Yabin Cui <yabinc@google.com> simpleperf: check monitored targets regularly.

When monitoring some threads/processes not forked by simpleperf,
check if these threads/processes exist regularly. So we can
stop profiling once all threads/processes exit.

Also handle SIGHUP signal, so we can finish profiling properly
when `adb shell simpleperf record xxx` is killed by Ctrl-C.

Add corresponding tests.

Bug: http://b/33558210
Test: run simpleperf_unit_test.
Change-Id: Ieae4d00d099dc1c7a0c51b0610dff43981bb642e
/system/extras/simpleperf/event_selection_set.cpp
417df291499b37f63fa9b930e081d80a25bf38ec 16-Nov-2016 Yabin Cui <yabinc@google.com> simpleperf: fix dumping arm regs on arm64 devices.

On arm64 devices, the kernel dumps arm64 regs
even for 32-bit processes. So we need to map
from arm64 registers to arm registers.

Bug: http://b/30974693
Test: run simpleperf manually on one app.
Change-Id: Iffeac9510b418b5dabc0604c16523887d63bba49
/system/extras/simpleperf/event_selection_set.cpp
265f6a04691b7b820d717b4e40fe6b7f35585f1d 29-Oct-2016 Yabin Cui <yabinc@google.com> simpleperf: remove external sort.

Also remove set low mark for dwarf callgraph recording.

Bug: http://b/32343227
Test: run simpleperf runtest.py.
Test: run simpleperf_unit_test.
Change-Id: I57c0146b0a52cc1bb940a54f685058fe00677992
/system/extras/simpleperf/event_selection_set.cpp
2ea6de11962fea5613f15308b202fb505e57ae9b 25-Oct-2016 Yabin Cui <yabinc@google.com> simpleperf: merge records from different buffers in memory.

By reading records from all buffers at once, we can merge records
in memory instead of sorting them in perf.data. To make it clear,
this patch only contains the code to merge records in memory, and
I will remove old method later.

Bug: http://b/32343227
Test: run simpleperf_unit_test.
Test: run simpleperf_runtest.py.
Change-Id: Iea2da06c072243c2014f43c8aa6d96a23cfb9123
/system/extras/simpleperf/event_selection_set.cpp
003b245939bae5e86ed53b3c6b333637dbc571b4 30-Sep-2016 Yabin Cui <yabinc@google.com> Simpleperf: don't expose EventSelection.

And some tiny improvements.

Bug: http://b/30974760
Test: run simpleperf_unit_test.
Change-Id: Ie2d46c8ab9ee763d107527c9a54590f845569da4
/system/extras/simpleperf/event_selection_set.cpp
bc2a1022e1ea0a8c17691594d39fa53021de9166 29-Aug-2016 Yabin Cui <yabinc@google.com> simpleperf: handle monitored processes correctly when a cpu is up.

For stat/record cmd, the way to handle -p option is to change the
process list into a thread list before profiling. However, it doesn't
work well if we want to open new event files when a cpu is up. The
situation in problem is as below:

1. Monitor for process A, which currently has thread a.
2. Then we open event files for thread a.
3. Process A creates thread b. If profiling child threads/processes
is enabled, the kernel will monitor thread b automatically.
4. A new cpu is up, and we need to open new event files on that
cpu. But we will only open event file for thread a, although the
user command is to monitor the whole process.

To fix this, remember which processes are monitored in
EventSelectionSet, and search threads in the monitored processes
each time to open new event files.

Bug: http://b/29245608
Test: run simpleperf record cmd and make cpu offline and online.
Test: run simpleperf_unit_test.
Change-Id: Iabf9e30be9f0bc5a3651227e4695034c0b9e0258
/system/extras/simpleperf/event_selection_set.cpp
825e56be3a1c5310969aaa3e10a7cd1f63455189 27-Aug-2016 Yabin Cui <yabinc@google.com> simpleperf: support hotplug events in record cmd.

1. When a cpu is down, read records from event files on that cpu,
then close those event files.
2. When a cpu is up, open event files on that cpu, and create
mapped buffer for those event files to dump records.
3. Instead of creating a mapped buffer for each event type on each
cpu, we can just create a mapped buffer for all event types on
each cpu.
4. When new event files are created, store a EventIdRecord record in
perf.data to notify record_file_reader.cpp.

Bug: http://b/29245608
Test: run simpleperf record cmd and make cpu offline and online.
Test: run simpleperf_unit_test.

Change-Id: Ib97a24b6292fa143e9b35cb105bdddf1e826d60a
/system/extras/simpleperf/event_selection_set.cpp
778424b18ee1d9b9e789eb3de2dfc532fa499a55 25-Aug-2016 Yabin Cui <yabinc@google.com> simpleperf: support hotplug events in stat cmd.

1. When a cpu is down, read counters from event files on that cpu,
then close those events files.
2. When a cpu is up, open event files on that cpu.
3. Remove check of time_running != 0 in cmd_stat.cpp, because
1) We no longer need the check as we no longer open event file
for each cpu for non system wide profiling.
2) The kernel has a bug that can make time_running == 0 if
a cpu is down while profiling. But the counter value is
still valid, and shouldn't be ignored.

Bug: http://b/29245608
Test: run simpleperf and make cpu offline and online.

Change-Id: I3e7bec139c5f50bea1311c95bb154a5b290a72ea
/system/extras/simpleperf/event_selection_set.cpp
4cf37d1583a605785b7677c1935ce316c2097fa2 20-Aug-2016 Yabin Cui <yabinc@google.com> simpleperf: notify user for unsupported modifiers.

If there is no need to record samples, u/k modifiers
used in event cpu-clock and task-clock are ignored
by the kernel.

Bug: http://b/29574526
Change-Id: Id45568448888965a3bfa382c4420e395a741f77a
Test: simpleperf_unit_test.
/system/extras/simpleperf/event_selection_set.cpp
994cb626a9b0ad6cb723a9dfa7c5e05849647c87 20-Aug-2016 Yabin Cui <yabinc@google.com> simpleperf: monitor cpu hotplug in stat cmd.

Move code used to monitor cpu hotplug events
from cmd_record.cpp to event_selection_set.cpp,
so it can also be used by stat cmd.

Bug: http://b/29245608
Change-Id: I1f5f3268192aa5c98c0be9fc1de763352c08eab6
Test: run simpleperf stat, and online/offline a cpu.
/system/extras/simpleperf/event_selection_set.cpp
fc22b8f4c033a4ab26b864e29308e1b96fe8d712 04-Aug-2016 Yabin Cui <yabinc@google.com> simpleperf: reduce Record construction overhead while recording.

Avoid binary allocation and memory copy in ReadRecordsFromBuffer(),
thus reduce Record construction overhead in
EventSelectionSet::ReadMmapEventDataForFd().

Remove RecordCache used while recording. Replace it with
RecordFileWriter::SortDataSection(). For unwinding while
recording, use low watermark to make records almost sorted
when dumped from the kernel.

Bug: 30649868
Test: run simpleperf_unit_test.

Change-Id: Ie5fb942046900a5960b3c990cf4177c026eaadfb
/system/extras/simpleperf/event_selection_set.cpp
dbbda3020c483a8da2e9ce985c1e9d8b7bcc8ec0 28-Jul-2016 Yabin Cui <yabinc@google.com> simpleperf: use libevent in record command.

Support read Event in IOEventLoop, test it, and use it
in record command.
Format related code and clean up some comments.

Bug: http://b/30405638
Change-Id: I3b07d50b0374be3f3e7ee9fa4d0c0ccc8ae21a2b
Test: run simpleperf_unit_test.
/system/extras/simpleperf/event_selection_set.cpp
3e4c5950f3aafb0bf66544468d98ee3ec26b705c 27-Jul-2016 Yabin Cui <yabinc@google.com> simpleperf: use libevent in stat command.

Wrap libevent in IOEventLoop, use IOEventLoop in stat command.
Add corresponding tests.

Bug: http://b/30405638
Change-Id: I78b79e0eff1365ab46dde29c2a24a2def586af79
Test: run simpleperf_unit_test.
/system/extras/simpleperf/event_selection_set.cpp
0a072cda021e5dfbdbb39f4d8d30771a851b3c3a 14-Jul-2016 Yabin Cui <yabinc@google.com> simpleperf: adjust mapped buffer size in record command.

Instead of fixing the mapped buffer size, we can adjust
it at runtime. So users don't need to adjust -m manually.

Bug: 29574526
Change-Id: Icb580df3d60f8d2cf554c0d4139e6f7f64b19f8f
Test: run simpleperf_unit_test.
/system/extras/simpleperf/event_selection_set.cpp
6173592d3d086b8e493590d626fdbdb4e344c433 08-Jul-2016 Yabin Cui <yabinc@google.com> simpleperf: combine mapped buffer used for the same event and cpu.

Non root users have a size limit of buffers used for profiling.
By combining buffers used for the same event and cpu, we can
reduce buffer cost when monitoring multiple threads, thus
avoid mmap() failures.

Increase default value for -m option for non system wide profiling.

Bug: 28911532
Change-Id: I91148061eb54840c144cf72e7bb901e7b74897ec
Test: run simpleperf_unit_test.
/system/extras/simpleperf/event_selection_set.cpp
877751bbae11e009070e036ee1cd16e88135fff5 14-Jun-2016 Yabin Cui <yabinc@google.com> simpleperf: support event group.

Kernel supports monitoring several events as a group, so they are
scheduled on and out at the same time. Add --group option to
stat command and record command.
Adjust the method to calculate miss rate in stat command: limit
the matched events in the same group or with scale == 1.0.

Bug: 29213742

Change-Id: I899aba207f1e3357307541e81f97526f5a2913c3
/system/extras/simpleperf/event_selection_set.cpp
4f41df6f68efc3b9b534014a8cfb6ee8ac4d5c91 02-Jun-2016 Yabin Cui <yabinc@google.com> simpleperf: dump tracing data when needed.

When monitoring tracepoint events, dump tracing data to perf.data
can enable reporting on a different machine.

Bug: 27403614
Change-Id: Ie1af624717a245cacbeb44b4c1bcd499fc9ad8db
/system/extras/simpleperf/event_selection_set.cpp
810d1c5bad205f104e97de252ae4d1bcb7ab4b24 17-May-2016 Yabin Cui <yabinc@google.com> simpleperf: fix stat scale output.

Currently simpleperf stat command create an event file for each cpu and
scale the result by summarizing counters on each cpu. But one thread only
runs on one cpu at a time, so it results in wrongly scaled numbers.

Fix this by three changes:
1. For non system-wide stat, Create only one event file for all cpus.
2. When summarizing counters, omit counters having 0 running time.
3. Print real value instead of scaled value.

Run command:
$simpleperf stat ./empty_program

Before the change:
Performance counter statistics:

33,540,176 cpu-cycles # 54.812986 GHz (2%)
28,233,348 stalled-cycles-frontend # 46.140 G/sec (2%)

After the change:
Performance counter statistics:

625,335 cpu-cycles # 1.404496 GHz (100%)
507,200 stalled-cycles-frontend # 1.139 G/sec (100%)

Change-Id: I76bc3e220df4f149ab365e960295b24fde8ae2fc
/system/extras/simpleperf/event_selection_set.cpp
2d6efe4b167da4e6b77f168b1820239ee65599e2 02-Apr-2016 Yabin Cui <yabinc@google.com> simpleperf: support reporting more than one event type.

When sampling kernel trace points, it is like to sample more than
one even type. Like `simpleperf record -e kmem:mm_page_alloc,kmem:mm_page_free`.

1. change record command to dump event_id for all records.
2. change report command and record reader to support multiple
event attrs.
3. hide record_cache inside EventSelectionSet.
4. add test to report multiple event types.

Bug: 27403614
Change-Id: Ic22a5527d68e7a843e3cf95e85381f8ad6bcb196
/system/extras/simpleperf/event_selection_set.cpp
48460892306fbc232d7623b1aa5be1aefdc1a8a7 18-Mar-2016 Yabin Cui <yabinc@google.com> Simpleperf: remove dependency on global current_arch.

When running unit tests on arm64 devices:
[OK] ReportCommandTest.dwarf_callgraph
[OK] record_cmd.dwarf_callchain_sampling.
ERROR: can't unwind data recorded on a different architecture.

It is because ReportCommandtest.dwarf_callgraph opens a perf.data
recorded on x86_64, and changes current_arch. It causes a problem when
the test record_cmd.dwarf_callchain_sampling calls libbacktrace built
on aarch64. Athough it doesn't make the test fail, we should fix this.

Change-Id: I2cd70369a769ef2199cab2302b8b824369be0907
/system/extras/simpleperf/event_selection_set.cpp
19e6b6d372a1244189dc2df62313085a61ed1a80 10-Mar-2016 Yabin Cui <yabinc@google.com> simpleperf: check if dwarf callgraph is supported by kernel before testing.

Move inclusion of poll.h from header files to source files,
as event_selection_set.h is used by cmd_report_test.cpp, which
can be built on windows.

Bug: 27590546
Change-Id: Ic6b141a93d96610f911ab52da1d927b7f619ccb2
/system/extras/simpleperf/event_selection_set.cpp
b1a885b014540a2f7798b5a35ea0f0ec150d93ee 15-Feb-2016 Yabin Cui <yabinc@google.com> simpleperf: report symbols of native libraries in apk file.

Changes included:
1. provide interface in read_apk.h to read build id and symbols.
2. report symbols of native libraries in apk file.
3. refactor code in read_elf.cpp and read_apk.cpp.
4. add verbose log.
5. add -o report_file_name option for report command.
6. add corresponding unit tests.

Bug: 26962895
Change-Id: I0d5398996e0c29dba4a6f5226692b758ca096bbd
/system/extras/simpleperf/event_selection_set.cpp
b9ca50b319d2083c5a92c468e54796b0e71a4ad9 05-Dec-2015 Yabin Cui <yabinc@google.com> Merge "Simpleperf: don't use ioctl(PERF_EVENT_IOC_ENABLE)."
66dd09e8e2407082ce93bf0784de641298131912 04-Dec-2015 Elliott Hughes <enh@google.com> Track rename from base/ to android-base/.

Change-Id: Ic15d4778c7accd1382de0b440a437aba2cf67016
/system/extras/simpleperf/event_selection_set.cpp
a46794fa2963de93a9d25fd6945d3c58121e2ba6 03-Dec-2015 Yabin Cui <yabinc@google.com> Simpleperf: don't use ioctl(PERF_EVENT_IOC_ENABLE).

Some android kernels(like bullhead/angler) can't handle
ioctl(PERF_EVENT_IOC_ENABLE) correctly when cpu-hotplug
happens. Instead of fixing all of them in kernel, we
can't simply don't use it.

Bug: 25193162
Change-Id: I9df1458045ffd2ccc2c7ba393e746ebba7c253de
/system/extras/simpleperf/event_selection_set.cpp
cb4c17ea53269ced994a2d849cbafb1afd5296e1 27-Oct-2015 Yabin Cui <yabinc@google.com> simpleperf: support --cpu option in record/stat command.

--cpu option is used to record on selected cpus.

Change-Id: If5bb9b42a064d2ff69fbeec77906fc79943dddc1
/system/extras/simpleperf/event_selection_set.cpp
f469c3d7f4466a2a31c3e837969c43c1e3bc4c90 08-Oct-2015 Yabin Cui <yabinc@google.com> Simpleperf: do stack unwinding while recording.

Dumping user's stack consumes lots of disk space, which makes long period recording
impossible. This patch does stack unwinding before writing to perf.data, so it doesn't
need to save user's stack. Previous behavior is still supported with --post-unwind option.

A record cache is used for online record processing.

Bug: 22229391
Change-Id: Idcc6ec46924fff3fcc8c165d62f8af875b173cd4
/system/extras/simpleperf/event_selection_set.cpp
afdb9cea28340e31142fd66a90c88ed8e18ebbfa 20-Aug-2015 Yabin Cui <yabinc@google.com> Simpleperf: support multiple event types in record command.

Change-Id: I0aa0e8c9491370b5e4fafdaf8cdc5613c26c78f5
/system/extras/simpleperf/event_selection_set.cpp
04d08a35c5e1cabdf6eb7397536a790b0ff44459 20-Aug-2015 Yabin Cui <yabinc@google.com> Simpleperf: improve output of stat command.

Before this change:
$sudo simpleperf record -a sleep 1
Performance counter statistics:

5994649915(scaled) cpu-cycles
8785461570(scaled) stalled-cycles-frontend
6089237592(scaled) instructions
1086987265(scaled) branch-instructions
11019426(scaled) branch-misses
40306210522 task-clock
21955 context-switches
16659 page-faults

Total test time: 1.007973 seconds.

After this change:
$sudo simpleperf record -a sleep 1
Performance counter statistics:

11,768,763,985 cpu-cycles # 11.675808 Ghz (83%)
16,142,943,081 stalled-cycles-frontend # 16.015 G/sec (67%)
17,286,201,730 instructions # 0.680818 cycles per instruction (83%)
3,141,529,369 branch-instructions # 3.117 G/sec (84%)
18,168,963 branch-misses # 0.578348% miss rate (83%)
40222.432118(ms) task-clock # 3990.473223% cpu usage (100%)
19,240 context-switches # 19.088 K/sec (100%)
9,302 page-faults # 9.229 K/sec (100%)

Total test time: 1.007961 seconds.

Change-Id: I5590699957650e246b14b3d2b405108483631908
/system/extras/simpleperf/event_selection_set.cpp
5872ac6f1f5b804ffea38ff59025441618802d6b 01-Aug-2015 Yabin Cui <yabinc@google.com> Simpleperf: correct the event type name printed in stat command.

Bug: 22884977
Change-Id: I3c4f5c8dc02d5b17f5942e4e98476d1c4f3fbcad
/system/extras/simpleperf/event_selection_set.cpp
76769e502d8f0ebf5d2c81b00246727fb0a59925 13-Jul-2015 Yabin Cui <yabinc@google.com> Simpleperf: Support dwarf callgraph recording.

1. add OS_RELEASE and ARCH feature in perf.data. ARCH feature is used when parsing
recorded user registers.
2. support `--call-graph dwarf` option in record command.

Bug: 22229391
Change-Id: I56dbdd101338658ce6a9b59aa8be90e712e007f5
/system/extras/simpleperf/event_selection_set.cpp
9fd3cc1048a3d0338df4a48760dfd655560992a1 26-Jun-2015 Yabin Cui <yabinc@google.com> Simpleperf: support build on mac.

Bug: 19483574
Change-Id: I6c28541944bc0a4e6fc07d7ea5a8fb5f71890510
/system/extras/simpleperf/event_selection_set.cpp
4be412615fa6b6a7bf0afd5f620b249e98b2cab8 22-Jun-2015 Yabin Cui <yabinc@google.com> Simpleperf: support child inherit option.

In order to support child inherit option, also change the way to open event
files for threads on all cpus in record command.

Bug: 19483574
Change-Id: I0765e9ec90841c1f762490de3dd24ad37b0cc619
/system/extras/simpleperf/event_selection_set.cpp
d115b2f738f2cef352877b26c2d93460ac9fea25 15-Jun-2015 Yabin Cui <yabinc@google.com> Simpleperf: support event type modifier.

Also fix a bug in event_attr dumping.

Bug: 19483574
Change-Id: I255647d1471acab3a63c3dc787ab06b3d2bee294
/system/extras/simpleperf/event_selection_set.cpp
b032de7a9e1975a838cd6df2e7c8df3c7f70a3ce 18-Jun-2015 Yabin Cui <yabinc@google.com> Simpleperf: support monitoring existing processes/threads.

Also change the default record freq from 1000 to 4000. Because 1000 seems to be too low.

Bug: 19483574
Change-Id: I340fcb9d28a156862705e483ee340a1c824eea21
/system/extras/simpleperf/event_selection_set.cpp
6e8a9a4e52242f82104644bca0318284b3bbdd6b 15-Jun-2015 Yabin Cui <yabinc@google.com> Simpleperf: support callchain sampling in record command.

Bug: 19483574
Change-Id: Icd8ed7c316144fc51d54f196872061533bdeef2b
/system/extras/simpleperf/event_selection_set.cpp
7d4904d5fc038f8125cfc63a5eaa4669ee2aebda 09-Jun-2015 Yabin Cui <yabinc@google.com> Simpleperf: fix a few bugs.

Fix mistyped word.
Kill workload process when exiting.
Add checking of whether branch sampling is supported.

Bug: 19483574

Change-Id: Ibe48914cd92da1ee40bf67c0c47a6376a7291e8c
/system/extras/simpleperf/event_selection_set.cpp
ddddc06d1f1d15d49e1eb43201b73beb29cf4cde 03-Jun-2015 Yabin Cui <yabinc@google.com> Simpleperf: support branch stack sampling in `simpleperf record`.

This only adds support in simpleperf. Branch stack sampling still
lacks kernel support on arm devices.
Use perf_event.h of bionic in host build, because the perf_event.h
of platform glibc is too old.

Bug: 19483574
Change-Id: I9c7332c054e93e7433717dd293d3f366b1802e2d
/system/extras/simpleperf/event_selection_set.cpp
f569b478e74560a2d9e29a96824e16b93a55b97f 30-Apr-2015 Yabin Cui <yabinc@google.com> Support tracepoint event types in simpleperf.

Also support options in `simpleperf list`, add test about tracepoint event types.

Bug: 19483574

Change-Id: I2d2c2f300fe5e2968696228899084410aa9f29a4
/system/extras/simpleperf/event_selection_set.cpp
9759e1b1ce76185aa539aeea2fb1cbd8382156e7 29-Apr-2015 Yabin Cui <yabinc@google.com> Implement simpleperf record/dumprecord subcommands.

Bug: 19483574

Change-Id: Id879713a75c2d3a6289d8847b95ee0bb4a2cc8a0
/system/extras/simpleperf/event_selection_set.cpp