NavigaraNavigara
OrganizationsDistributionCompareResearch
NavigaraNavigara
OrganizationsDistributionCompareResearch
All developers

Simon MacMullen

Developer

Simon MacMullen

simonmacm@google.com

34 commits~5 files/commit

Performance

YoY:+279%
2026Previous year

Insights

Key patterns and highlights from this developer's activity.

Peak MonthJan'25127 performance
Growth Trend↓40%vs prior period
Avg Files/Commit5files per commit
Active Days29of 455 days
Top Repoperfetto34 commits

Effort Over Time

Breakdown of growth, maintenance, and fixes effort over time.

Bug Behavior

Beta

Bugs introduced vs. fixed over time.

Investment Quality

Beta

Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.

56%Productive TimeGrowth 87% + Fixes 13%
13%Maintenance Time
31%Wasted Time
How it works

Methodology

Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.

Relationship to Growth / Maintenance / Fixes

The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.

Proposed API Endpoint

Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:

POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json

Request:
{
  "startTime": "2025-01-01T00:00:00Z",
  "endTime": "2025-12-31T23:59:59Z",
  "bucketSize": "BUCKET_SIZE_MONTH",
  "groupBy": ["repository_id" | "deliverer_email"]
}

Response:
{
  "productivePct": 74,
  "maintenancePct": 18,
  "wastedPct": 8,
  "buckets": [
    {
      "bucketStart": "2025-01-01T00:00:00Z",
      "productive": 4.2,
      "maintenance": 1.8,
      "wasted": 0.6
    }
  ]
}

Recent Activity

Latest analyzed commits from this developer.

HashMessageDateFilesEffort
4606e58This commit introduces a **new capability** to the **trace summary analysis** by allowing the `ValueColumnSpec` to be extended. A new `extensions` field has been added to the `ValueColumnSpec` message within `protos/perfetto/trace_summary/v2_metric.proto`, enabling **vendor-specific configurations** for aggregation across traces. This **feature enhancement** provides greater flexibility for defining custom metric aggregation logic. Corresponding **documentation** in `docs/analysis/trace-summary.md` has been updated to explain how to utilize these new extensions.Mar 273grow
5c7f675This commit **enhances the diagnostic capabilities** of the **trace processor** by explicitly recording an error when **empty power rail data packets** are encountered. The `android_probes_module.cc` now utilizes a new `power_rail_empty_packet` statistic, defined in `stats.h`, to track these occurrences during the `TokenizePacket` process. This **maintenance improvement** provides crucial visibility into potential data acquisition unreliability for power rails, allowing developers to identify and address issues that might otherwise go unnoticed. It helps determine if Perfetto experiences similar data integrity problems as observed in other systems.Mar 32waste
ee06ccaThis commit introduces a **new capability** to the **Perfetto SQL engine** by adding the `regexp_replace_simple` function, enabling **regular expression-based string replacement** directly within SQL queries. This **feature** enhances the **Trace Processor's** data manipulation capabilities by providing a powerful tool for advanced text transformation. The implementation involves a new `RegexpReplaceSimple` intrinsic function, a `Replace` method in the `util/regex` utility, and its definition within the SQL standard library's `functions.sql`. This addition significantly expands the string processing power available to users of Perfetto SQL.Feb 1710grow
f3b1787This commit **enhances** the **Day Explorer plugin** by fundamentally changing its data source from generic "behaviors" to specific **device usage data**. The function `addDayExplorerBehaviors` in `ui/src/plugins/com.android.DayExplorer/index.ts` was renamed to `addDayExplorerUsage` to reflect this semantic shift, ensuring the plugin now queries and displays more precise activity information. This **feature update** provides users with a more accurate representation of device activity within the Day Explorer interface. Additionally, minor **capitalization issues** in track and group names within the plugin's data handling are **fixed**, improving overall consistency.Oct 11grow
d42127eThis commit delivers substantial **UI enhancements** and a **bug fix** for the **CPU-per-UID** analysis in the tracing UI. It **optimizes performance** by preventing the materialization of counter data in `QueryCounterTrack`, significantly reducing loading times. New capabilities include **summary and filtered views** for CPU usage, providing clearer insights into major users and aggregated app/system activity, alongside improved track labeling within the **`com.android.CpuPerUid` plugin**. Furthermore, a **critical bug** in `src/trace_processor/perfetto_sql/stdlib/android/cpu/cpu_per_uid.sql` is resolved, ensuring correct package name attachment for non-base users.Sep 254grow
a6d5fe6This commit significantly **improves the performance** of the `android.kernel_wakelocks` calculation within the `trace_processor/perfetto_sql/stdlib` module. It **refactors** the SQL logic in `src/trace_processor/perfetto_sql/stdlib/android/kernel_wakelocks.sql` to leverage `counter_leading_intervals()` and an intermediate table. This **optimization** addresses a known bug and reduces the processing time for typical long traces from 9.4 seconds to 1.6 seconds. The change provides a much faster analysis of kernel wakelock data, enhancing the overall efficiency of Android trace processing.Sep 171maint
fefe7e0This commit **fixes** a **bug** in **Trace Processor's SQL `counter_leading_intervals()` function** to correctly handle counter transitions, specifically when values remain at zero or transition from zero. Previously, these "zero deltas" were not accurately processed, leading to incorrect interval calculations for counter data. The **`CounterTrackPartition`** in `counter.h` is **refactored** to store `last_equal_id`, `last_equal_ts`, and `last_equal_val`, enabling the aggregation logic in `type_builders.cc` to correctly emit intervals even when values are identical. This ensures more **accurate analysis of counter data** in Trace Processor and is validated by new and updated **diff tests** in `tests.py`, `memory.py`, and `tests_power_rails.py`.Sep 176waste
1f3b56dThis commit addresses a **data accuracy bug** within the **Perfetto SQL standard library** by correcting the calculation of CPU usage metrics. Specifically, it **fixes** the `android/cpu/cpu_per_uid.sql` module, ensuring that `diff_ms` and `cpu_ratio` are accurately derived using `next_value - value` instead of the previously lagging `delta_value`. This change improves the reliability of **CPU per UID metrics** for Android traces. Furthermore, **documentation is updated** in `counters/intervals.sql` to clarify the schema and behavior of `delta_value` within the `counter_leading_intervals` macro, enhancing understanding for future users.Sep 162waste
c1bda85This commit introduces **CPU usage per UID analysis** to Perfetto, enabling detailed insights into process-level CPU consumption. It adds a new `cpu_per_uid.sql` module to the **trace processor's SQL standard library**, providing `android_cpu_per_uid_track` and `android_cpu_per_uid_counter` tables for querying this data. Concurrently, a new **Perfetto UI plugin** (`com.android.CpuPerUid`) is added to visualize this information, allowing users to easily inspect CPU usage broken down by individual UIDs directly within the UI. This **new capability** significantly enhances **Android performance debugging** by providing granular CPU attribution.Sep 167grow
6ba2ea8This commit **refactors** the monolithic `AndroidLongBatteryTracing` plugin by splitting its extensive functionality into six more specialized plugins to improve modularity and maintainability. **New plugins** `com.android.Bluetooth`, `com.android.ContainedTraces`, `com.android.DayExplorer`, and `com.android.RilModem` now handle specific Android tracing aspects like Bluetooth events, contained traces, Day Explorer data, and RIL modem information, respectively. A new `com.android.AndroidLongBatterySupport` plugin provides shared utilities and group state management, while the original `com.android.AndroidLongBatteryTracing` retains the remaining core logic. Most of these **new capabilities** are **enabled by default** in `ui/src/core/default_plugins.ts`, with `com.android.RilModem` being an opt-in exception due to its complexity and performance impact. This significant architectural change enhances the organization and control over **Android tracing capabilities** within the UI.Sep 1612grow
0ff1bc1This commit introduces a **feature enhancement** to the **AndroidLongBatteryTracing plugin**, improving how job data is presented in the UI. It implements **conditional logic** within `ui/src/plugins/com.android.AndroidLongBatteryTracing/index.ts` to fetch job information from `statsd atoms` when the `atom.scheduled_job_state_changed` and `google3` features are enabled. This change prioritizes a potentially more granular data source, falling back to the existing `battery stats` if the new `statsd` atoms are not available. The update aims to provide more accurate and detailed job state insights for Android long battery traces by leveraging a richer data source.Sep 151grow
b123a57This commit introduces a **new capability** to the **Trace Processor** by adding **support for processing Android CPU-per-UID trace data**. It implements a dedicated `AndroidCpuPerUidModule` within the `proto` importers, complete with its state management (`AndroidCpuPerUidState`), to parse and interpret this specific data source. This **enhances the Trace Processor's diagnostic capabilities for Android system performance**, allowing for detailed analysis of CPU usage attributed to individual user IDs. Build configurations across `Android.bp`, `BUILD`, and `BUILD.gn` are updated, and new `diff_tests` are included to validate the correct parsing and processing of this new data.Aug 1211grow
6960e45This commit introduces an **"on use" mode** for the **`packages_list` data source**, allowing it to only emit package information for UIDs that are actively consuming CPU. This **new capability** is enabled via a `only_write_on_cpu_use_every_ms` configuration option in `PackagesListConfig`, which triggers polling for CPU-per-UID usage. To facilitate this, a substantial **refactoring** extracts CPU time collection and incremental state management into a new reusable utility class, `AndroidCpuPerUidPoller`, which is now utilized by both `packages_list` and `android_cpu_per_uid` probes. This change significantly improves tracing efficiency by reducing the overhead and trace size associated with the `packages_list` probe when only active processes are of interest.Aug 518grow
17e2aceThis commit introduces a **significant enhancement** to the **`trace_processor`'s `metatrace` subsystem** by making its internal state **thread-local**. It refactors the `g_enabled_categories` variable and the `RingBuffer` instance, accessed via `GetInstance()`, to operate on a per-thread basis instead of globally. This **enables `metatrace` to function correctly and safely in multi-threaded environments**, resolving a prior limitation that prevented its use in concurrent contexts. The change allows for more robust performance profiling and debugging in concurrent applications, provided each `trace processor` instance is managed per thread.Jul 32grow
b2ccfbbThis commit implements a **bug fix** by **removing an unnecessary and problematic call** to `DynamicLibLoader::EnsureCpuTimesAvailable` from the `Start` method of the **Android CPU per UID data source** (`android_cpu_per_uid_data_source.cc`). The system server already handles the underlying `startTrackingUidTimes()` functionality, and the `traced` process lacks the required permissions to perform this operation directly. This change **simplifies the data source startup** by eliminating a redundant and failing permission check. Consequently, it ensures the **`android_cpu_per_uid` probe** can initialize correctly and reliably collect CPU usage data per UID without encountering permission-related failures.Jun 303waste
0028ac0This commit introduces a **new capability** to the **Perfetto tracing system** by adding the `AndroidCpuPerUidDataSource`. This new data source is responsible for polling and recording **CPU time per UID and per cluster** on Android devices, utilizing the `cputimeinstate` library. The change involves significant updates to **proto definitions** for both configuration (`CpuPerUidConfig`) and trace data (`CpuPerUidData`), alongside comprehensive modifications to the **build system** to integrate this new probe. This enhancement allows for more granular performance analysis by providing detailed CPU usage statistics for individual applications and CPU core types within traces.Jun 2323grow
9ad2b0dThis commit implements a **defensive bug fix** for the **Android kernel wakelock tracing** subsystem, specifically addressing occasional implausibly large wakelock values reported by `SuspendControlService`. The `android_kernel_wakelocks` probe in `traced` now includes logic to detect these erroneous values, **ignoring** them from processing and instead setting an error flag (`kKernelWakelockErrorImplausiblyLargeValue`). A new statistic, `kernel_wakelock_implausibly_large_value_reported`, is also introduced and incremented within the **trace processor** to track the frequency of these occurrences. This change prevents corrupted or misleading wakelock data from appearing in traces, significantly improving the reliability and accuracy of **kernel wakelock analysis**.May 215waste
6b5c4c2This commit introduces a new **diff test** for **Android kernel wakelocks** within the **trace processor's standard library**. It adds a new test data file, `android_kernel_wakelocks.textproto`, and integrates a corresponding test case, `test_android_kernel_wakelocks`, into `tests.py`. This **maintenance** work enhances the **testing infrastructure** by ensuring the accurate processing and output of Android kernel wakelock information. The new test improves the reliability of **Android performance analysis** by preventing regressions in wakelock data interpretation.May 202maint
1570131This commit **fixes a regression** in the **Perfetto SQL standard library**'s **Android kernel wakelocks** analysis. It **corrects a bug** in the `src/trace_processor/perfetto_sql/stdlib/android/kernel_wakelocks.sql` query, specifically within the `_android_kernel_wakelocks_joined` CTE. The `GROUP BY` clause was mistakenly applied to a pre-renamed `ts` column, rather than the intended `original_ts` after a recent cleanup. This ensures **accurate aggregation** and **correct data analysis** for **Android kernel wakelock traces**, preventing erroneous results in Perfetto's SQL interface.May 191waste
a6f552aThis commit **fixes a bug** in the **Perfetto SQL standard library** by correcting the `duration` calculation within the `android_kernel_wakelocks` table. Previously, an erroneous `WHERE` clause in `src/trace_processor/perfetto_sql/stdlib/android/kernel_wakelocks.sql` caused the `dur` column to only reflect "awake time," leading to inaccurate total duration reporting for kernel wakelocks. The change removes this incorrect filter, ensuring `dur` now represents the true total duration. Additionally, a new `awake_dur` column is introduced to explicitly expose the "awake time" duration, providing more granular data for **Android power management trace analysis**.May 161waste
4606e58Mar 27

This commit introduces a **new capability** to the **trace summary analysis** by allowing the `ValueColumnSpec` to be extended. A new `extensions` field has been added to the `ValueColumnSpec` message within `protos/perfetto/trace_summary/v2_metric.proto`, enabling **vendor-specific configurations** for aggregation across traces. This **feature enhancement** provides greater flexibility for defining custom metric aggregation logic. Corresponding **documentation** in `docs/analysis/trace-summary.md` has been updated to explain how to utilize these new extensions.

3 filesgrow
5c7f675Mar 3

This commit **enhances the diagnostic capabilities** of the **trace processor** by explicitly recording an error when **empty power rail data packets** are encountered. The `android_probes_module.cc` now utilizes a new `power_rail_empty_packet` statistic, defined in `stats.h`, to track these occurrences during the `TokenizePacket` process. This **maintenance improvement** provides crucial visibility into potential data acquisition unreliability for power rails, allowing developers to identify and address issues that might otherwise go unnoticed. It helps determine if Perfetto experiences similar data integrity problems as observed in other systems.

2 fileswaste
ee06ccaFeb 17

This commit introduces a **new capability** to the **Perfetto SQL engine** by adding the `regexp_replace_simple` function, enabling **regular expression-based string replacement** directly within SQL queries. This **feature** enhances the **Trace Processor's** data manipulation capabilities by providing a powerful tool for advanced text transformation. The implementation involves a new `RegexpReplaceSimple` intrinsic function, a `Replace` method in the `util/regex` utility, and its definition within the SQL standard library's `functions.sql`. This addition significantly expands the string processing power available to users of Perfetto SQL.

10 filesgrow
f3b1787Oct 1

This commit **enhances** the **Day Explorer plugin** by fundamentally changing its data source from generic "behaviors" to specific **device usage data**. The function `addDayExplorerBehaviors` in `ui/src/plugins/com.android.DayExplorer/index.ts` was renamed to `addDayExplorerUsage` to reflect this semantic shift, ensuring the plugin now queries and displays more precise activity information. This **feature update** provides users with a more accurate representation of device activity within the Day Explorer interface. Additionally, minor **capitalization issues** in track and group names within the plugin's data handling are **fixed**, improving overall consistency.

1 filesgrow
d42127eSep 25

This commit delivers substantial **UI enhancements** and a **bug fix** for the **CPU-per-UID** analysis in the tracing UI. It **optimizes performance** by preventing the materialization of counter data in `QueryCounterTrack`, significantly reducing loading times. New capabilities include **summary and filtered views** for CPU usage, providing clearer insights into major users and aggregated app/system activity, alongside improved track labeling within the **`com.android.CpuPerUid` plugin**. Furthermore, a **critical bug** in `src/trace_processor/perfetto_sql/stdlib/android/cpu/cpu_per_uid.sql` is resolved, ensuring correct package name attachment for non-base users.

4 filesgrow
a6d5fe6Sep 17

This commit significantly **improves the performance** of the `android.kernel_wakelocks` calculation within the `trace_processor/perfetto_sql/stdlib` module. It **refactors** the SQL logic in `src/trace_processor/perfetto_sql/stdlib/android/kernel_wakelocks.sql` to leverage `counter_leading_intervals()` and an intermediate table. This **optimization** addresses a known bug and reduces the processing time for typical long traces from 9.4 seconds to 1.6 seconds. The change provides a much faster analysis of kernel wakelock data, enhancing the overall efficiency of Android trace processing.

1 filesmaint
fefe7e0Sep 17

This commit **fixes** a **bug** in **Trace Processor's SQL `counter_leading_intervals()` function** to correctly handle counter transitions, specifically when values remain at zero or transition from zero. Previously, these "zero deltas" were not accurately processed, leading to incorrect interval calculations for counter data. The **`CounterTrackPartition`** in `counter.h` is **refactored** to store `last_equal_id`, `last_equal_ts`, and `last_equal_val`, enabling the aggregation logic in `type_builders.cc` to correctly emit intervals even when values are identical. This ensures more **accurate analysis of counter data** in Trace Processor and is validated by new and updated **diff tests** in `tests.py`, `memory.py`, and `tests_power_rails.py`.

6 fileswaste
1f3b56dSep 16

This commit addresses a **data accuracy bug** within the **Perfetto SQL standard library** by correcting the calculation of CPU usage metrics. Specifically, it **fixes** the `android/cpu/cpu_per_uid.sql` module, ensuring that `diff_ms` and `cpu_ratio` are accurately derived using `next_value - value` instead of the previously lagging `delta_value`. This change improves the reliability of **CPU per UID metrics** for Android traces. Furthermore, **documentation is updated** in `counters/intervals.sql` to clarify the schema and behavior of `delta_value` within the `counter_leading_intervals` macro, enhancing understanding for future users.

2 fileswaste
c1bda85Sep 16

This commit introduces **CPU usage per UID analysis** to Perfetto, enabling detailed insights into process-level CPU consumption. It adds a new `cpu_per_uid.sql` module to the **trace processor's SQL standard library**, providing `android_cpu_per_uid_track` and `android_cpu_per_uid_counter` tables for querying this data. Concurrently, a new **Perfetto UI plugin** (`com.android.CpuPerUid`) is added to visualize this information, allowing users to easily inspect CPU usage broken down by individual UIDs directly within the UI. This **new capability** significantly enhances **Android performance debugging** by providing granular CPU attribution.

7 filesgrow
6ba2ea8Sep 16

This commit **refactors** the monolithic `AndroidLongBatteryTracing` plugin by splitting its extensive functionality into six more specialized plugins to improve modularity and maintainability. **New plugins** `com.android.Bluetooth`, `com.android.ContainedTraces`, `com.android.DayExplorer`, and `com.android.RilModem` now handle specific Android tracing aspects like Bluetooth events, contained traces, Day Explorer data, and RIL modem information, respectively. A new `com.android.AndroidLongBatterySupport` plugin provides shared utilities and group state management, while the original `com.android.AndroidLongBatteryTracing` retains the remaining core logic. Most of these **new capabilities** are **enabled by default** in `ui/src/core/default_plugins.ts`, with `com.android.RilModem` being an opt-in exception due to its complexity and performance impact. This significant architectural change enhances the organization and control over **Android tracing capabilities** within the UI.

12 filesgrow
0ff1bc1Sep 15

This commit introduces a **feature enhancement** to the **AndroidLongBatteryTracing plugin**, improving how job data is presented in the UI. It implements **conditional logic** within `ui/src/plugins/com.android.AndroidLongBatteryTracing/index.ts` to fetch job information from `statsd atoms` when the `atom.scheduled_job_state_changed` and `google3` features are enabled. This change prioritizes a potentially more granular data source, falling back to the existing `battery stats` if the new `statsd` atoms are not available. The update aims to provide more accurate and detailed job state insights for Android long battery traces by leveraging a richer data source.

1 filesgrow
b123a57Aug 12

This commit introduces a **new capability** to the **Trace Processor** by adding **support for processing Android CPU-per-UID trace data**. It implements a dedicated `AndroidCpuPerUidModule` within the `proto` importers, complete with its state management (`AndroidCpuPerUidState`), to parse and interpret this specific data source. This **enhances the Trace Processor's diagnostic capabilities for Android system performance**, allowing for detailed analysis of CPU usage attributed to individual user IDs. Build configurations across `Android.bp`, `BUILD`, and `BUILD.gn` are updated, and new `diff_tests` are included to validate the correct parsing and processing of this new data.

11 filesgrow
6960e45Aug 5

This commit introduces an **"on use" mode** for the **`packages_list` data source**, allowing it to only emit package information for UIDs that are actively consuming CPU. This **new capability** is enabled via a `only_write_on_cpu_use_every_ms` configuration option in `PackagesListConfig`, which triggers polling for CPU-per-UID usage. To facilitate this, a substantial **refactoring** extracts CPU time collection and incremental state management into a new reusable utility class, `AndroidCpuPerUidPoller`, which is now utilized by both `packages_list` and `android_cpu_per_uid` probes. This change significantly improves tracing efficiency by reducing the overhead and trace size associated with the `packages_list` probe when only active processes are of interest.

18 filesgrow
17e2aceJul 3

This commit introduces a **significant enhancement** to the **`trace_processor`'s `metatrace` subsystem** by making its internal state **thread-local**. It refactors the `g_enabled_categories` variable and the `RingBuffer` instance, accessed via `GetInstance()`, to operate on a per-thread basis instead of globally. This **enables `metatrace` to function correctly and safely in multi-threaded environments**, resolving a prior limitation that prevented its use in concurrent contexts. The change allows for more robust performance profiling and debugging in concurrent applications, provided each `trace processor` instance is managed per thread.

2 filesgrow
b2ccfbbJun 30

This commit implements a **bug fix** by **removing an unnecessary and problematic call** to `DynamicLibLoader::EnsureCpuTimesAvailable` from the `Start` method of the **Android CPU per UID data source** (`android_cpu_per_uid_data_source.cc`). The system server already handles the underlying `startTrackingUidTimes()` functionality, and the `traced` process lacks the required permissions to perform this operation directly. This change **simplifies the data source startup** by eliminating a redundant and failing permission check. Consequently, it ensures the **`android_cpu_per_uid` probe** can initialize correctly and reliably collect CPU usage data per UID without encountering permission-related failures.

3 fileswaste
0028ac0Jun 23

This commit introduces a **new capability** to the **Perfetto tracing system** by adding the `AndroidCpuPerUidDataSource`. This new data source is responsible for polling and recording **CPU time per UID and per cluster** on Android devices, utilizing the `cputimeinstate` library. The change involves significant updates to **proto definitions** for both configuration (`CpuPerUidConfig`) and trace data (`CpuPerUidData`), alongside comprehensive modifications to the **build system** to integrate this new probe. This enhancement allows for more granular performance analysis by providing detailed CPU usage statistics for individual applications and CPU core types within traces.

23 filesgrow
9ad2b0dMay 21

This commit implements a **defensive bug fix** for the **Android kernel wakelock tracing** subsystem, specifically addressing occasional implausibly large wakelock values reported by `SuspendControlService`. The `android_kernel_wakelocks` probe in `traced` now includes logic to detect these erroneous values, **ignoring** them from processing and instead setting an error flag (`kKernelWakelockErrorImplausiblyLargeValue`). A new statistic, `kernel_wakelock_implausibly_large_value_reported`, is also introduced and incremented within the **trace processor** to track the frequency of these occurrences. This change prevents corrupted or misleading wakelock data from appearing in traces, significantly improving the reliability and accuracy of **kernel wakelock analysis**.

5 fileswaste
6b5c4c2May 20

This commit introduces a new **diff test** for **Android kernel wakelocks** within the **trace processor's standard library**. It adds a new test data file, `android_kernel_wakelocks.textproto`, and integrates a corresponding test case, `test_android_kernel_wakelocks`, into `tests.py`. This **maintenance** work enhances the **testing infrastructure** by ensuring the accurate processing and output of Android kernel wakelock information. The new test improves the reliability of **Android performance analysis** by preventing regressions in wakelock data interpretation.

2 filesmaint
1570131May 19

This commit **fixes a regression** in the **Perfetto SQL standard library**'s **Android kernel wakelocks** analysis. It **corrects a bug** in the `src/trace_processor/perfetto_sql/stdlib/android/kernel_wakelocks.sql` query, specifically within the `_android_kernel_wakelocks_joined` CTE. The `GROUP BY` clause was mistakenly applied to a pre-renamed `ts` column, rather than the intended `original_ts` after a recent cleanup. This ensures **accurate aggregation** and **correct data analysis** for **Android kernel wakelock traces**, preventing erroneous results in Perfetto's SQL interface.

1 fileswaste
a6f552aMay 16

This commit **fixes a bug** in the **Perfetto SQL standard library** by correcting the `duration` calculation within the `android_kernel_wakelocks` table. Previously, an erroneous `WHERE` clause in `src/trace_processor/perfetto_sql/stdlib/android/kernel_wakelocks.sql` caused the `dur` column to only reflect "awake time," leading to inaccurate total duration reporting for kernel wakelocks. The change removes this incorrect filter, ensuring `dur` now represents the true total duration. Additionally, a new `awake_dur` column is introduced to explicitly expose the "awake time" duration, providing more granular data for **Android power management trace analysis**.

1 fileswaste

Work Patterns

Beta

Commit activity distribution by hour and day of week. Shows when this developer is most active.

Collaboration

Beta

Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.

NavigaraNavigara
OrganizationsDistributionCompareResearch