new offender in 2.6.25-git: xfsaild
Török Edwin
edwintorok at gmail.com
Sun Feb 17 07:32:31 PST 2008
Török Edwin wrote:
> Hi,
>
> On latest -git of 2.6.25 I am getting lots of wakeups from xfsaild.
> 23.5% ( 33.3) xfsaild : schedule_timeout (process_timeout)
>
[Should I Cc: xfs mailing list / lkml on this?]
The problem seems to be with the timeout logic in xfsaild_push, which
can return 3 timeout values (msecs): 1000, 10, 20, 30.
I inserted a marker and attached a probe function, schedule_timeout
always got called with 9 jiffies (which is 30 msecs, I have HZ=300).
Changing xfs_trans_ail.c:270 from "tout += 20" to "tout = 1000", made
xfsaild only do 1 wakeup/s instead of 33!
For some reason xfs_aild always thinks it has work (I/O) to do, and
never chooses the 1000 msec sleep value.
I think the max timeout value should be correlated with
/proc/sys/vm/dirty_writeback_centisecs (instead of the hardcoded 1000),
and sleeping for very short intervals should only be done if there is a
lot of I/O to be done.
Or maybe an exponential backoff starting from 10 msecs, and growing up
to dirty_writeback_centisecs*10 if there is not a lot of work to be done.
When there is I/O to be done, the timeout value could be reset to 10
msecs again.
Thoughts?
Collecting data for 15 seconds
Cn Avg residency
C0 (cpu running) ( 0.3%)
C1 0.0ms ( 0.0%)
C2 0.0ms ( 0.0%)
C3 43.3ms (99.7%)
P-states (frequencies)
1.67 Ghz 0.0%
1333 Mhz 0.0%
1000 Mhz 100.0%
Wakeups-from-idle per second : 23.1 interval: 15.0s
Power usage (ACPI estimate): 12.4W (4.1 hours)
Top causes for wakeups:
36.4% ( 7.7) group_balance : schedule_timeout (process_timeout)
16.6% ( 3.5) <kernel IPI> : Rescheduling interrupts
10.0% ( 2.1) Xorg : do_setitimer (it_real_fn)
6.3% ( 1.3) <interrupt> : ata_piix
5.0% ( 1.1) Xorg : schedule_timeout (process_timeout)
4.7% ( 1.0) xfsaild : schedule_timeout (process_timeout)
Best regards,
--Edwin
More information about the Power
mailing list