Le 09/03/2014 00:03, David C. Rankin a écrit : > Tim, All, > > In working though testing, I used 'tdedebugdialog --fullmode' and set the '0 > generic' output to file kdebug.dbg (the default name) for all 4 (information, > warning, error, etc). That file was over 46 Megabytes and 431,000 lines > repeating tdepowersave activity in a 12 hour period. tdepowersave is constantly > churning away in the following loop (2 examples): > > tdepowersave: unmonitored device changed: /sys/devices/ > tdepowersave: unmonitored device changed: > /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input4/event3//dev/input/event3 > tdepowersave: unmonitored device changed: > /sys/devices/LNXSYSTM:00/LNXSLPBN:00/input/input5/event4//dev/input/event4 > tdepowersave: unmonitored device changed: > /sys/devices/pci0000:00/0000:00:03.0/net/enp0s3/enp0s3 > tdepowersave: unmonitored device changed: > /sys/devices/pci0000:00/0000:00:04.0/input/input3/event2//dev/input/event2 > tdepowersave: unmonitored device changed: > /sys/devices/pci0000:00/0000:00:06.0/usb2/2-1/2-1:1.0/input/input2/event1//dev/input/event1 > tdepowersave: unmonitored device changed: > /sys/devices/platform/i8042/serio0/input/input0/event0//dev/input/event0 > tdepowersave: unmonitored device changed: > /sys/devices/platform/i8042/serio1/input/input7/event6//dev/input/event6 > tdepowersave: unmonitored device changed: > /sys/devices/platform/pcspkr/input/input6/event5//dev/input/event5 > tdepowersave: unmonitored device changed: /sys/devices/ > tdepowersave: unmonitored device changed: > /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input4/event3//dev/input/event3 > tdepowersave: unmonitored device changed: > /sys/devices/LNXSYSTM:00/LNXSLPBN:00/input/input5/event4//dev/input/event4 > tdepowersave: unmonitored device changed: > /sys/devices/pci0000:00/0000:00:03.0/net/enp0s3/enp0s3 > tdepowersave: unmonitored device changed: > /sys/devices/pci0000:00/0000:00:04.0/input/input3/event2//dev/input/event2 > tdepowersave: unmonitored device changed: > /sys/devices/pci0000:00/0000:00:06.0/usb2/2-1/2-1:1.0/input/input2/event1//dev/input/event1 > tdepowersave: unmonitored device changed: > /sys/devices/platform/i8042/serio0/input/input0/event0//dev/input/event0 > tdepowersave: unmonitored device changed: > /sys/devices/platform/i8042/serio1/input/input7/event6//dev/input/event6 > tdepowersave: unmonitored device changed: > /sys/devices/platform/pcspkr/input/input6/event5//dev/input/event5 > > This is with the tde_dbus_hardwarecontrol happily set and not doing its > repeating loop. Why is tdepowersave changing unmonitored devices multiple times > per second? Is this just it spitting out what activity it read for various > hardware devices (net, mouse, speaker)?? My mouse is usb, so I can see input > there (not while I'm sleeping though), but why would any of the serial devices > every change - they are not used. This looks like a true race condition, because > none of my devices are changing, and they are certainly not changing multiple > times every second while I'm asleep :) > Hello, I've been instigating the CPU wasting issue in tdepowersave as well. I've found out that the CPU cycles are mostly eaten by the TDEHW library, not in tdepowersave itself. See: tdelibs/tdecore/tdehw/tdehardwaredevice.cpp At line 244 and 246, you can see that there are 2 timers that are initialized. The 1st timer is used to poll for CPU-related changes every 500ms. It triggers a function line 409: void TDEHardwareDevices::processModifiedCPUs() The 2nd timer ise used to poll other-devices changes every 1000ms. It triggers a function line 740: void TDEHardwareDevices::processStatelessDevices() After tracing, it looks like the 2nd timer is the most CPU-eating. It basically rescans all hardware devices of the computer ! On the other side, as you have found, tdepowersave receives notification for every device in the system, and must filter the interesting one (cpu-related or battery-related). I think there are 2 different solutions here: 1) find a way to remove the periodic polling and use notifications from kernel instead (but how ?) 2) optimize the polling code so that it eats less CPU Francois