[mythtv] backend from SVN 9761 bangs on mysqld

Janne Grunau janne-mythtv at grunau.be
Mon Apr 24 15:42:59 UTC 2006


On Monday 24 April 2006 17:12, Daniel Kristjansson wrote:
> On Mon, 2006-04-24 at 16:37 +0200, Janne Grunau wrote:
>
> Let me clarify, the cache as it exists with the service keying would
> be saved to a table with an mplexid key, so that all the data
> pertinent to an mplexid could be pulled in at once. And with the
> cross source EIT needed for some DVB-S setups, some data structure
> gymnastics would be needed. The cache would read in once when we
> start scanning a transport and written once when we stop scanning a
> transport, it would not be read or saved for each program table
> update (that would be crazy :).

Clear, I wanted to mention the "data structure gymnastics".

> > > I think the only way we'll know is if we implement the persistent
> > > cache and monitor it's size.
> >
> > Nearly done.
>
> Cool, I just created a branch to try this out on.
>
> > Together with a centralised EIT scanner on the master backend.
>
> I'm not sure about this, it depends on the implementation whether
> I like this. Part of the reason for breaking the DBEvent<->current
> channel dependence was so that the scanner could be centralized
> on a particular backend. But I'm reluctant about centralizing it
> across backends, it seems like there would be some scalability
> problems. Can you make this a separate patch?

Not in the cureent setting, the cache is dependent on centralized 
scanner. The first three patches centralize the active eitscanner on 
each backend. But A centralized scanner on the master backend shouldn't 
have scalabality issues. It tells just every "EITTimePerSources / 
number of used cards" one card to tune to the next channel. That's the 
fastest way to visit all channels on all sources and distributes the 
load as even as possibly.

> > I can't see a significant difference in memory usage. Do you know a
> > simple way to show the allocated memory of one QMap?
>
> Umm, no. Approximate size should be simple though.
>   ( map.size() + log(map.size())/log(2) ) *
>     sizeof(QMapNode<uint64_t,uint64_t>);
>
> sizeof QMapNode is approx (8 + 8 + 8 + 4 + 8 + 8 = 48)
>
> The size of a hash_map would be:
>    map.size() * (4 + 8 + 8 = 20) * hash_factor

That gives something less than 1MB for my cache.

> > I had a nearly working solution for RST and EIT running_status but
> > it is outdated after some of the heavier EIT-refactorings
>
> How did you tell tv_rec and tv_play that it's program had changed?

I didn't, I (mis)used the overrecord.

Janne


More information about the mythtv-dev mailing list