问题标签 [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 投票
2 回答
5290 浏览

android - 尝试在带有 KitKat 的 Moto X 上使用 systrace 时出现“权限被拒绝 (13)”

我正在关注http://developer.android.com/tools/debugging/systrace.html但无法在我的 Moto X (KitKat) 上运行 systrace。有任何想法吗?

0 投票
1 回答
2064 浏览

android - 使 Systrace 在 Mac 上与 4.1.2 设备一起工作

我一直在努力使用 systrace。

我的设备运行 4.1.2 (LT28i),我在 Mac 上。我正在用类似的问题弹跳 SO 问题,但没有一个人有明确的答案。

我想说跟踪viewsgraphics

方法一,日食:

在此处输入图像描述

错误:

在此处输入图像描述

方法二、终端:

我也尝试下面的命令并得到一个错误,但根据谷歌文档,只有在某些跟踪中才需要 root。

如何为视图或图形生成简单的 systrace?

手机中的调试已启用,并且“启用跟踪”也是(通过命令行或通过手机本身)。

0 投票
1 回答
1068 浏览

android - “SurfaceView”在 systrace 结果中代表什么?

在调查游戏卡顿问题时,我发现在游戏中的 eglSwapBuffer() 和 Surfaceflinger 中的 postFramebuffer() 之间,“SurfaceView”总是有一个延迟,从 0.5ms 持续到 10ms,这似乎非常随机且与 CPU 负载无关。这真正代表什么?它与 VSYNC 显示点有关吗?

http://i.stack.imgur.com/n8MvG.png

0 投票
1 回答
3259 浏览

android - 读取 systrace 日志

我知道这是以前问过的,但我担心“systrace 使用扩展 ftrace 的 atrace,所以在这里检查 ftrace 格式”对我来说还不够。我正在了解有关某些 systrace 特定标记/格式的更多详细信息。我有一些我没有信心的猜测,因此我需要真正了解它们的人来确认/否定。

这是我在 trace.html 中找到的一些结果。

Q1:为什么一个“线程”有不同的PID,有时会被安排在不同的CPU上同时运行,例如Thread-117?“线程”在这里的真正含义是什么?

Q2:“sched_switch”中的“prev_state”是什么意思?这个变量中的“S,D,R,R+”分别指的是什么?

Q3:“tracing_mark_write”使用 B 表示开始,C 表示更改,E 表示结束。但是 E 标签不带有跟踪名称。如何确定它对应的是哪个B标签?它是否在调用堆栈样式 LIFO 中工作?如果是这样,那么只有当“线程”是一个无法拆分以在两个 CPU 上连贯地运行的真实线程时,才能保证这一点。这使我们回到了第一季度。

任何帮助表示赞赏!

0 投票
1 回答
457 浏览

android - cpu时钟频率可以为0吗?

我正在使用 Ddms 中的 Systrace 在睡眠模式(屏幕关闭)下跟踪我的 Android 系统。在 systrace 的图中,我看到有时 CPU 频率为 0。所以,我想问一下,CPU 频率可以为 0 吗?

0 投票
1 回答
3429 浏览

android - Android 三重缓冲 - 预期的行为?

我正在调查我的应用程序的性能,因为我注意到它在滚动时丢了一些帧。我运行了 systrace(在运行 4.3 的 Nexus 4 上)并注意到输出中有一个有趣的部分

一开始一切都很好。放大左侧部分,我们可以看到绘图在每个 vsync 上开始,并在剩余时间结束时完成,并等待下一个 vsync。由于它是三重缓冲的,它应该被绘制到一个缓冲区中,该缓冲区将在完成后发布到以下 vsync 上。

在放大的屏幕截图中的第 4 个 vsync 上,应用程序做了一些工作,并且绘制操作没有及时完成下一个 vsync。但是,我们不会丢弃任何帧,因为之前的抽签是在前一帧进行的。

但是,在这种情况发生之后,绘图操作并不能弥补错过的垂直同步。相反,每个 vsync 只启动一个绘制操作,现在它们不再向前绘制一帧。

放大右侧部分,该应用程序做了更多的工作并且错过了另一个垂直同步。因为我们没有在前面画一个框架,所以实际上这里丢掉了一个框架。在此之后,它会回到前面绘制一帧。

这是预期的行为吗?我的理解是,如果您错过了 vsync,三重缓冲可以让您恢复,但这种行为看起来就像每错过两次 vsync 就会丢帧一次。


跟进问题

  1. 在此屏幕截图的右侧,应用程序实际上渲染缓冲区的速度比显示器消耗缓冲区的速度要快。在 performTraversals #1 期间(在屏幕截图中标记),假设正在显示缓冲区 A,正在渲染缓冲区 B。#1 在 vsync 之前很久就完成了,并将缓冲区 B 放入队列中。此时,应用程序不应该能够立即开始渲染缓冲区C吗?相反,performTraversals #2 直到下一个 vsync 才开始,这浪费了其间的宝贵时间。

  2. 同样,我对此处左侧是否需要 waitForever 感到有些困惑。假设缓冲区 A 正在显示,缓冲区 B 在队列中,缓冲区 C 正在渲染。当缓冲区 C 完成渲染时,为什么不立即将其添加到队列中?相反,它会一直等待直到缓冲区 B 从队列中删除,此时它会添加缓冲区 C,这就是为什么无论应用程序渲染缓冲区的速度有多快,队列似乎总是保持大小为 1。

0 投票
1 回答
365 浏览

android - atrace.c 在哪里?

我正在尝试编写一个脚本来使用 systrace 获取帧速率数据。

我知道 systrace 调用 atrace。但我找不到atrace.c 的位置。它是在 sdk 内还是在内核内?无论哪种方式,它都不存在于 msm 内核或最新的 android sdk 中。

谷歌的 git repo 显示它就在这里

https://android.googlesource.com/platform/system/extras/+/android-sdk-support_r11/atrace/atrace.c

但是我还没有克隆那个 repo。

所以我不确定 systrace 从哪里调用 atrace

我正在运行的 adb shell 命令是

0 投票
0 回答
1290 浏览

android - 尝试使用 android systrace.py 第 135 行时出错

android新手,想用systrace工具做一点调试,但是我无法在模拟器上运行该工具(尝试使用python 2.0.1、2.7.x、3.x运行python脚本)以及使用ADT .

但是它们都会产生不同的错误 :Systrace声称它需要 2.x,因此使用 Python 2.x 并执行 python 命令systrace.py --help,我得到:

但在管理员权限下:

使用 ADT 设置

ADT 设置快照

错误对话框 ADT 错误对话框的快照

其他相关信息:

  • 启用:Android Debugging , Profile GPU 渲染
  • 启用 OpenGL 跟踪:Systrace(图形)
  • 启用跟踪:图形输入
  • 尝试了其他解决方案,但得到“挂载:设备或资源繁忙”
0 投票
0 回答
151 浏览

android - 如何检查我的安卓手机是否支持使用 systrace 调试?

我读过一些手机,特别是内核不支持使用 systrace。当在我的手机上不起作用的相同 pc 配置在我的模拟器上运行时,它击中了我。

所以最终我的问题是:如何检查我的 android 手机是否支持使用 systrace 调试?

另外,如果可以的话,如果手机默认不支持,能不能开启?

其他相关信息:

  • 在有根的 android 手机上运行 (JellyBam 7.1 Rom)
  • 安卓版本:4.2.2
  • 如果重要的话,我正在从 Windows 7 ADT 运行 systrace(也尝试过命令行:Phython 版本 2.0.x、2.7.x 甚至 3.x)
0 投票
1 回答
682 浏览

android - 无法在 Note 10.1 上运行 systrace

无法开始追踪

尝试在 Note 10.1 2014 设备上运行 systrace 时出现上述错误。有任何想法吗?

我按照此处概述的 google 步骤操作:

http://developer.android.com/tools/help/systrace.html