summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYabin Cui <yabinc@google.com>2023-05-04 17:33:07 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-05-04 17:33:07 +0000
commit7b7d5459ad7888358d45c1bb1b58dd763c8e5f12 (patch)
treed9fe1b141e78f5d6db7c73a4d402ea290b88722d
parenta804b5f1bca4bad54fc25151e09e3c577ac76e6c (diff)
parenta3b80db6fd6a15fc79b04ac982dab4d42c4cce95 (diff)
downloadextras-7b7d5459ad7888358d45c1bb1b58dd763c8e5f12.tar.gz
profcollectd: Control record scope by binary filter am: a3b80db6fd
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/extras/+/23008011 Change-Id: Ib8d482fa9ffec3e81da885c69fd975d2c4b39f5d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--profcollectd/libprofcollectd/simpleperf_etm_trace_provider.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/profcollectd/libprofcollectd/simpleperf_etm_trace_provider.rs b/profcollectd/libprofcollectd/simpleperf_etm_trace_provider.rs
index cb61802e..2239a182 100644
--- a/profcollectd/libprofcollectd/simpleperf_etm_trace_provider.rs
+++ b/profcollectd/libprofcollectd/simpleperf_etm_trace_provider.rs
@@ -40,13 +40,15 @@ impl TraceProvider for SimpleperfEtmTraceProvider {
fn trace(&self, trace_dir: &Path, tag: &str, sampling_period: &Duration, binary_filter: &str) {
let trace_file = trace_provider::get_path(trace_dir, tag, ETM_TRACEFILE_EXTENSION);
+ // Record ETM data for kernel space only when it's not filtered out by binary_filter. So we
+ // can get more ETM data for user space when ETM data for kernel space isn't needed.
+ let record_scope = if binary_filter.contains("kernel") {
+ simpleperf_profcollect::RecordScope::BOTH
+ } else {
+ simpleperf_profcollect::RecordScope::USERSPACE
+ };
- simpleperf_profcollect::record(
- &trace_file,
- sampling_period,
- binary_filter,
- simpleperf_profcollect::RecordScope::BOTH,
- );
+ simpleperf_profcollect::record(&trace_file, sampling_period, binary_filter, record_scope);
}
fn process(&self, trace_dir: &Path, profile_dir: &Path, binary_filter: &str) -> Result<()> {