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 -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp