问题标签 [systrace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 无法在 HTC One M8 Lollipop 上进行系统跟踪
我正在尝试使用带有默认 systrace 选项集的 Android Studio 中的systrace 。我没有root手机。HTC Sense v6.0,Android 5.0.1,HTC SDK API 级别 6.55。当我这样做时,我得到可怕的“无法收集系统跟踪。原因:收集系统跟踪时出现意外错误”。使用 ADB shell,我确定 /sys/kernel/debug 存在,但 /sys/kernel/debug/tracing 不存在。
其他人对systrace和 HTC One M8 / Lollipop 有更好的运气吗?
android - 直接从目标设备运行 systrace
在我们的板上,USB 尚未启动。我们在播放视频时遇到了一些丢帧问题,我们想看看使用 systrace 发生了什么。现在,我使用了 systrace,但是使用 adb 和相关功能。
是否可以直接从目标设备运行 systrace 以便根本不使用 adb?在我看来它应该是,但我无法通过网络找到任何有用的东西!
谢谢!
android - Systrace 输出未显示图形/surfaceflinger 事件
我能够运行 systrace,但我看不到 SurfaceFlinger 的跟踪。GPU、bufferQueues 等
我给出了以下命令: systrace.py --time=10 -o mynewtrace.html sched gfx view wm hal video workq
它只为 CPU0、workqueues、irqs、kworker 等提供输出。
在编译内核时我们必须启用任何特定的跟踪器吗?我还缺少什么吗?
谢谢你!
javascript - 系统跟踪错误。未捕获的安全错误:无法在“历史”上执行“pushState”
我正在尝试打开 systrace 生成的 HTML 文件。当我单击一个块时,我用来获取所选切片信息,例如“持续时间”、“总时间”等。但是最新版本的 chrome 无法正常工作。
尝试了最新的 chrome(ver.45)、chrome beta(ver.46) 和 chrome Dev(ver.47) 版本,我发现所有版本都存在相同的问题。
我看到当我单击切片时,它没有显示详细信息,而是抛出错误说明
未捕获的安全错误:无法在“历史”上执行“pushState”:无法在源为“null”的文档中创建 URL 为“file:///C:/Users/ssundark/Desktop/vsync_off_default_sclk.html”的历史状态对象.
有人可以让我解决这个问题吗?或者如果有某种方法我们可以打开这个文件来了解选择的切片信息。
android - 视频播放的丢帧问题
我在播放视频时遇到丢帧问题。我们刚刚从 ICS 迁移到 KK4.4。视频非常小,320x240 分辨率。没有音频可以让事情变得简单。
Systrace 位于以下位置:https ://www.dropbox.com/s/bee6xymg3kpn4ft/mytrace2.html?dl=0
我启用了三重缓冲,并且 hwcomposer 正在为 SurfaceFlinger 生成假 vsync。
我可以看到以下问题:
三重缓冲未正确启用,因为视频解码器分配了 7 个缓冲区队列。如果三重缓冲对于从 TimedEventQueue(OnVideoEvent) 排队的每个帧都可以正常工作,那么应该出队的缓冲区应该落后 2 个插槽。例如:如果我们将 buf 4 排队,则 buf 2 应该出队,但出队的是前一个缓冲区,surfaceflinger 仅在下次有机会运行时才释放。因此延迟会导致视频的取消缓冲区赶上来。
SurfaceFlinger 本身需要一些时间才能完成。
对于 30 fps 的视频,Vsync 没有在适当的时间打开,每 33 毫秒。HWComposer 中的 vsync 生成逻辑存在问题,或者由于没有实际缓冲区排队,eventControl 未启用 vsync?
从我所做的以下评论更新:我注意到的其他事情是 async 和 mDequeueBufferCannotBlock 标志都是错误的,因此 getMinUndequeuedBufferCount() 返回 1 ,因此我们看到前一个缓冲区被要求出队,而不是缓冲区后面 2 个插槽. 请让我知道上述理解是否存在漏洞。以及我能做的任何事情来解决这个问题
任何帮助是极大的赞赏。
android - 确定和防止 Android 调度延迟
我目前正在尝试提高我的应用动画的流畅性。
我运行了 Android systrace 并发现了几个调度延迟警报,根据 systrace,这些警报会导致卡顿。
不幸的是,我无法理解 systrace 提供的其他数据。有人可以指出我如何找到调度延迟的原因吗?
提前致谢
android - 当设备静止但被触摸时 Android 动画的性能下降
我的应用程序每帧更改了一些非常简单的视图(旋转、平移)的属性。根据 Android 性能文章的建议,我使用 systrace 来检查我是否丢帧。
真的发生了一些意想不到的事情。当设备静止不动时(即使我触摸了屏幕)CPU 使用率更高,系统跟踪上的警报出现了,GPU 渲染分析器的红色部分更长。当我快速旋转或摇晃设备时,一切正常。
以下是结果的链接。Shake
是我真正快速旋转设备no_shake
的时候,是它被放在我桌子上的时候。
我制作了一个非常简单的测试应用程序,它使用单个翻译动画:源代码。
看看shake systrace,帧率平滑,为什么HW_VSYNC_0和HW_VSYNC_ON_0行没有数据?如何读取 CPU 频率(我在捕获跟踪时启用了该选项)。
关于这个问题,我的理论是该设备可能会降低 CPU 频率。如何在 systrace 中阅读此内容?我使用第 3 方应用程序来测试这个假设,如下所示,它是正确的。那么,我能做些什么来避免这个问题呢?
为什么设备会这样做?起初我认为该设备使用加速度计数据来了解它是否未被使用,然后它降低了 CPU 频率。但是,为了提高 CPU 频率,我必须非常努力地摇动设备。像普通人一样拿着它不会增加CPU频率。
我知道这是很多问题,但是在阅读了有关 Android 图形管道的所有相关文章后,我没有想法。
该问题出现在运行 Android 5.1 的 Sony Xperia Z3 上 该问题无法在运行 Android 6 的 Nexus 5 上重现。
更新
似乎性能问题是由 CPU/GPU 节流引起的。同样的设备,Xperia Z3,在运行 Android 4.4 时,尽管它降低了时钟速度,但根据 Systrace,它的性能更好。此外,它在摇晃时不会增加速度。
关于提高 CPU 速度所需的摇动手势,我注意到当我尝试将设备从纵向旋转到横向或反之亦然时,触发的 CPU 时钟会增加(即使应用程序没有改变方向)。所以,我认为监控这个手势的原因是为了加快可能的方向变化。
android - Android:traceview 和 systrace 工具的区别
我正在学习使用这些工具进行性能分析。我已经阅读了有关 traceview 和 systrace 的 Android 文档,但我没有看到任何主要区别。它们都有相同的 GUI:时间线和左侧的所有组件都在这条时间线上运行。主要目的是检测代码中长时间运行的任务。
traceview
所以,我的问题是:和之间的真正区别是什么systrace
。我们在什么情况下使用每种工具?
谢谢 :)