Hi Antti, On Wed, Mar 25, 2009 at 10:48:01PM +0200, Antti Palosaari wrote:
Antti Palosaari wrote:
Heinrich Langos wrote:
Moikka Antti,
vp7045 does not have PID-filters. I think difference comes from different USB-transfer settings. vp7045 uses BULK packet size 4096 and af9015 uses BULK packet size 512 for USB2.0 and BULK packet size 64 for USB1.1. Therefore af9015 sends 8 times more packets than vp7045 (I guess).
One thing more you can test - use USB1.1. To force USB1.1 remove USB2.0 driver by rmmod ehci_hcd. After that plug af9015 stick and look from logs it detects USB1.1 and uses PID-filters. af9015 driver now uses smaller packet size for transfer that can change load (bigger?).
seems you are right. The transfer with PID filter in usb 1.1 causes about 30% load in contrast to 19% with usb 2.0
is there a way to increase the packet size for those bulk transfers? for usb 2.0? for 1.1?
Actually AF9015 chip offers registers to configure packet size. But those which are now used are default ones and rather many devices (other than af9015) are using just same. That's why I am not sure if I want change those to bigger ones.
I will make test version that uses 4k packets for your tests. If it resolves problem then we should consider for example adding module param for setting desirable packet size. I will inform you when test version is ready - It takes day or two.
Unfortunately 512 seems to be biggest allowed packet size so I cannot increase it. Anyhow, there is other configurable parameter called packet count. I increased that from 348 to 512 but I doubt it does not have any effect. Feel free to test. If it does not change load then I think we cannot do more. Test tree: http://linuxtv.org/hg/~anttip/af9015_powertop/
Thank you very much for your work and helpful information. Sorry it took me some time to fire up that stick again.. here's the result:
In short the improvements (if any) are within the error margin. The snapshots below seem to indicate that load with pid filter is reduced somewhat, but i assure you that you get loads from 1.4-1.0 and 22-16% respectivly. So there seems no gain in changing the packet count constant. As usual I have included the details below.
BTW: I got myself a "Toshiba USB DVB-T Tuner PX1211E-1TVD" based on the DiB3000M-C/P. Unlike the siemens stick it has a pid filter. I only tested it without the pid filter yet, and it seems to perform as good as the siemens stick in terms of system load. So I guess it uses big packets for the bulk transfers.
I hope I'll have some time to test it further this weekend. Hopefully it turns out to reduce the system load by the driver to a reasonable level. If so I will finally get around to look into vdr itself as a cause of wasted CPU cycles and energy... :-)
cheers -henrik
Details:
# modprobe -v dvb_usb_af9015 insmod /lib/modules/2.6.26-1-686/kernel/drivers/media/dvb/dvb-core/dvb-core.ko insmod /lib/modules/2.6.26-1-686/kernel/drivers/media/dvb/dvb-usb/dvb-usb.ko disable_rc_polling=1 insmod /lib/modules/2.6.26-1-686/kernel/drivers/media/dvb/dvb-usb/dvb-usb-af9015.ko # dmesg | tail [421479.228321] af9015: recv bulk message failed:-110 [421481.228225] af9015: recv bulk message failed:-110 [421481.236400] dvb-usb: found a 'Afatech AF9015 DVB-T USB2.0 stick' in warm state. [421481.236940] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. [421481.237973] DVB: registering new adapter (Afatech AF9015 DVB-T USB2.0 stick) [421481.714270] af9013: firmware version:4.95.0 [421481.724131] DVB: registering adapter 0 frontend 0 (Afatech AF9013 DVB-T)... [421481.724847] tda18271 0-00c0: creating new instance [421481.729438] TDA18271HD/C2 detected @ 0-00c0 [421481.994205] dvb-usb: Afatech AF9015 DVB-T USB2.0 stick successfully initialized and connected. [421482.012365] usbcore: registered new interface driver dvb_usb_af9015 [421992.345780] tda18271: performing RF tracking filter calibration [421997.798964] tda18271: RF tracking filter calibration complete
====================== no pid filter =========================
zap: | PowerTOP version 1.10 (C) 2007 Intel Corporation | | Cn Avg residency P-states (frequencies) | C0 (cpu running) (30.8%) 750 Mhz 0.0% | polling 0.2ms ( 0.0%) 563 Mhz 0.0% | C1 halt 0.0ms ( 0.0%) 375 Mhz 0.0% | C2 0.4ms ( 7.3%) 188 Mhz 100.0% | C3 0.2ms (61.9%) | | Wakeups-from-idle per second : 3100.6 interval: 10.0s | no ACPI power usage estimate available | | Top causes for wakeups: | 60.5% (4774.2) USB device 5-1 : DVB-T 2 (Afatech) | 39.3% (3107.5) <interrupt> : uhci_hcd:usb1, HDA Intel, ehci_hcd:usb5 | 0.1% ( 5.7) zap : schedule_timeout (process_timeout) | 0.0% ( 2.0) xfsaild : schedule_timeout (process_timeout) | 0.0% ( 1.6) xfsbufd : schedule_timeout (process_timeout) | 0.0% ( 1.2) syslogd : ehci_irq (ehci_watchdog) | 0.0% ( 1.0) zap : do_nanosleep (hrtimer_wakeup) | 0.0% ( 1.0) ifconfig : b44_open (b44_timer)
vdr: | PowerTOP version 1.10 (C) 2007 Intel Corporation | | Cn Avg residency P-states (frequencies) | C0 (cpu running) (34.6%) 750 Mhz 0.0% | polling 0.0ms ( 0.0%) 563 Mhz 0.0% | C1 halt 0.0ms ( 0.0%) 375 Mhz 0.0% | C2 0.1ms ( 0.5%) 188 Mhz 100.0% | C3 0.3ms (64.9%) | | Wakeups-from-idle per second : 2588.7 interval: 10.0s | no ACPI power usage estimate available | | Top causes for wakeups: | 59.3% (4318.9) USB device 5-1 : DVB-T 2 (Afatech) | 37.5% (2730.5) <interrupt> : uhci_hcd:usb1, HDA Intel, ehci_hcd:usb5 | 3.0% (220.9) vdr : futex_wait (hrtimer_wakeup) | 0.1% ( 6.2) vdr : schedule_timeout (process_timeout) | 0.0% ( 2.0) xfsaild : schedule_timeout (process_timeout) | 0.0% ( 1.6) xfsbufd : schedule_timeout (process_timeout) | 0.0% ( 1.3) syslogd : ehci_irq (ehci_watchdog) | 0.0% ( 1.1) vdr : hrtick_set (hrtick) | 0.0% ( 1.0) vdr : do_nanosleep (hrtimer_wakeup) | 0.0% ( 1.0) ifconfig : b44_open (b44_timer)
====================== with hw pid filter =========================
# modprobe -v dvb-usb force_pid_filter_usage=1 insmod /lib/modules/2.6.26-1-686/kernel/drivers/media/dvb/dvb-core/dvb-core.ko insmod /lib/modules/2.6.26-1-686/kernel/drivers/media/dvb/dvb-usb/dvb-usb.ko force_pid_filter_usage=1 disable_rc_polling=1 # modprobe -v dvb_usb_af9015 insmod /lib/modules/2.6.26-1-686/kernel/drivers/media/dvb/dvb-usb/dvb-usb-af9015.ko
zap: | PowerTOP version 1.10 (C) 2007 Intel Corporation | | Cn Avg residency P-states (frequencies) | C0 (cpu running) ( 1.1%) 750 Mhz 0.0% | polling 0.0ms ( 0.0%) 563 Mhz 0.0% | C1 halt 0.0ms ( 0.0%) 375 Mhz 0.0% | C2 0.0ms ( 0.0%) 188 Mhz 100.0% | C3 10.6ms (98.9%) | | Wakeups-from-idle per second : 95.7 interval: 15.0s | no ACPI power usage estimate available | | Top causes for wakeups: | 48.8% ( 70.1) <interrupt> : uhci_hcd:usb1, HDA Intel, ehci_hcd:usb5 | 33.2% ( 47.7) USB device 5-1 : DVB-T 2 (Afatech) | 7.0% ( 10.1) syslogd : ehci_irq (ehci_watchdog) | 4.7% ( 6.8) zap : schedule_timeout (process_timeout) | 1.4% ( 2.0) xfsaild : schedule_timeout (process_timeout) | 1.2% ( 1.7) xfsbufd : schedule_timeout (process_timeout) | 0.7% ( 1.1) kdvb-ad-0-fe-0 : schedule_timeout (process_timeout) | 0.7% ( 1.0) ifconfig : b44_open (b44_timer) | 0.7% ( 1.0) zap : do_nanosleep (hrtimer_wakeup)
vdr: | PowerTOP version 1.10 (C) 2007 Intel Corporation | | Cn Avg residency P-states (frequencies) | C0 (cpu running) (16.8%) 750 Mhz 0.0% | polling 0.1ms ( 0.0%) 563 Mhz 0.0% | C1 halt 0.0ms ( 0.0%) 375 Mhz 0.0% | C2 0.1ms ( 0.3%) 188 Mhz 100.0% | C3 0.9ms (82.9%) | | Wakeups-from-idle per second : 938.4 interval: 10.0s | no ACPI power usage estimate available | | Top causes for wakeups: | 48.6% (988.7) USB device 5-1 : DVB-T 2 (Afatech) | 39.5% (804.2) <interrupt> : uhci_hcd:usb1, HDA Intel, ehci_hcd:usb5 | 10.9% (221.1) vdr : futex_wait (hrtimer_wakeup) | 0.3% ( 6.9) syslogd : ehci_irq (ehci_watchdog) | 0.3% ( 6.0) vdr : schedule_timeout (process_timeout) | 0.1% ( 2.0) xfsaild : schedule_timeout (process_timeout) | 0.1% ( 1.6) xfsbufd : schedule_timeout (process_timeout) | 0.0% ( 1.0) ifconfig : b44_open (b44_timer) | 0.0% ( 1.0) vdr : do_nanosleep (hrtimer_wakeup)