Commit Graph

1342 Commits

Author SHA1 Message Date
Dianne Hackborn
904a857d5a More work on procstats: save/restore state, fixes.
We now persistent the current procstats to storage
to keep them across boots.  Still need to do division
and pruning across days; right now they will just keep
collecting forever.

Also fix some bugs in the checkin output.

Change-Id: I4dd9317dbe2ee0642af8f2f0be1f2bd9c4055e80
2013-06-28 18:45:46 -07:00
Dianne Hackborn
2179a522d3 Merge "Start really collecting PSS data for process stats." 2013-06-28 01:59:24 +00:00
Dianne Hackborn
cfc837f7fa Start really collecting PSS data for process stats.
The activity manager now uses some heuristics to try to
sample PSS data from processes so that it can get enough
data to over reasonable time have something useful, without
doing it too aggressively.

The current policy is:

1. Whenever a significant global change happens (memory state,
   sceen on or off), we collect PSS from all processes; this will
   not happen more than every 10 minutes.
2. When all activities become idle, we will collect PSS from the
   current top process; this will not happen more than every 2
   minutes per process.
3. We will sample the top-most process's PSS every 5 minutes.
4. When an process's oom adj changes and it has been more than
   30 minutes since PSS has been collected from it, we will
   collect a new PSS sample.
5. If a process changes from service A to service B (meaning it
   has been running a service for a long time), we will collect
   a PSS sample from it.
6. If someone explicitly requests PSS data (for running services
   UI or dumpsys), record that.

Also:

- Finish moving the procstats output all to the new format.
- Record information about processes being killed due to excessive
  wake locks or CPU use in procstats.
- Rework how we structure common vs. per-package process stats to
  make it simpler to deal with.
- Optimize the Debug.getPss() implementation (we use it a lot now).
  Should probably optimize it further at some point.

Change-Id: I179f1f7ae5852c7e567de4127d8457b50d27e0f0
2013-06-27 18:56:00 -07:00
Craig Mautner
5729b81ab5 Merge "Add API to convert translucent Activity to opaque." 2013-06-27 21:00:44 +00:00
Dianne Hackborn
97e1d53d36 Merge "Fix issue #9586838: Crash after waking up Hammerhead device" 2013-06-27 20:25:59 +00:00
Dianne Hackborn
ebe830683e Fix issue #9586838: Crash after waking up Hammerhead device
Change-Id: I114306871f02b2461619e8a1cc9652f343edd117
2013-06-27 12:42:13 -07:00
Craig Mautner
8cbafbe6d2 Merge "Add debug for specific bug." 2013-06-27 19:29:05 +00:00
Craig Mautner
e7c58b6d7d Add debug for specific bug.
To be removed once the bug is fixed.

Change-Id: Ie273d4503bb0b534af0e9efe8f45c573766e9a74
2013-06-27 11:52:04 -07:00
Dianne Hackborn
053f61d6a6 Work on issue #9586838: Crash after waking up Hammerhead device
I made the power manager more rigid, not allowing different uids
to use the same wake lock.  This never should happen.  I would
guess there is somewhere that the activity manager is acquiring
the wake lock without clearing the calling identity...  but it is
hard to follow all the paths this may happen in.  So here we add
some checks when acquiring/releasing the wake lock to make sure
it is being done as the system uid.

Also:

- Protect the new activity stack calls with a permission, and
make sure to clear the calling uid once past that.
- Collect uid data from process stats so we can correctly
associate CPU use with a uid even if we don't know about the
pid for some reason.
- Fix battery stats dump commands to clear calling uid before
executing so they aren't broken.

Change-Id: I0030d4f7b614e3270d794ecfc3669139a5703ce9
2013-06-26 19:17:15 -07:00
Dianne Hackborn
b4e1249493 Add new ActivityManager.isLowRamDevice().
This and the old isHighEndGfx() is set up through a
device configuration, rather than trying to compute it
automatically.

Change-Id: Ibc95c05791023a7ae6c88555b75bb61f2b613991
2013-06-26 15:50:02 -07:00
Dianne Hackborn
13ac041b9f Update procstats to start collecting/reporting pss.
Completely reworked how it manages its data, since trying
to keep track of all of the possible pss data with the old
data structures would have made it huge.  Now we have a sparse
data structure for pss and process times.  (Will switch service
times over to it soon.)

Currently the only thing that collects pss data is running
"dumpsys meminfo".  More will be added later.

Modified checkin output to also scale better as more distinct
data categories are added, and added output of pss data.  Now
instead of dumping every possible entry as a comma-separated
list, it dumps a comma-separated list of only the entries with
data, tagged with the state they go with.

Also fixed some problems in the checkin reporting of batterystats
(it needs to escape commas), added checkin reporting of the history
list, fixed parsing of kernel wake locks to strip quotes, fixed
wake lock name that the sync manager generates to be more sane.

Change-Id: Ibf4010838a9f685ebe1d93aff86c064ccc52b861
2013-06-26 11:45:36 -07:00
Craig Mautner
4addfc5f39 Add API to convert translucent Activity to opaque.
Fixes bug 9298778.

Change-Id: If6198f42bdea8aa727a2abc672eb0062aaf63ca3
2013-06-25 16:56:37 -07:00
Dianne Hackborn
d982851d29 Merge "Use FastPrintWriter... everywhere." 2013-06-25 01:18:57 +00:00
Dianne Hackborn
8c84109b9f Use FastPrintWriter... everywhere.
One problem this turned up is, because FastPrintWriter does
its own buffering, a lot of code that used to use PrintWriter
would fail -- if it pointed to a StringWriter, there was no
buffering, so it could just immediately get the result.  Now
you need to first flush the FastPrintWriter.

Also added some new constructors to specify the size of buffer
that FastPrintWriter should use.

Change-Id: If48cd28d7be0b6b3278bbb69a8357e6ce88cf54a
2013-06-24 18:16:48 -07:00
Craig Mautner
a3f62a8439 Merge "When an app dies launch home conditionally." 2013-06-24 23:31:00 +00:00
Craig Mautner
37f748db85 When an app dies launch home conditionally.
The determination for whether to launch home after an app dies
did not include whether the app would have returned home on exit.
This fixes that by checking what the app would naturally return to.

Fixes bug 9466261.

Change-Id: Ife6e895b9ef8c11b0a7f470d3eac4e88e763930b
2013-06-24 16:19:55 -07:00
Dianne Hackborn
3af16b226b Merge "Improve FastPrintWriter." 2013-06-24 23:02:02 +00:00
Dianne Hackborn
e5a9c92377 Improve FastPrintWriter.
Change-Id: I23acb8d4c3db1f2f8e2f8003296f8c253e2ae7d2
2013-06-24 15:54:52 -07:00
Craig Mautner
7a78b39428 Merge "Fix unnecessary and harmful task movement." 2013-06-24 18:38:11 +00:00
Craig Mautner
f0ac5c87f2 Fix unnecessary and harmful task movement.
Changing the focus to a new activity should not move it to the top of
the task stack. When the previous activity fully pauses and the new
focused activity resumes then it will be brought to the top of the
task stack at the proper time. Moving it there prematurely causes the
ActivityManager and WindowManager stack sequences to be out of sync.

Fixes bug 9518153.

Also remove false warnings in validateTopActivitiesLocked() and add
debug for task movement to TaskStack.

Change-Id: Ib57500b07ded97223155cda7ef603aecc9b642c3
2013-06-24 11:29:09 -07:00
Craig Mautner
fb1e20dfe2 Don't move stack with task for moveTaskToFront.
Earlier CL, ag/321609, was overly aggressive. It should only have kept
the stack from moving when moveTaskToStack() was called. Instead the
change was applied to moveTaskToFront() as well. In order to remain
consistent with earlier behavior of moveTaskToFront() the stack
containing the task must move to the front as well. This movement
launches the activity at the top of the task. Without the stack
movement the activity never gets launched causing bug 9498455.

Fixes bug 9498455.

Change-Id: I2cb9119c23a226f7d211851df9e49f10f702b3ef
2013-06-23 21:28:10 -07:00
Dianne Hackborn
a17c0f5e16 More procstats work: separate global proc account, more dumping.
We now keep track of the time actually process run independently
of the time packages run in process, so we can give an accurate
summary of how long each physical process runs.

New command line options can be supplied to restrict printing to
a specific package, dump in a new csv format, control what is
printed in the csv format, and print a checkin report.

Add toString methods to ArrayMap and ArraySet.

Change-Id: I47b8f68472592ecc0088c5286d3564aa615f4e0a
2013-06-21 15:03:41 -07:00
Nick Kralevich
b1c5945a55 Merge "NativeCrashListener: fix file descriptor leak." 2013-06-19 15:35:48 +00:00
Nick Kralevich
1b2d59500a NativeCrashListener: fix file descriptor leak.
Sending thousands of crashes can result in the system
eventually running out of file descriptors. Close file
descriptors after we're done with them.

Change-Id: I09ae9ce36426ded3fd591dda9a3550a19c2f01d3
2013-06-18 17:56:28 -07:00
Craig Mautner
a7cfb4f827 Merge "Fix stack transfer bug." 2013-06-18 23:57:56 +00:00
Craig Mautner
1d001b670e Fix stack transfer bug.
Set the focused stack to the task with the started activity. Do not refocus
when activities report resume.

Add more conditional debug.

Fixes bug 9481679.

Change-Id: Ib7134e88f9a2c8ad1703af0d43442c8bbe4e65dc
2013-06-18 16:55:48 -07:00
Jim Miller
9512953c66 Move Keyguard to the systemui process.
This should save some memory on devices with limited amounts of RAM
by allowing it to share the graphics context with systemui.

Initially, adding this to the systemui process triggered a bug where
the shared process id didn't exist in the table yet. The change to
ActiveServices tries to work around this by explicitly adding the package in
attachApplicationLocked().

Change-Id: I9e97d5d69ddd15d7f16aca83a57bdf381811a13b
2013-06-18 15:28:28 -07:00
Craig Mautner
fd1ce8d5a7 Add new API getStackBoxInfo
Change-Id: Ie2861e5e31bb3876cfe2d5c3d04ff58bb3955634
2013-06-17 18:34:28 -07:00
Craig Mautner
d213beae75 Don't bring stack forward when moving tasks.
Change-Id: I222eda9e3ea62119c8948a99a63de55b13ca69f4
2013-06-17 12:30:32 -07:00
Dianne Hackborn
91268cf21e More work on process tracking.
Re-arranged code to be more flexible, now track
state of services, dump ordered list of running
processes while memory was critical and low.

Also rename battery stats service from "batteryinfo" to "batterystats".

Change-Id: I0f4f0c8d443c49d255cb84d0fc917e8ec18b152e
2013-06-14 17:30:17 -07:00
Dianne Hackborn
78a369c90f Improve process tracking.
We now keep track of when each process is running, batched
by the current memory status of the device.  In addition,
the stats are organized by package first, and then processes
associated with each package inside of that.  Finally, we
also keep track of the overall time spent in each memory
status.

This should start to actually get us to some information
we can reach some conclusions about.  The total time spent
in each memory status gives us some indication of how much
we are running while memory is low; the new package organization
batched by memory status lets us see what packages have
what processes running when memory is low.

Change-Id: I389d62d39d115a846126cf354e4c20070d8f1180
2013-06-12 11:45:27 -07:00
Jeff Sharkey
126713d8d7 Merge "Explicit locale when formatting machine strings." 2013-06-11 23:52:17 +00:00
Dianne Hackborn
a283fc9518 Merge "Add new API to retrieve a dumpsys of a single package." 2013-06-11 23:33:32 +00:00
Jeff Sharkey
fea17de7aa Explicit locale when formatting machine strings.
Bug: 9390451
Change-Id: I3581c53407554a1dffd541fb42b06d68f20a7be0
2013-06-11 14:36:41 -07:00
Dianne Hackborn
cbfd23ee6f Add new API to retrieve a dumpsys of a single package.
Adds a platform API, and pm command.  Fixes some issues with
dumping per-package data in package manager, makes battery
stats able to dump per-package state.

Change-Id: I76ee6d059f0ba17f7a7061886792b1b716d46d2d
2013-06-11 14:26:53 -07:00
Craig Mautner
7873300a2b Don't change task type for launcher activities.
When the launcher starts a new activity don't let it change the task
type. This would cause the stacks to get confused.

Fixes bug 9323103.

Change-Id: Ie1d9c3bf85461827c7255e68003f11ed5a38f63b
2013-06-10 13:54:49 -07:00
Dianne Hackborn
be4e6aaa02 Initial super-primitive process tracker.
The goal of this is to keep track of what app processes
are doing, to determine who is being abusive, when the system
is getting into memory constrained situations, and help the
user determine how to resolve this.

Right now it doesn't really do any of that, just keeps track
of how long every process has been running since boot.

Also update the activity manager to use "cached" as the terminology
for what it used to interchangeably call hidden and background
processes, and switch ProcessMap over to using ArrayMap.

Change-Id: I270b0006aab1f38e17b7d9b65728679173c343f2
2013-06-07 15:09:17 -07:00
Jeff Sharkey
7a1c3fce47 Accumulate network statistics based on deltas.
Network stats are now read out of the kernel in one sweep, instead of
reading per-UID.  We now accumulate the delta traffic between each
stats snapshot using the well-tested SamplingCounter pattern.

Since Wi-Fi and mobile traffic have different costs, track each
separately.  Avoids counting misc interfaces like loopback and
ethernet under total.

Bug: 5543387
Change-Id: I642004dc530113c27ef79f2abbae51d8af30117f
2013-06-06 14:35:34 -07:00
Dianne Hackborn
7ad34e5fb2 Improve debug printing in activity manager.
Dumping per-package data is now much cleaning, and only really
prints information related to the package.  Also clean up the
formatting and such of the new activity stack states.

Change-Id: Ie5f31d72b7e77b34fd9acd835f28ed1db1dff328
2013-06-06 11:05:50 -07:00
Adam Powell
3f7a6935d3 Merge "Fix a bug resolving the correct icon/logo in action bars" 2013-06-01 00:07:05 +00:00
Adam Powell
04fe6ebb9f Fix a bug resolving the correct icon/logo in action bars
Remove some abstraction-breaking magic in ActionBarView and replace it
with proper resolution of the icon/logo when creating a window. The
old implementation relied on the ActionBarView's context being an
Activity.

Bug 9171554

Change-Id: Idbbb1942622195dcb55e8119f2d64287b07bb509
2013-05-31 15:00:24 -07:00
Dianne Hackborn
390517be2d Clean up some temporary allocations.
Yay to ArrayMap, letting me get rid of a bunch of temporary
iterators in core code paths like updateOomAdj.  (Now I definitely
need an ArraySet to finish that up.)

Also clean up various other things that are doing unnecessary
allocations, clean up some debug output, make more of the debug
output respect package filtering.

Change-Id: Ib4979faf4de8c7912739bc0937c3fa9e7bfcde67
2013-05-30 19:26:42 -07:00
Amith Yamasani
ce863c6fe1 am 096d3843: am 3ec14d9c: am 9b76b2d2: Merge "framework:base: iterator error in singletone provider"
* commit '096d3843994dfef99a2670c38d72c31e96cdad74':
  framework:base: iterator error in singletone provider
2013-05-29 15:25:44 -07:00
Amith Yamasani
3ec14d9cf1 am 9b76b2d2: Merge "framework:base: iterator error in singletone provider"
* commit '9b76b2d29fa338a128f699a1f40f7f5916a512af':
  framework:base: iterator error in singletone provider
2013-05-29 15:18:50 -07:00
Amith Yamasani
9b76b2d29f Merge "framework:base: iterator error in singletone provider" 2013-05-29 22:04:01 +00:00
Jun Su
cca0965a1b framework:base: iterator error in singletone provider
In case of singletone provider, we don't count it in the guset user.
After we remove it from the array, and resize the array, need to move
iterator back.

Change-Id: I99920a6beccc9de0e67ffeb632b1940efaee10b9
2013-05-29 14:33:59 +08:00
Dianne Hackborn
21d9b56692 Add more details about why a force stop is happening.
Change-Id: Ia938cf6fc37ad22fc7447dc538968c7bd234be7d
2013-05-28 17:46:59 -07:00
Craig Mautner
41c0f353c6 Replace mFocusedStack with getFocusedStack()
mFocusedStack should not be used directly as it may be null. Added
a note to the declaration to remind future self of that.

Fixes bug 9165949.

Change-Id: I8fad428d93b50909be9e7ec51df81149c11313b3
2013-05-28 08:39:25 -07:00
Dianne Hackborn
087384b0af am f3251033: Merge "Framework/base: Added synchronization block to avoid race condition"
* commit 'f325103356c559d6378da7fb7db3b2a49aba5d13':
  Framework/base: Added synchronization block to avoid race condition
2013-05-26 00:02:24 -07:00
Dianne Hackborn
f325103356 Merge "Framework/base: Added synchronization block to avoid race condition" 2013-05-26 06:30:26 +00:00