20

我发现“top”的结果与标准 linux 中的结果不同。我在网上搜索了一下,但找不到我的答案。例如,以下是我的 android 中 top 的部分结果:

  PID CPU% S  #THR     VSS     RSS PCY UID      Name
  814   2% R     1    940K    372K  fg root     top
  110   1% S    58 185000K  59216K  fg system   system_server
   31   0% S     1      0K      0K  fg root     vsync_workqueue
   49   0% S     1      0K      0K  fg root     file-storage
   52   0% S     1      0K      0K  fg root     gp2a_wq
  178   0% S     9  98476K  23820K  fg system   com.android.systemui

所以#THR 可能是线程数。但什么是“PCY”?我在 /proc/(PID)/ 文件夹中找不到此信息。而且我发现如果我打开一个 youtube,PCY 将是 fg。然后如果我退出它(youtube),youtube 进程仍然存在,但 PCY 将是 bg。就“S”而言,我发现所有进程始终都是“S”,这意味着睡眠,即使我的 youtube 应用程序当前处于活动状态。很奇怪...

有没有人有任何线索:> Thx

4

4 回答 4

24

这是我的(未受过教育的)猜测:

PID - 进程 ID

CPU% - CPU 使用率

S - 状态(或可能的状态) R=Running, S=Sleeping

#THR - 线程数

PCY - 我有点难过。您似乎很好地掌握了它的作用,所以这就足够了(假设 fg 和 bg 是唯一可能的值)

UID - 启动任务的用户名

名称 - 这个是不言自明的......

VSS 和 RSS:来自http://groups.google.com/group/android-beginners/browse_thread/thread/e6f2d396a68238ad?pli=1

虚拟集大小(有时缩写为 VSZ)和驻留集大小。谷歌搜索会找到一些 Linux 的详细信息。这是高速版本:

VSS 表示有多少虚拟内存与进程关联,Resident Set Size 表示有多少物理页面与进程关联。

VSS 在 Android 上通常没有意义。如果我对一个 1MB 的文件进行内存映射,VSS 会增长 1MB,但我没有使用任何资源(除了虚拟映射表中的条目)。

RSS 在 Android 上部分没有意义,因为它不能识别多个进程之间共享的页面。如果进程 A 的 RSS 为 2MB,进程 B 的 RSS 为 2MB,则可能有 4MB 的物理页面被占用。也有可能只有 2MB 的物理页面被占用。

编辑:就您的 Youtube 正在休眠的交易而言,如果它没有积极地做任何事情,即使它在前台,它也会处于休眠状态。尝试创建一个基本上是 while(1){Do something senseless} 的简单应用程序,看看它是在休眠还是在运行。当然,这也可能是 Android 处理多任务处理方式的一个怪癖。

EDIT2:
PCY 的大部分未受过教育的有点随机刺伤 -
PCY - 策略 - 确定 Android 的内存管理器应如何处理应用程序
FG - 前台 - 进程被视为前台进程并且不应该被杀死以释放 mmemory
BG -- 后台 -- 进程被认为是后台进程(不在前台主动运行并且可能被杀死以释放内存)

于 2012-04-07T07:07:25.710 回答
3

顶级源代码 [顶级源代码][1]

[1]:http ://androidxref.com/4.0.4/xref/system/core/toolbox/top.c#442 获取每个值如何计算的完整逻辑

于 2014-01-08T11:26:51.840 回答
-1

这个页面说了VSS和RSS是什么意思,但是没有具体说明如何获取更有意义的PSS和USS

于 2014-04-02T00:40:34.037 回答
-1

尝试man top任何普通的 linux / unix(尽管我认为 Android 默认没有安装 man )。

实际上,现在我看起来似乎man该页面上没有提到那些列标题,但重点man是通常是开始寻找有关 linux / unix 命令信息的最佳位置。

于 2012-04-07T02:27:11.080 回答