问题标签 [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.

0 投票
0 回答
188 浏览

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 有更好的运气吗?

0 投票
0 回答
262 浏览

android - 直接从目标设备运行 systrace

在我们的板上,USB 尚未启动。我们在播放视频时遇到了一些丢帧问题,我们想看看使用 systrace 发生了什么。现在,我使用了 systrace,但是使用 adb 和相关功能。

是否可以直接从目标设备运行 systrace 以便根本不使用 adb?在我看来它应该是,但我无法通过网络找到任何有用的东西!

谢谢!

0 投票
1 回答
968 浏览

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 等提供输出。

在编译内核时我们必须启用任何特定的跟踪器吗?我还缺少什么吗?

谢谢你!

0 投票
4 回答
12536 浏览

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”的历史状态对象.

有人可以让我解决这个问题吗?或者如果有某种方法我们可以打开这个文件来了解选择的切片信息。

0 投票
0 回答
1568 浏览

android - Android systrace 调度帧

我在我的应用程序上运行 systrace 来识别问题。我的一个案例在 systrace 报告 html 中发出警告:

生成此帧的工作被推迟了几毫秒,导致卡顿。确保 UI 线程上的代码不会阻塞其他线程上正在执行的工作,并且后台线程(例如进行网络或位图加载)运行在 android.os.Process#THREAD_PRIORITY_BACKGROUND 或更低,因此它们不太可能中断用户界面线程。这些后台线程应该在内核进程下的调度部分显示为 130 或更高的优先级。

我理解这个警告,但我在我的跟踪报告中看不到任何原因。下面我附上了有问题的框架,那里是否有任何关于导致此问题的信息?

系统跟踪框架

0 投票
1 回答
1438 浏览

android - 视频播放的丢帧问题

我在播放视频时遇到丢帧问题。我们刚刚从 ICS 迁移到 KK4.4。视频非常小,320x240 分辨率。没有音频可以让事情变得简单。

Systrace 位于以下位置:https ://www.dropbox.com/s/bee6xymg3kpn4ft/mytrace2.html?dl=0

我启用了三重缓冲,并且 hwcomposer 正在为 SurfaceFlinger 生成假 vsync。

我可以看到以下问题:

  1. 三重缓冲未正确启用,因为视频解码器分配了 7 个缓冲区队列。如果三重缓冲对于从 TimedEventQueue(OnVideoEvent) 排队的每个帧都可以正常工作,那么应该出队的缓冲区应该落后 2 个插槽。例如:如果我们将 buf 4 排队,则 buf 2 应该出队,但出队的是前一个缓冲区,surfaceflinger 仅在下次有机会运行时才释放。因此延迟会导致视频的取消缓冲区赶上来。

  2. SurfaceFlinger 本身需要一些时间才能完成。

  3. 对于 30 fps 的视频,Vsync 没有在适当的时间打开,每 33 毫秒。HWComposer 中的 vsync 生成逻辑存在问题,或者由于没有实际缓冲区排队,eventControl 未启用 vsync?

从我所做的以下评论更新:我注意到的其他事情是 async 和 mDequeueBufferCannotBlock 标志都是错误的,因此 getMinUndequeuedBufferCount() 返回 1 ,因此我们看到前一个缓冲区被要求出队,而不是缓冲区后面 2 个插槽. 请让我知道上述理解是否存在漏洞。以及我能做的任何事情来解决这个问题

任何帮助是极大的赞赏。

0 投票
1 回答
2604 浏览

android - 确定和防止 Android 调度延迟

我目前正在尝试提高我的应用动画的流畅性。

我运行了 Android systrace 并发现了几个调度延迟警报,根据 systrace,这些警报会导致卡顿。

不幸的是,我无法理解 systrace 提供的其他数据。有人可以指出我如何找到调度延迟的原因吗?

提前致谢

0 投票
2 回答
2010 浏览

android - 当设备静止但被触摸时 Android 动画的性能下降

我的应用程序每帧更改了一些非常简单的视图(旋转、平移)的属性。根据 Android 性能文章的建议,我使用 systrace 来检查我是否丢帧。

真的发生了一些意想不到的事情。当设备静止不动时(即使我触摸了屏幕)CPU 使用率更高,系统跟踪上的警报出现了,GPU 渲染分析器的红色部分更长。当我快速旋转或摇晃设备时,一切正常。

以下是结果的链接。Shake是我真正快速旋转设备no_shake的时候,是它被放在我桌子上的时候。

我制作了一个非常简单的测试应用程序,它使用单个翻译动画:源代码

Systrace:不摇

CPU使用率: 在此处输入图像描述

GPU 分析器: 在此处输入图像描述

看看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 时钟会增加(即使应用程序没有改变方向)。所以,我认为监控这个手势的原因是为了加快可能的方向变化

0 投票
1 回答
104 浏览

android - 跟踪如何计算一帧

我使用 chrome 上的跟踪来分析使用 systrace 从 android 设备捕获的文件。我想知道跟踪如何计算帧并将其标记为不同的类型。我在github中有跟踪源代码,但似乎不包括这个功能呢。

(英语不是我的母语,所以这里可能有很多错误,:P)

系统跟踪

0 投票
1 回答
1579 浏览

android - Android:traceview 和 systrace 工具的区别

我正在学习使用这些工具进行性能分析。我已经阅读了有关 traceview 和 systrace 的 Android 文档,但我没有看到任何主要区别。它们都有相同的 GUI:时间线和左侧的所有组件都在这条时间线上运行。主要目的是检测代码中长时间运行的任务。

traceview所以,我的问题是:和之间的真正区别是什么systrace。我们在什么情况下使用每种工具?

谢谢 :)