dicksites / KUtrace

Low-overhead tracing of all Linux kernel-user transitions, for serious performance analysis. Includes kernel patches, loadable module, and post-processing software. Output is HTML/SVG per-CPU-core timeline that you can pan/zoom down to the nanosecond.
Other
625 stars 56 forks source link

Add Android support for KUtrace #4

Closed k-sareen closed 1 year ago

k-sareen commented 1 year ago

This commit adds support for running KUtrace on Android. Build and setup instructions are described in linux/android/README.md. This commit also fixes some bugs in the postprocessing such as assuming 32-bit time counters for ARM64.

Two sets of patches are added: with and without kernel ABI changes. The patches without ABI changes should apply cleaner to kernel versions which don't match the ones specified in the README.

This commit also improves the base40.cc program to print delimiting pairs of labels.

k-sareen commented 1 year ago

This PR makes some changes to the common post-processing. If you're worried that it might break support for some other platform, then let me know and we can figure out how to work around it.

EDIT: I also have a branch here that restructures the entire repository to reduce code duplication. We can rebase and merge that branch after merging this PR.

dicksites commented 1 year ago

Wow. Kunal, many thanks for pulling all this together. I looked at all the diffs except the 30K-line patch file and it all looks excellent. Approved.

I have never done a github change approval before, so I don't know if I have done every necessary step. Please let me know if there is more for me to do.

Thanks, /dick

On Thu, Aug 17, 2023 at 8:12 PM Kunal Sareen @.***> wrote:

@k-sareen https://github.com/k-sareen requested your review on: #4 https://github.com/dicksites/KUtrace/pull/4 Add Android support for KUtrace.

— Reply to this email directly, view it on GitHub https://github.com/dicksites/KUtrace/pull/4#event-10125530536, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMR3XI66TT3E2WSYH5V6HV3XV3MSLANCNFSM6AAAAAA3U5KVQE . You are receiving this because your review was requested.Message ID: @.***>

k-sareen commented 1 year ago

Did you mean linux/android/aosp.patch? That's the one with the changes to the XML ABI. linux/android/aosp-without-abi-changes.patch should be a small-ish patch with just the changes we made to add KUtrace markers to the kernel.

EDIT: If everything looks good then you can merge the PR using the "Merge pull request" button below.

dicksites commented 1 year ago

Yes, aosp.patch. My mistake (off by one line). If this file needs another pair of eyes to look at it, Sara might be best. /dick

On Fri, Aug 18, 2023 at 11:40 PM Kunal Sareen @.***> wrote:

Did you mean linux/android/aosp.patch? That's the one with the changes to the XML ABI. linux/android/aosp-without-abi-changes.patch should be a small-ish patch with just the changes we made to add KUtrace markers to the kernel.

— Reply to this email directly, view it on GitHub https://github.com/dicksites/KUtrace/pull/4#issuecomment-1684861351, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMR3XI6MHBQN2AJLHF6JDJDXWBNUNANCNFSM6AAAAAA3U5KVQE . You are receiving this because your review was requested.Message ID: @.***>

k-sareen commented 1 year ago

No it's fine. The XML changes are auto-generated so no one would really understand it. The XML changes are for the kernel symbol CRCs. aosp.patch is just the XML ABI change + ABI file change + aosp-without-abi-changes.patch.