Package: pbbuttonsd Version: 0.7.5-1 Severity: normal Hi,
at first some numbers:
#v+
% dstat -cpyi --ipc 2 5
----total-cpu-usage---- ---procs--- ---system-- ----interrupts--- --sysv-ipc-
usr sys idl wai hiq siq|run blk new|_int_ _csw_|__41_ __42_ __47_|msg sem shm
5 1 93 0 0 0| 0 0 1| 73 422 | 1 9 3 | 1 0 4
1 0 99 0 0 0| 1 0 0| 32 66 | 0 9 1 | 1 0 4
1 0 97 0 1 0| 1 0 0| 177 93 | 0 9 16 | 1 0 4
1 0 99 0 0 0| 1 0 0| 32 67 | 0 9 1 | 1 0 4
1 0 99 0 0 0| 1 0 0| 32 67 | 0 9 1 | 1 0 4
1 0 99 0 0 0| 1 0 0| 32 67 | 0 9 1 | 1 0 4
% invoke-rc.d pbbuttonsd start
% dstat -cpyi --ipc 2 5
----total-cpu-usage---- ---procs--- ---system-- ----interrupts--- --sysv-ipc-
usr sys idl wai hiq siq|run blk new|_int_ _csw_|__41_ __42_ __47_|msg sem shm
5 1 93 0 0 0| 0 0 1| 73 422 | 1 9 3 | 2 0 4
1 0 99 0 0 0| 1 0 0| 52 265 | 0 9 1 | 2 0 4
1 0 99 0 0 0| 1 0 0| 59 267 | 0 9 1 | 2 0 4
1 0 99 0 0 0| 1 0 0| 52 265 | 0 9 1 | 2 0 4
1 0 99 0 0 0| 1 0 0| 52 264 | 0 9 1 | 2 0 4
1 0 99 0 0 0| 1 0 0| 60 265 | 0 9 1 | 2 0 4
#v-
As you can see the rate of context switches grow dramatically after
starting pbbuttonsd. I ran ltrace on pbbuttonsd and found the following:
#v+
27289 14:42:09.441868 fopen("/proc/pmu/battery_0", "r") = 0x10033948
27289 14:42:09.442145 fgets("\n", 805445632, 1024) = 0x7fece420
27289 14:42:09.442465 strtok("\n", ":\n") = NULL
27289 14:42:09.442596 fgets("flags : 00000011\n", 805445655, 2) =
0x7fece420
27289 14:42:09.442753 strtok("flags : 00000011\n", ":\n") = "flags
"
27289 14:42:09.442920 strncmp("flags", "flags ", 5) = 0
27289 14:42:09.443065 strtok(NULL, ":\n") = "
00000011"
[…]
27289 14:42:09.450221 fgets(NULL, 0, 1024) = NULL
27289 14:42:09.450390 fclose(0x10033948) = 0
27289 14:42:09.450627
sprintf("\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"...,
NULL) = 19
27289 14:42:09.450811 fopen("/proc/pmu/battery_1", "r") = 0
27289 14:42:09.451148 msgrcv(65536, 0x7fecc508, 8192, 0, 2048) = -1
27289 14:42:09.451354 __errno_location() = 0x3001c0f0
27289 14:42:09.451487 __errno_location() = 0x3001c0f0
[…]
27289 14:42:09.541523 read(9, "", 32) = 2
27289 14:42:09.541672
sprintf("\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"...,
NULL) = 19
27289 14:42:09.541856 fopen("/proc/pmu/battery_0", "r") = 0x10033948
27289 14:42:09.542099 fgets("\n", 805445632, 1024) = 0x7fece420
27289 14:42:09.542388 strtok("\n", ":\n") = NULL
#v-
The time between each access to /proc/pmu/battery_0 is really short –
100ms. The data in this files is not so often updated as you poll it.
I think on a laptop the rate of context switches should be low, because
each context switch consumes CPU cycles and this need power which is
precious on a mobile machine.
Bye, Jörg.
-- System Information:
Debian Release: unstable/experimental
APT prefers unstable
APT policy: (990, 'unstable'), (1, 'experimental')
Architecture: powerpc (ppc)
Shell: /bin/sh linked to /bin/dash
Kernel: Linux 2.6.17-rc6
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Versions of packages pbbuttonsd depends on:
ii hdparm 6.6-1 tune hard disk parameters for high
ii libasound2 1.0.11-7 ALSA library
ii libc6 2.3.6-15 GNU C Library: Shared libraries
ii libgcc1 1:4.1.1-2 GCC support library
ii libglib2.0-0 2.10.3-1 The GLib library of C routines
ii libstdc++6 4.1.1-2 The GNU Standard C++ Library v3
ii lsb-base 3.1-10 Linux Standard Base 3.1 init scrip
ii makedev 2.3.1-81 creates device files in /dev
ii udev 0.093-1 /dev/ and hotplug management daemo
Versions of packages pbbuttonsd recommends:
pn laptop-mode-tools <none> (no description available)
-- no debconf information
pgpzdWIixvkN8.pgp
Description: PGP signature

