New issue
Advanced search Search tips

Issue 838786 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 23
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

Improving power_LowMemorySuspend

Project Member Reported by vovoy@chromium.org, May 2 2018

Issue description

There are some issues in power_LowMemorySuspend.
1. Inbox re-verification, after about 40 mins usage, inbox page would switch to account verification page and memory usage is greatly reduced. Changing the switching and suspending time to 40 mins instead of 1 hour as the system is no longer in low memory state after 40 mins.

2. DevToolsClientConnectionError when try to get active tab count

05/01 01:05:41.530 INFO |               job:0232| 		FAIL	power_LowMemorySuspend	power_LowMemorySuspend	timestamp=1525161941	localtime=May 01 01:05:41	Unhandled DevToolsClientConnectionError: timed out
  Traceback (most recent call last):
    File "/usr/local/autotest/common_lib/test.py", line 831, in _call_test_function
      return func(*args, **dargs)
    File "/usr/local/autotest/common_lib/test.py", line 495, in execute
      dargs)
    File "/usr/local/autotest/common_lib/test.py", line 362, in _call_run_once_with_retry
      postprocess_profiled_run, args, dargs)
    File "/usr/local/autotest/common_lib/test.py", line 400, in _call_run_once
      self.run_once(*args, **dargs)
    File "/usr/local/autotest/tests/power_LowMemorySuspend/power_LowMemorySuspend.py", line 109, in run_once
      suspend_seconds, additional_sleep)
    File "/usr/local/autotest/tests/power_LowMemorySuspend/power_LowMemorySuspend.py", line 96, in cycling_suspend
      self.check_tab_discard(cr, tabs)
    File "/usr/local/autotest/tests/power_LowMemorySuspend/power_LowMemorySuspend.py", line 60, in check_tab_discard
      active_tabs = len(cr.browser.tabs)
    File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/browser/tab_list.py", line 15, in __len__
      return self._tab_list_backend.__len__()
    File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend_list.py", line 95, in __len__
      self._Update()
    File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend_list.py", line 99, in _Update
      backends_map = self._devtools_client.GetUpdatedInspectableContexts()
    File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py", line 376, in GetUpdatedInspectableContexts
      contexts = self._ListInspectableContexts()
    File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py", line 301, in _ListInspectableContexts
      return self._devtools_http.RequestJson('')
    File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py", line 107, in RequestJson
      return json.loads(self.Request(path, timeout))
    File "/usr/local/telemetry/src/third_party/catapult/telemetry/telemetry/internal/backends/chrome_inspector/devtools_http.py", line 88, in Request
      response = self._conn.getresponse()
    File "/usr/local/lib64/python2.7/httplib.py", line 1132, in getresponse
      response.begin()
    File "/usr/local/lib64/python2.7/httplib.py", line 453, in begin
      version, status, reason = self._read_status()
    File "/usr/local/lib64/python2.7/httplib.py", line 409, in _read_status
      line = self.fp.readline(_MAXLINE + 1)
    File "/usr/local/lib64/python2.7/socket.py", line 480, in readline
      data = self._sock.recv(self._rbufsize)
  DevToolsClientConnectionError: timed out
 
Project Member

Comment 1 by bugdroid1@chromium.org, May 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/e1570ec937c532b44a4b85187cf758260bf6c16d

commit e1570ec937c532b44a4b85187cf758260bf6c16d
Author: Kuo-Hsin Yang <vovoy@chromium.org>
Date: Tue May 08 03:45:48 2018

power_LowMemorySuspend: adjusting test duration and handling exceptions

After 40 mins usage, inbox page would switch to account verification
page and memory usage is greatly reduced. Changing the switching and
suspending time to 40 mins instead of 1 hour as the system is no longer
in low memory state after 40 mins.

Handling the timeout or connection errors when getting active tab count
in check_tab_discard().

BUG= chromium:838786 
TEST=run autotest

Change-Id: I94a2a24b5146e7985d56bcfa3d18dc2d4642d3da
Reviewed-on: https://chromium-review.googlesource.com/1043668
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Vovo Yang <vovoy@chromium.org>
Reviewed-by: Cheng-Yu Lee <cylee@google.com>

[modify] https://crrev.com/e1570ec937c532b44a4b85187cf758260bf6c16d/client/site_tests/power_LowMemorySuspend/power_LowMemorySuspend.py

Comment 2 by vovoy@chromium.org, May 10 2018

Some test failed with SpuriousWakeupError. for example:
https://pantheon.corp.google.com/storage/browser/chromeos-autotest-results/198281643-chromeos-test/chromeos2-row7-rack8-host3/debug

05/08 00:49:05.593 INFO |               job:0232| 		FAIL	power_LowMemorySuspend	power_LowMemorySuspend	timestamp=1525765745	localtime=May 08 00:49:05	Unhandled SpuriousWakeupError: Woke from suspend early
  Traceback (most recent call last):
    File "/usr/local/autotest/common_lib/test.py", line 831, in _call_test_function
      return func(*args, **dargs)
    File "/usr/local/autotest/common_lib/test.py", line 495, in execute
      dargs)
    File "/usr/local/autotest/common_lib/test.py", line 362, in _call_run_once_with_retry
      postprocess_profiled_run, args, dargs)
    File "/usr/local/autotest/common_lib/test.py", line 400, in _call_run_once
      self.run_once(*args, **dargs)
    File "/usr/local/autotest/tests/power_LowMemorySuspend/power_LowMemorySuspend.py", line 109, in run_once
      suspend_seconds, additional_sleep)
    File "/usr/local/autotest/tests/power_LowMemorySuspend/power_LowMemorySuspend.py", line 89, in cycling_suspend
      sys_power.do_suspend(suspend_seconds)
    File "/usr/local/autotest/cros/power/sys_power.py", line 165, in do_suspend
      check_wakeup(alarm)
    File "/usr/local/autotest/cros/power/sys_power.py", line 130, in check_wakeup
      raise SpuriousWakeupError('Woke from suspend early')
  SpuriousWakeupError: Woke from suspend early

Comment 3 by vovoy@chromium.org, May 10 2018

Cc: cylee@chromium.org
Project Member

Comment 4 by bugdroid1@chromium.org, May 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/third_party/autotest/+/7c88b9f268a72f522e20777755febcbb4f7f9b0d

commit 7c88b9f268a72f522e20777755febcbb4f7f9b0d
Author: Kuo-Hsin Yang <vovoy@chromium.org>
Date: Sat May 12 11:00:50 2018

power_LowMemorySuspend: Handle SpuriousWakeupError

SpuriousWakeupError is raised when the system wake up before the
expected resume time, e.g. if do_suspend(10) is called but the system
resumes after 5 seconds. It's OK to have less than or equal to 5
SpuriousWakeupError on this stress test.

Refactor power_LowMemorySuspend to reduce indentation depth, handle
SpuriousWakeupError, and fix some minor issues.

BUG= chromium:838786 
TEST=run autotest

Change-Id: I6139a83f25e1e378aaefaca763e3bfd9b93daa80
Reviewed-on: https://chromium-review.googlesource.com/1053613
Commit-Ready: Vovo Yang <vovoy@chromium.org>
Tested-by: Vovo Yang <vovoy@chromium.org>
Reviewed-by: Vovo Yang <vovoy@chromium.org>

[modify] https://crrev.com/7c88b9f268a72f522e20777755febcbb4f7f9b0d/client/site_tests/power_LowMemorySuspend/power_LowMemorySuspend.py

Components: OS>Performance>Memory
Status: Fixed (was: Started)

Sign in to add a comment