Hi
I`ve been using powertop to optimize to power usage of my Dell D600 and
I can`t get rid of the "extra timer interrupt" wakeups:
Cn Avg residency (5s) P-states (frequencies)
C0 (cpu running) ( 2,3%)
C1 0,0ms ( 0,0%) 1,80 Ghz 0,0%
C2 15,8ms ( 3,5%) 1,60 Ghz 0,0%
C3 25,2ms ( 4,1%) 1400 Mhz 0,0%
C4 20,5ms (90,1%) 600 Mhz 100,0%
Wakeups-from-idle per second : 47,8
no ACPI power usage estimate available
Top causes for wakeups:
23,9% ( 7,8) <interrupt> : extra timer interrupt
21,5% ( 7,0) konqueror : schedule_timeout (process_timeout)
13,5% ( 4,4) X : do_setitimer (it_real_fn)
7,4% ( 2,4) <kernel module> : wrap_set_timer (KeSetTimer)
6,1% ( 2,0) ifplugd : schedule_timeout (process_timeout)
6,1% ( 2,0) kmail : schedule_timeout (process_timeout)
3,1% ( 1,0) kwin : schedule_timeout (process_timeout)
3,1% ( 1,0) klipper : schedule_timeout (process_timeout)
3,1% ( 1,0) ip : tg3_open (tg3_timer)
3,1% ( 1,0) kwrapper : do_nanosleep (hrtimer_wakeup)
1,2% ( 0,4) yakuake : schedule_timeout (process_timeout)
1,2% ( 0,4) <kernel module> : <f88c61fd>
(irlmp_discovery_timer_expired)
1,2% ( 0,4) <kernel core> : neigh_table_init_no_netlink
(neigh_periodic_timer)
0,6% ( 0,2) <interrupt> : i8042
0,6% ( 0,2) <interrupt> : Intel 82801DB-ICH4, ndiswrapper
0,6% ( 0,2) <interrupt> : yenta, yenta, eth1, eth0,
[EMAIL PROTECTED]:0000:01:00.0
0,6% ( 0,2) klauncher : schedule_timeout (process_timeout)
0,6% ( 0,2) X : schedule_timeout (process_timeout)
0,6% ( 0,2) init : schedule_timeout (process_timeout)
0,6% ( 0,2) <kernel core> : page_writeback_init (wb_timer_fn)
0,6% ( 0,2) runscript.sh : __netdev_watchdog_up (dev_watchdog)
0,6% ( 0,2) kded : schedule_timeout (process_timeout)
Suggestion: enable the HPET (Multimedia Timer) in your BIOS or add
the kernel patch to force-enable HPET. HPET support allows Linux to
have much longer sleep intervals.
After searching the net I`ve learned that this is caused by a disabled
HPET. I`ve tried applying the patches from www.linuxpowertop.org site
to force HPET enable but no luck. The /proc/timer_list also doesn`t
show it:
[EMAIL PROTECTED] ~ $ cat /proc/timer_list
Timer List Version: v0.3
HRTIMER_MAX_CLOCK_BASES: 2
now at 2971440543301 nsecs
cpu: 0
clock 0:
.index: 0
.resolution: 1 nsecs
.get_time: ktime_get_real
.offset: 1186169273893923030 nsecs
active timers:
clock 1:
.index: 1
.resolution: 1 nsecs
.get_time: ktime_get
.offset: 0 nsecs
active timers:
#0: <ecfcfed8>, tick_sched_timer, S:01, tick_nohz_restart_sched_tick,
swapper/0
# expires at 2971450000000 nsecs [in 9456699 nsecs]
#1: <ecfcfed8>, it_real_fn, S:01, do_setitimer, X/15654
# expires at 2971457122702 nsecs [in 16579401 nsecs]
#2: <ecfcfed8>, hrtimer_wakeup, S:01, do_nanosleep, kwrapper/15729
# expires at 2971562410662 nsecs [in 121867361 nsecs]
#3: <ecfcfed8>, hrtimer_wakeup, S:01, do_nanosleep, cron/6181
# expires at 3007834144925 nsecs [in 36393601624 nsecs]
.expires_next : 2971450000000 nsecs
.hres_active : 1
.nr_events : 190872
.nohz_mode : 2
.idle_tick : 2971440000000 nsecs
.tick_stopped : 0
.idle_jiffies : 267143
.idle_calls : 239356
.idle_sleeps : 153045
.idle_entrytime : 2971430368946 nsecs
.idle_sleeptime : 2363421424939 nsecs
.last_jiffies : 267143
.next_jiffies : 267168
.idle_expires : 2971680000000 nsecs
jiffies: 267144
Tick Device: mode: 1
Clock Event Device: <NULL>
tick_broadcast_mask: 00000000
tick_broadcast_oneshot_mask: 00000000
Tick Device: mode: 1
Clock Event Device: pit
max_delta_ns: 27461866
min_delta_ns: 12571
mult: 5124677
shift: 32
mode: 3
next_event: 2971450000000 nsecs
set_next_event: pit_next_event
set_mode: init_pit_timer
event_handler: hrtimer_interrupt
I`ve only managed to lower the number of extra interrupts by setting HZ
to 100. Do you have any suggestions what else can be done to enable the
HPET ?
Also there is konqueror. It`s the second cause of wakeups and after some
investigation I discovered that it has to do with periodically
contacting the xserver. Here is a part of the strace:
select(10, [3 4 5 7 9], [], [], {0, 0}) = 0 (Timeout)
gettimeofday({1186172031, 631278}, NULL) = 0
gettimeofday({1186172031, 631512}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 631964}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 17540}) = 0 (Timeout)
gettimeofday({1186172031, 661790}, NULL) = 0
write(3, "=\0\4\0\311\1\300\1\320\7\320\7\324\1<\0007\0\4\0\334\16"...,
316) = 3
16
read(3, 0xbf870cd0, 32) = -1 EAGAIN (Resource
temporarily unavai
lable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\1\223\236\0\0\0\0M\0\0\0006\20\0\1\22\7Z\0\22\7Z\0\0"...,
32) = 32
write(3, "(\0\4\0M\0\0\0\311\1\300\1\22\7Z\0", 16) = 16
read(3, 0xbf870d00, 32) = -1 EAGAIN (Resource
temporarily unavai
lable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\1\224\236\0\0\0\0\0\0\0\0\330\vS\7\1\0\0\0\0\20\0\0"..., 32)
= 32
gettimeofday({1186172031, 664300}, NULL) = 0
write(3, "<\0\2\0\335\16\300\1<\1\2\0\334\16\300\1\233\5\4\0\336"...,
48) = 48
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 664474}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 61320}) = 0 (Timeout)
gettimeofday({1186172031, 734196}, NULL) = 0
gettimeofday({1186172031, 736595}, NULL) = 0
gettimeofday({1186172031, 736836}, NULL) = 0
gettimeofday({1186172031, 738143}, NULL) = 0
gettimeofday({1186172031, 738680}, NULL) = 0
gettimeofday({1186172031, 738902}, NULL) = 0
write(3, ">\0\7\0X\7\300\1\365\1\300\1\371\0\300\1\0\0\0\0\0\0\0"...,
28) = 28
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 739799}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 18344}) = 0 (Timeout)
gettimeofday({1186172031, 778668}, NULL) = 0
write(3, "=\0\4\0\311\1\300\1\320\7\320\7\324\1<\0007\0\4\0\336\16"...,
284) = 2
84
read(3, 0xbf870cd0, 32) = -1 EAGAIN (Resource
temporarily unavai
lable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\1\247\236\0\0\0\0M\0\0\0006\20\0\1\22\7Z\0\22\7Z\0\0"...,
32) = 32
write(3, "(\0\4\0M\0\0\0\311\1\300\1\22\7Z\0", 16) = 16
read(3, 0xbf870d00, 32) = -1 EAGAIN (Resource
temporarily unavai
lable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\1\250\236\0\0\0\0\0\0\0\0\330\vS\7\1\0\0\0\0\20\0\0"..., 32)
= 32
gettimeofday({1186172031, 781511}, NULL) = 0
write(3, "<\0\2\0\337\16\300\1<\1\2\0\336\16\300\1\233\5\4\0\336"...,
48) = 48
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 782234}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 43560}) = 0 (Timeout)
gettimeofday({1186172031, 824187}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 824646}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 1148}) = 0 (Timeout)
gettimeofday({1186172031, 834189}, NULL) = 0
gettimeofday({1186172031, 837654}, NULL) = 0
gettimeofday({1186172031, 837887}, NULL) = 0
write(3, ">\0\7\0\235\2\300\1\365\1\300\1\371\0\300\1\0\0\0\0\0\0"...,
28) = 28
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 838765}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 18889}) = 0 (Timeout)
gettimeofday({1186172031, 877983}, NULL) = 0
write(3, "=\0\4\0\311\1\300\1\320\7\320\7\324\1<\0007\0\4\0\340\16"...,
284) = 2
84
read(3, 0xbf870cd0, 32) = -1 EAGAIN (Resource
temporarily unavai
lable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\1\273\236\0\0\0\0M\0\0\0006\20\0\1\22\7Z\0\22\7Z\0\0"...,
32) = 32
write(3, "(\0\4\0M\0\0\0\311\1\300\1\22\7Z\0", 16) = 16
read(3, 0xbf870d00, 32) = -1 EAGAIN (Resource
temporarily unavai
lable)
poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, "\1\1\274\236\0\0\0\0\0\0\0\0\330\vS\7\1\0\0\0\0\20\0\0"..., 32)
= 32
gettimeofday({1186172031, 880796}, NULL) = 0
write(3, "<\0\2\0\341\16\300\1<\1\2\0\340\16\300\1\233\5\4\0\336"...,
48) = 48
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 881520}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 44274}) = 0 (Timeout)
gettimeofday({1186172031, 924188}, NULL) = 0
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 924651}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 1143}) = 0 (Timeout)
gettimeofday({1186172031, 934189}, NULL) = 0
gettimeofday({1186172031, 935683}, NULL) = 0
gettimeofday({1186172031, 935921}, NULL) = 0
gettimeofday({1186172031, 936429}, NULL) = 0
gettimeofday({1186172031, 937030}, NULL) = 0
gettimeofday({1186172031, 937258}, NULL) = 0
write(3, ">\0\7\0%\v\300\1\365\1\300\1\371\0\300\1\0\0\0\0\0\0\0"...,
28) = 28
ioctl(3, FIONREAD, [0]) = 0
gettimeofday({1186172031, 938149}, NULL) = 0
select(10, [3 4 5 7 9], [], [], {0, 18280}) = 0 (Timeout)
gettimeofday({1186172031, 976971}, NULL) = 0
write(3, "=\0\4\0\311\1\300\1\320\7\320\7\324\1<\0007\0\4\0\342\16"...,
284) = 2
84
The handle 3 is connected to the xserver. Does anyone know how to check
what these messages mean (using some sort of X11 protocol analyzer ?).
Or how to disable them ?
--
Maciej Grela
_______________________________________________
Power mailing list
[email protected]
http://www.bughost.org/mailman/listinfo/power