← Back to team overview

touch-packages team mailing list archive

[Bug 1377854] [NEW] idle phone; polling with 85-195 ms timeouts on poll, possible unneccessary wakeups

 

Public bug reported:

While trying to figure out what's keeping the phone "busy" when idle
(trying to save power), I noticed that unity8 is performing a lot of
frequent poll() system calls with timeouts of 85-195 ms and it times out
on these the majority of times.    Wakeups keep a phone busy, so are
these timeout polls() necessary?

On mako, with a idle phone in the period between inactivity before the
screen blanks I observe:

root@ubuntu-phablet:~# strace -p $(pidof unity8) -e poll
Process 4195 attached
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 98) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 199) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 196) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 195) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 195) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 94) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 89) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 195) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 196) = 0 (Timeout)
poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 188) = 0 (Timeout)

So one can see the poll() in these calls is ~90-195 ms, causing ~5-6
wakeups a second which are poll timeouts. Since no other system calls
are being called, it looks like an inner loop re-polls again for another
timeout to occur again. Perhaps the timeout is too low?

Avoiding excessive wakeups does save power. In this case, it's not much,
but this is the largest cause of wakeups now on an idle phone.

** Affects: unity8 (Ubuntu)
     Importance: Low
         Status: New

** Changed in: unity8 (Ubuntu)
   Importance: Undecided => Low

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to unity8 in Ubuntu.
https://bugs.launchpad.net/bugs/1377854

Title:
  idle phone; polling with 85-195 ms timeouts on poll, possible
  unneccessary wakeups

Status in “unity8” package in Ubuntu:
  New

Bug description:
  While trying to figure out what's keeping the phone "busy" when idle
  (trying to save power), I noticed that unity8 is performing a lot of
  frequent poll() system calls with timeouts of 85-195 ms and it times
  out on these the majority of times.    Wakeups keep a phone busy, so
  are these timeout polls() necessary?

  On mako, with a idle phone in the period between inactivity before the
  screen blanks I observe:

  root@ubuntu-phablet:~# strace -p $(pidof unity8) -e poll
  Process 4195 attached
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 98) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 199) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 196) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 195) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 195) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 94) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 89) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 195) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 196) = 0 (Timeout)
  poll([{fd=3, events=POLLIN}, {fd=40, events=POLLIN}, {fd=41, events=POLLIN}, {fd=46, events=POLLIN}, {fd=61, events=POLLIN}, {fd=71, events=POLLIN}, {fd=72, events=POLLIN}], 7, 188) = 0 (Timeout)

  So one can see the poll() in these calls is ~90-195 ms, causing ~5-6
  wakeups a second which are poll timeouts. Since no other system calls
  are being called, it looks like an inner loop re-polls again for
  another timeout to occur again. Perhaps the timeout is too low?

  Avoiding excessive wakeups does save power. In this case, it's not
  much, but this is the largest cause of wakeups now on an idle phone.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/unity8/+bug/1377854/+subscriptions


Follow ups

References