Hi, Attached is an updated timer suppression patch for NO-HZ. Thomas had fed back that some changes were necessary. The good is with patch testusb goes from 45.4sec to 10.9sec to move a fixed amount of data. The bad is I found it necessary to remove a different in-kernel hack for tick_nohz_kick_tick(). Kernel comments for this new function say it's a hack to work around badly behaved long running soft-irqs. Any thing waiting in irq context spinning on jiffies seems pretty bad. Code was added 17 Oct 08: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fb02fbc14d17837b4b7b02dbb36142c16a7bf208 Does anyone have any thoughts on fixing the kick part? Really all interrupts during idle will benefit from the combined patch. USB is just the worst case as its moving so little data per interrupt in its current mode. I'll send a couple pictures in a separate mail. alias o='./testusb -a -t 1 -c 6250 -s 16384' L-O: 2.6.28-rc3-oma1-05153-g13c444a ------------------------------------ [root@localhost tst]# o ENTERED MAIN()... unknown speed /proc/bus/usb/001/019 NAME OF DEVICE TO TEST --> [/proc/bus/usb/001/019] ->test 1 1 /proc/bus/usb/001/019 test 1, 45.458298 secs [root@localhost tst]# [root@localhost tst]# L-O (+ rkw/tglx-patch) 2.6.28-rc3-oma1-05153-g13c444a [root@localhost tst]# o [root@localhost tst]# o ENTERED MAIN()... unknown speed /proc/bus/usb/001/004 NAME OF DEVICE TO TEST --> [/proc/bus/usb/001/004] ->test 1 1 /proc/bus/usb/001/004 test 1, 10.945926 secs Regards, Richard W.
Attachment:
suppress_tick_no_kick.diff
Description: suppress_tick_no_kick.diff