Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Issue 2874543002: Refactor ARC OOM handler code (Closed)

Created:
3 years, 7 months ago by Yusuke Sato
Modified:
3 years, 7 months ago
CC:
chromium-reviews, elijahtaylor+arcwatch_chromium.org, oshima+watch_chromium.org, yusukes+watch_chromium.org, hidehiko+watch_chromium.org, lhchavez+watch_chromium.org, victorhsieh+watch_chromium.org, davemoore+watch_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Refactor ARC OOM handler code This CL moves around some code for Chrome OS OOM handling to make the code a bit easier to follow: * Previously, code for selecting "protected" processes was scattered around the file. One was in TabManagerDelegate::GetSortedCandidates for protecting PERSISTENT processes from *both* Chrome and kernel OOM handler, and the other was in LowMemoryKillImpl for protecting FOCUSED and VISIBLE processes from *only* Chrome. This CL moves the former to AdjustOomPrioritiesImpl to simplify the code. * Previously, tab_manager_delegate_chromeos.cc also directly used arc::mojom::ProcessState enums. This CL moves the code to arc::ArcProcess with unit tests to hide ARC details from the TabManagerDelegate class. * Previously, AdjustOomPrioritiesImpl had an assumption that the processes the function protected from the kernel always had -1000 OOM adjustment scores. The assumption is fine, but will make it difficult for us to e.g. protect arc::mojom::ProcessState::TOP processes from the kernel because unlike PERSISTENT ones, TOP processes change time to time and may have positive OOM adjustment scores. With this CL, AdjustOomPrioritiesImpl explicitly sets -1000 for processes the function protects to remove the assumption. In the future, we can modify ArcProcess::IsKillableForKernel as we like to experiment various OOM scoring policy without any artificial restrictions. * Add more unit tests for better code coverage. This CL does NOT change the current Chrome/kernel OOM handling behavior at all. This is pure code refactoring. Also, this CL does not touch the code for handling Chrome tabs. This is only for ARC. BUG=719537 TEST=try TEST=just in case, manually confirmed PERSISTENT processes still have -1000 adjustment. Review-Url: https://codereview.chromium.org/2874543002 Cr-Commit-Position: refs/heads/master@{#471099} Committed: https://chromium.googlesource.com/chromium/src/+/ee315bafcc115470e4b0b994b48602650b417db2

Patch Set 1 #

Patch Set 2 : rebase #

Total comments: 7

Patch Set 3 : address comments from Luis #

Total comments: 19

Patch Set 4 : address comments #

Patch Set 5 : comment fix only #

Patch Set 6 : address comments from Cheng-Yu #

Total comments: 6
Unified diffs Side-by-side diffs Delta from patch set Stats (+279 lines, -43 lines) Patch
M chrome/browser/chromeos/arc/process/arc_process.h View 1 2 3 1 chunk +11 lines, -0 lines 0 comments Download
M chrome/browser/chromeos/arc/process/arc_process.cc View 1 2 3 2 chunks +22 lines, -0 lines 2 comments Download
M chrome/browser/chromeos/arc/process/arc_process_unittest.cc View 1 2 3 2 chunks +151 lines, -1 line 0 comments Download
M chrome/browser/memory/tab_manager_delegate_chromeos.h View 1 2 3 3 chunks +14 lines, -1 line 0 comments Download
M chrome/browser/memory/tab_manager_delegate_chromeos.cc View 1 2 3 4 5 11 chunks +49 lines, -29 lines 4 comments Download
M chrome/browser/memory/tab_manager_delegate_chromeos_unittest.cc View 1 5 chunks +32 lines, -12 lines 0 comments Download

Messages

Total messages: 38 (24 generated)
Yusuke Sato
owners, ptal. https://codereview.chromium.org/2874543002/diff/20001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/20001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode13 chrome/browser/chromeos/arc/process/arc_process.cc:13: // A special process on Android side ...
3 years, 7 months ago (2017-05-09 22:54:35 UTC) #7
Luis Héctor Chávez
https://codereview.chromium.org/2874543002/diff/20001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/20001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode16 chrome/browser/chromeos/arc/process/arc_process.cc:16: static constexpr char kArcHomeProcess[] = "org.chromium.arc.home"; nit: static is ...
3 years, 7 months ago (2017-05-09 23:00:10 UTC) #8
Yusuke Sato
PTAL https://codereview.chromium.org/2874543002/diff/20001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/20001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode16 chrome/browser/chromeos/arc/process/arc_process.cc:16: static constexpr char kArcHomeProcess[] = "org.chromium.arc.home"; On 2017/05/09 ...
3 years, 7 months ago (2017-05-09 23:20:12 UTC) #10
Luis Héctor Chávez
lgtm with one nit i missed earlier https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process_unittest.cc File chrome/browser/chromeos/arc/process/arc_process_unittest.cc (right): https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process_unittest.cc#newcode61 chrome/browser/chromeos/arc/process/arc_process_unittest.cc:61: constexpr bool ...
3 years, 7 months ago (2017-05-10 14:21:46 UTC) #14
cylee1
https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode16 chrome/browser/chromeos/arc/process/arc_process.cc:16: constexpr char kArcHomeProcess[] = "org.chromium.arc.home"; A no-so-relevant comment : ...
3 years, 7 months ago (2017-05-10 16:31:55 UTC) #15
Yusuke Sato
Thanks! Please take another look. https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode16 chrome/browser/chromeos/arc/process/arc_process.cc:16: constexpr char kArcHomeProcess[] = ...
3 years, 7 months ago (2017-05-10 18:29:44 UTC) #19
cylee1
https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode52 chrome/browser/chromeos/arc/process/arc_process.cc:52: // Protect PERSISTENT, PERSISTENT_UI, and our HOME processes since ...
3 years, 7 months ago (2017-05-11 08:59:53 UTC) #23
Yusuke Sato
Please take another look. https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/40001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode52 chrome/browser/chromeos/arc/process/arc_process.cc:52: // Protect PERSISTENT, PERSISTENT_UI, and ...
3 years, 7 months ago (2017-05-11 18:50:16 UTC) #26
cylee1
Thanks for the refactoring ! One more question regarding kArcHomeProcess https://codereview.chromium.org/2874543002/diff/100001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/100001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode48 ...
3 years, 7 months ago (2017-05-11 19:29:14 UTC) #27
Yusuke Sato
https://codereview.chromium.org/2874543002/diff/100001/chrome/browser/chromeos/arc/process/arc_process.cc File chrome/browser/chromeos/arc/process/arc_process.cc (right): https://codereview.chromium.org/2874543002/diff/100001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode48 chrome/browser/chromeos/arc/process/arc_process.cc:48: process_name() == kArcHomeProcess; On 2017/05/11 19:29:14, cylee1 wrote: > ...
3 years, 7 months ago (2017-05-11 20:01:31 UTC) #30
cylee1
On 2017/05/11 20:01:31, Yusuke Sato wrote: > https://codereview.chromium.org/2874543002/diff/100001/chrome/browser/chromeos/arc/process/arc_process.cc > File chrome/browser/chromeos/arc/process/arc_process.cc (right): > > https://codereview.chromium.org/2874543002/diff/100001/chrome/browser/chromeos/arc/process/arc_process.cc#newcode48 ...
3 years, 7 months ago (2017-05-11 20:06:07 UTC) #31
cylee1
lgtm lgtm
3 years, 7 months ago (2017-05-11 20:06:23 UTC) #32
commit-bot: I haz the power
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2874543002/100001
3 years, 7 months ago (2017-05-11 22:29:19 UTC) #35
commit-bot: I haz the power
3 years, 7 months ago (2017-05-11 22:46:56 UTC) #38
Message was sent while issue was closed.
Committed patchset #6 (id:100001) as
https://chromium.googlesource.com/chromium/src/+/ee315bafcc115470e4b0b994b486...

Powered by Google App Engine
This is Rietveld 408576698