[mythtvnz] Second USB DVB-T tuner causes high load

Dylan Hall dylan at deedums.com
Sat Oct 10 03:41:10 BST 2009


On Fri, 2009-10-09 at 12:53 +1300, Steven Ellis wrote:

> On Thu, October 8, 2009 9:36 pm, Dylan Hall wrote:
> > I have a very odd problem, I have purchased two of the ASUS usb tuners
> > mentioned below in Stephen's post. I got the first, and was so impressed
> > I decided to get a second. This is where the problem starts...
> >
> > When I connect the second tuner the load average on the machine jumps to
> > 1 even when all the daemons etc have been shut down and the machine is
> > as idle as it's possible to get a linux box.
> >
> > I have VirtualBox running on the machine hosting a copy of ubuntu 9.04
> > server. With 1 tuner connected it's all good. Connect the second tuner
> > and the ping times to this virtual machine jump from <1ms to 20-60ms
> > (varying all over the place).
> >
> > Despite the problems above, the second tuner appears to work fine.
> >
> > The server is a Core 2 Duo E6600 2.4Ghz, 6GB Ram, running ubuntu 9.04
> > server 32 bit, kernel version 2.6.28-15-server-52.
> >
> > I'm using the 32bit version of ubuntu because I'm testing SageTV for
> > linux which only ships with 32bit binaries. I have PAE enabled to get
> > access to the full 6GB of ram.
> >
> > I'm unsure how to progress from here.
> >
> > Any ideas anyone? seen something similar?
> >
> > Should I log a bug with the ununtu people or try and track down the devs
> > for the DVB driver and log a bug with them?
> >
> 
> First take a look at /proc/interrupts to see if there is a big jump over
> time on any of the devices.
> 
> Next check what else is on the same USB controller, and keep an eye on
> sharing USB 1.1 and USB 2 devices on the same controller.
> 
> I've used multiple USB DVB-T tuners on the same machine with no issue, but
> they haven't been the same make/model.



First off, thanks everyone for your suggestions and thoughts.

Executive summary: I've modified the kernel module to not poll the
non-existent IR receiver and this has sorted the issue.

The details (this will be fairly lengthy, but hopefully useful for
anyone else with the same issue):

2 x "ASUS My Cinema U3100 Mini DVBT Tuner".
The two tuners are on different USB buses.
There are no other processes doing anything significant in top.
Using Munin to graph interrupt load the only change when adding the
tuners is the regular IR receiver polling (10 or 20 interrupts per
second).

Attached is a graph from Munin showing the load on the system, nothing
like a nice picture to demonstrate the issue :)

The first thing was noticing that a single tuner also was causing
issues, in summary:

1 Tuner - Load jumps by around 0.5, intermittent high ping times to
VirtualBox virtual machine.
2 Tuners - Load jumps by around 1.0, almost continuous high ping times
to VirtualBox virtual machine.

dmesg when inserting tuner includes "dvb-usb: schedule remote query
interval to 50 msecs.".  This bugs me as there isn't an IR receiver on
this model of tuner.

Found the following instructions for building your own support for the
tuners before there was native support in the kernel:

http://www.mythtv.org/wiki/Asus_My_Cinema_U3100_mini

Section 2.2 got me interested, it talks about disabling the IR polling.

The following are the steps I followed (from memory so may be some
typos):

aptitude install linux-source
cd /usr/src
tar xjvf linux-source-2.6.28.tar.bz2
cd linux-source-2.6.28

modify drivers/media/dvb/dvb-usb/dvb-usb-remote.c as per section 2.2
above

cp /boot/config-2.6.28-15-server .config
make oldconfig
make

cp
drivers/media/dvb/dvb-usb/dvb-usb.ko /lib/modules/2.6.28-15-server/kernel/drivers/media/dvb/dvb-usb/


The last step above is a nasty hack, I should really build a whole
kernel as a .deb and let the package management system handle it. I note
that the replacement module is much larger than the old one, I wonder if
it has debugging symbols or something like that turned on still.

Rebooted machine and all good now :)

My current theory is that the IR receiver polling is locking/blocking
while it tries to poll non-existent hardware. This is causing the
load-average measuring system to see a process waiting a whole bunch,
hence the high load. I also think this is preventing VirtualBox from
being able to pass interrupts from the host machine into the guest
(network interrupts for example) in a timely fashion causing the poor
ping times.

Next step is to try a newer kernel (2.6.31.3 I think) to see if the
problem still exists. If it does then to track down the maintains for
the dvb-usb code and raise a bug. The hack above isn't really ideal as
it disables IR receivers on all USB tuners, not just those missing the
hardware.

Lastly I'd like to know why this causes my system grief, but not
others...

Dylan


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ourshack.com/pipermail/mythtvnz/attachments/20091010/86990e90/attachment-0001.htm 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: load_average_annotated.png
Type: image/png
Size: 42242 bytes
Desc: not available
Url : http://lists.ourshack.com/pipermail/mythtvnz/attachments/20091010/86990e90/attachment-0001.png 


More information about the mythtvnz mailing list