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

Reply via email to