{"id":518,"date":"2022-01-13T15:45:06","date_gmt":"2022-01-13T23:45:06","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/?p=518"},"modified":"2022-06-29T11:10:50","modified_gmt":"2022-06-29T18:10:50","slug":"new-android-logcat-support-available-in-microsoft-performance-tools-for-linux-android","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/new-android-logcat-support-available-in-microsoft-performance-tools-for-linux-android\/","title":{"rendered":"New Android logcat support available in Microsoft Performance Tools for Linux &#038; Android"},"content":{"rendered":"<p>We recently added support for parsing <a href=\"https:\/\/developer.android.com\/studio\/command-line\/logcat\">Android logcat<\/a> logs to the OSS <a href=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/category\/microsoft-performance-tools\/linux-android\/\">Microsoft-Performance-Tools-Linux-Android project<\/a>. Logcat is a text-based dump of system &amp; app messages on Android.<\/p>\n<p>This is what the logcat log would look like when loaded in <a href=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wpa-intro\/\">Windows Performance Analyzer (WPA)<\/a> <img decoding=\"async\" width=\"2500\" height=\"1029\" class=\"wp-image-519\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-timeline-d.png\" alt=\"Graphical user interface, application, timeline Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-timeline-d.png 2500w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-timeline-d-300x124.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-timeline-d-1024x422.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-timeline-d-768x316.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-timeline-d-1536x632.png 1536w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-timeline-d-2048x843.png 2048w\" sizes=\"(max-width: 2500px) 100vw, 2500px\" \/><\/p>\n<h2>Logcat for performance<\/h2>\n<p>Logcat is useful in general, but why do we find it useful for performance work? Don\u2019t we already have an official performance tooling available with a full-featured and <a href=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/perfetto-tooling-for-analyzing-android-linux-and-chromium-browser-performance-microsoft-performance-tools-linux-android\/\">system-level Perfetto tracing<\/a>?<\/p>\n<p>The answer is yes Perfetto is great for deep level system tracing, but one shortcoming is that Perfetto doesn\u2019t cover the boot scenario very well. There is no Linux or Android <em>deep tracing<\/em> that I know of that covers kernel boot. The Perfetto tracing starts after kernel sometime in usermode, and <a href=\"https:\/\/github.com\/google\/perfetto\/issues\/211\">only captures at best 1\/2 to 1\/3 of total boot<\/a>. So Perfetto is great for analyzing run-time perf after the system is booted, but currently doesn\u2019t cover boot very well, even on the upcoming Android 13.<\/p>\n<h2>Logcat in tooling<\/h2>\n<p>Why is it useful to have this logcat log supported in the tooling?<\/p>\n<p>If you are just looking at diagnostics or errors, looking at the log with grep or your favorite text viewer should suffice. However, when analyzing performance, a bunch of useful features become available that would be cognitively difficult for a human analyst to easily perform. More features will be covered below but initially some of the benefits are:<\/p>\n<ol>\n<li>Ability to automatically display &amp; measure relative time differences between log statements. This is useful for quickly finding big jumps \/ gaps in the logs indicative of a long operation.<\/li>\n<li>Calculation of duration information (how long something took). You have to find which operations are long, which is not trivial with a search pattern looking at thousands of entries with different log formats and time formats. You also want to get quickly be able to jump to where something started without doing the duration math.<\/li>\n<li>A visual UI showing the longest duration operations and those gaps<\/li>\n<li>The ability to correlate \/ show on the same timeline other events. For example, displaying Windows ETW events if Android is running in a VM with <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/android\/wsa\/\">Windows Subsystem for Android (WSA)<\/a>.<\/li>\n<\/ol>\n<h2>Walkthrough using Windows Subsystem for Android (WSA)<\/h2>\n<p>In our example we will be looking at the boot of a Windows Subsystem for Android (WSA) VM.<\/p>\n<p>In this post we will use the following tools and will walk through each of them<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/microsoft\/Microsoft-Performance-Tools-Linux-Android\/releases\" target=\"_blank\" rel=\"noopener\">Microsoft-Performance-Tools-Linux-Android<\/a> (version 1.3.2 or later)<\/li>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/p\/windows-performance-analyzer-preview\/9n58qrw40dfw\" target=\"_blank\" rel=\"noopener\">Windows Performance Analyzer (Preview)<\/a><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/android\/wsa\/\">Windows Subsystem for Android (WSA) installed on Windows 11<\/a><\/li>\n<\/ul>\n<h2>App launch Scenario and log capture<\/h2>\n<p>Because the scenario involves running Android in a VM, we will capture both a Windows host trace and the Android guest boot logcat log. The lifecycle of the VM in WSA is covered under <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/android\/wsa\/#vm-lifecycle-considerations\">VM lifecycle considerations<\/a><\/p>\n<ol>\n<li>Start capturing a Windows trace. We will capture <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-hardware\/test\/wpt\/built-in-recording-profiles\">General, CPU, Disk<\/a>, and <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-hardware\/test\/wpt\/wpa-reference-set\">Reference Set<\/a> memory events in a memory buffer.\n<ol>\n<li>From an Administrator command-prompt type\n<ol>\n<li>\u2018wpr -start GeneralProfile -start CPU -start DiskIO -start ReferenceSet\u2019<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Start the VM via an app launch. In this case \u2018Amazon AppStore\u2019 is included in WSA so we will launch that app.<\/li>\n<li>An app loading UI will be presented. Once the Amazon app is fully launched and you can see the Amazon app launch UI then continue.<\/li>\n<li>Stop capturing the Windows trace\n<ol>\n<li>From an Administrator command-prompt type\n<ol>\n<li>\u2018wpr -stop WSALaunchAmazonAppStore.etl -skipPdbGen\u2019<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>Copy the latest Android guest logcat to the same location as the .etl file. The logcat log is found under this path\n<ol>\n<li>%localappdata%\\packages\\MicrosoftCorporationII.WindowsSubsystemForAndroid_8wekyb3d8bbwe\\LocalState\\diagnostics\\logcat<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>Analyzing the traces \u2013 Setup<\/h2>\n<ol>\n<li>We will be using <a href=\"https:\/\/www.microsoft.com\/en-us\/p\/windows-performance-analyzer-preview\/9n58qrw40dfw\">WPA (Preview)<\/a> UI for the rest of the analysis and screenshots, so install it from the Microsoft Store.\n<ol>\n<li>Note: Older versions of WPA are not compatible with the SDK and the toolkit<\/li>\n<\/ol>\n<\/li>\n<li>Download the Microsoft-Performance-Tools-Linux-Android 1.3.2 toolset (or later) from GitHub <a href=\"https:\/\/github.com\/microsoft\/Microsoft-Performance-Tools-Linux-Android\/releases\">releases<\/a><\/li>\n<li>Extract the zip file and navigate to Microsoft-Performance-Tools-Linux-Android\\Launcher\\Windows\n<ol>\n<li>Given the release came from the Internet, you may need to unblock the .bat or .ps1 file using right-click properties unblock<\/li>\n<\/ol>\n<\/li>\n<li>Double-click LaunchWpaPerfToolsLinuxAndroid.bat which will launch the WPA UI pre-configured to load the plugins<\/li>\n<li>Once WPA is loaded, click Help -&gt; About and you should see a bunch of plugins pre-loaded including Android Logcat support<\/li>\n<\/ol>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/AndroidLogCatAbout.png\"><img decoding=\"async\" class=\"alignnone wp-image-531 size-medium\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/AndroidLogCatAbout-300x143.png\" alt=\"Image AndroidLogCatAbout\" width=\"300\" height=\"143\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/AndroidLogCatAbout-300x143.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/AndroidLogCatAbout-768x366.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/AndroidLogCatAbout.png 853w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>Loading our trace in unified mode<\/h2>\n<ol>\n<li>In WPA, from here you should be able to open logcat files from the File -&gt; Open menu<\/li>\n<li>Multi-select the 2 log files and choose \u2018Open Unified\u2019<\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"wp-image-521\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/a-screenshot-of-a-computer-description-automatica.png\" alt=\"A screenshot of a computer Description automatically generated\" width=\"628\" height=\"388\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/a-screenshot-of-a-computer-description-automatica.png 1264w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/a-screenshot-of-a-computer-description-automatica-300x185.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/a-screenshot-of-a-computer-description-automatica-1024x633.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/a-screenshot-of-a-computer-description-automatica-768x475.png 768w\" sizes=\"(max-width: 628px) 100vw, 628px\" \/><\/p>\n<ol start=\"3\">\n<li>The 2 trace files timelines will be loaded into the same unified timeline and available side-by-side in the WPA GUI for analysis.\n<ol>\n<li>If you need to open the log in a different timezone other than what it was captured on see <a href=\"https:\/\/github.com\/microsoft\/Microsoft-Performance-Tools-Linux-Android\/blob\/develop\/LinuxTraceLogCapture.md\">this workaround<\/a>.<\/li>\n<\/ol>\n<\/li>\n<li>From here on out, we will just focus on the Android logcat features as <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-hardware\/test\/wpt\/windows-performance-analyzer\">Windows ETW analysis<\/a> is a separate deep topic.<\/li>\n<li>In Graph Explorer, Android Logcat graphs will appear and can be double-clicked to open<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"445\" height=\"478\" class=\"wp-image-522\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-calendar-description-automatically-generat.png\" alt=\"Chart, calendar Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-calendar-description-automatically-generat.png 445w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-calendar-description-automatically-generat-279x300.png 279w\" sizes=\"(max-width: 445px) 100vw, 445px\" \/><\/p>\n<ol start=\"6\">\n<li>For Duration Analysis &#8211; Open \u201cAndroid Logcat Durations\u201d \u201cLongest Duration\u201d\n<ol>\n<li>Various durations should automatically appear depending on the <a href=\"https:\/\/github.com\/microsoft\/Microsoft-Performance-Tools-Linux-Android\/blob\/develop\/LinuxTraceLogCapture.md\">loglevel detail<\/a>. Android <a href=\"https:\/\/source.android.com\/setup\/develop\/new-device#userdebug-guidelines\">userdebug builds<\/a> will log and show much more detail and thus more durations here.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>Logcat Analysis<\/h2>\n<p>Here are some various questions that can now be easily answered related to perf.<\/p>\n<ol>\n<li>What is the duration of kernel boot to init?<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"2500\" height=\"370\" class=\"wp-image-523\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-with-lo.png\" alt=\"Chart Description automatically generated with low confidence\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-with-lo.png 2500w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-with-lo-300x44.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-with-lo-1024x152.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-with-lo-768x114.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-with-lo-1536x227.png 1536w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-with-lo-2048x303.png 2048w\" sizes=\"(max-width: 2500px) 100vw, 2500px\" \/><\/p>\n<ol start=\"2\">\n<li>How long is init and its sub-operations?<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"3184\" height=\"1059\" class=\"wp-image-524\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description.png\" alt=\"Graphical user interface, application Description automatically generated with medium confidence\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description.png 3184w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-300x100.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1024x341.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-768x255.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1536x511.png 1536w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-2048x681.png 2048w\" sizes=\"(max-width: 3184px) 100vw, 3184px\" \/><\/p>\n<ol start=\"3\">\n<li>What are the longest operations?<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"3121\" height=\"1066\" class=\"wp-image-525\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1.png\" alt=\"Graphical user interface, application Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1.png 3121w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1-300x102.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1-1024x350.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1-768x262.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1-1536x525.png 1536w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-application-description-1-2048x700.png 2048w\" sizes=\"(max-width: 3121px) 100vw, 3121px\" \/><\/p>\n<ol start=\"4\">\n<li>Are there any Looper message loop delays or OpenGLRenderer\u00a0perf jank issues?<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"3138\" height=\"733\" class=\"wp-image-526\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated.png\" alt=\"Chart Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated.png 3138w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-300x70.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-1024x239.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-768x179.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-1536x359.png 1536w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/chart-description-automatically-generated-2048x478.png 2048w\" sizes=\"(max-width: 3138px) 100vw, 3138px\" \/><\/p>\n<ol start=\"5\">\n<li>Even if there is no duration info in the log, what are the operations with the biggest gaps in the log which might suggest a long operation?\n<ol>\n<li>Here you can visually see gaps, zoom in and simply select events after the gap to find potential long operations quickly<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" width=\"3112\" height=\"1002\" class=\"wp-image-527\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/text-description-automatically-generated-with-med.png\" alt=\"Text Description automatically generated with medium confidence\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/text-description-automatically-generated-with-med.png 3112w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/text-description-automatically-generated-with-med-300x97.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/text-description-automatically-generated-with-med-1024x330.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/text-description-automatically-generated-with-med-768x247.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/text-description-automatically-generated-with-med-1536x495.png 1536w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/text-description-automatically-generated-with-med-2048x659.png 2048w\" sizes=\"(max-width: 3112px) 100vw, 3112px\" \/><\/p>\n<p>In addition, you get features like aggregation, sorting, filtering and more. One example with aggregation (Tag to left of gold bar) that is useful say if want to see all entries of a given Tag (Category) grouped together.<\/p>\n<p>E.g. Show me all messages from init or some other Tag grouped together<\/p>\n<p><img decoding=\"async\" width=\"3127\" height=\"1167\" class=\"wp-image-528\" src=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-text-application-descr.png\" alt=\"Graphical user interface, text, application Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-text-application-descr.png 3127w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-text-application-descr-300x112.png 300w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-text-application-descr-1024x382.png 1024w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-text-application-descr-768x287.png 768w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-text-application-descr-1536x573.png 1536w, https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-content\/uploads\/sites\/64\/2022\/01\/graphical-user-interface-text-application-descr-2048x764.png 2048w\" sizes=\"(max-width: 3127px) 100vw, 3127px\" \/><\/p>\n<h2>Bonus \/ Next Steps &#8211; Deeper dive into the WPA UI<\/h2>\n<p>You may be interested in these other blogs post covering WPA in more detail. The great thing about the integration with WPA, is that the Microsoft-Performance-Tools-Linux-Android plugins are considered first class right along with Windows ETW support. This means that almost every powerful WPA feature covered in these blog posts, seamlessly is the same experience and also applicable to the Microsoft-Performance-Tools-Linux-Android plugins. Enjoy!<\/p>\n<h5><a href=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wpa-intro\/\">Windows Performance Analyzer \u201cWPA\u201d Intro<\/a><\/h5>\n<h5><a href=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wpa-table-graph-configurations-part-1\/\">Windows Performance Analyzer \u2013 Table &amp; Graph Configurations (Part 1)<\/a><\/h5>\n<h5><a href=\"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wpa-table-graph-configurations-part-2\/\">WPA: Table &amp; Graph Configurations (Part 2)<\/a><\/h5>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We recently added support for parsing Android logcat logs to the OSS Microsoft-Performance-Tools-Linux-Android project. Logcat is a text-based dump of system &amp; app messages on Android. This is what the logcat log would look like when loaded in Windows Performance Analyzer (WPA) Logcat for performance Logcat is useful in general, but why do we find [&hellip;]<\/p>\n","protected":false},"author":77202,"featured_media":76,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[39,38,2],"tags":[],"class_list":["post-518","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux-android","category-microsoft-performance-tools","category-windows-performance-analyzer"],"acf":[],"blog_post_summary":"<p>We recently added support for parsing Android logcat logs to the OSS Microsoft-Performance-Tools-Linux-Android project. Logcat is a text-based dump of system &amp; app messages on Android. This is what the logcat log would look like when loaded in Windows Performance Analyzer (WPA) Logcat for performance Logcat is useful in general, but why do we find [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/posts\/518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/users\/77202"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/comments?post=518"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/posts\/518\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/media\/76"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/media?parent=518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/categories?post=518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/performance-diagnostics\/wp-json\/wp\/v2\/tags?post=518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}