[vdr] VDR gets somehow stuck and consumes all CPU time

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Sun Dec 4 12:14:43 CET 2005


Klaus Schmidinger wrote:
> Gerald Raaf wrote:
> 
>> Am Sonntag, 4. Dezember 2005 10:37 schrieb Klaus Schmidinger:
>>
>>> Johannes Stezenbach wrote:
>>>
>>>> On Sat, Dec 03, 2005, Klaus Schmidinger wrote:
>>>>
>>>>> (AFAIK with NPTL all threads
>>>>> of a given program have the same pid, so you won't be able to
>>>>> distinguish them in 'top').
>>>>
>>>>
>>>> This is not entirely true, you can still see and distinguish
>>>> the threads in htop or "ps -T u -C vdr" etc. (top does not work).
>>>>
>>>> The patch below might help, gettid() returns the PID of the thread. 
>>>> (And
>>>> since it's a syscall it is independent of NPTL vs. linuxthreads. Tested
>>>> on 2.6 only, but the gettid man page says it's available in 2.4.20.
>>>> gettid() is Linux specific.)
>>>
>>>
>>> Does this "gettid" call return a different tid than "pthread_self()"?
>>>
>>
>>
>> pthread_self() sample output log
>> [2005/12/04 11:14:02] vdr vdr[27644]: tuner on device 3 thread started 
>> (pid=27644, tid=-1265644624)
>> sample output ps -T u -C vdr
>> root at vdr:~# ps -T u -C vdr
>> USER       PID  SPID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME 
>> COMMAND
>> root     27644 27644  3.2  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27742  0.0  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27743  0.0  2.5 129332 26624 ?        RNl  11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27745  0.0  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27746  0.0  2.5 129332 26624 ?        SNl  11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27748  0.0  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27749  0.0  2.5 129332 26624 ?        SNl  11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27750  0.0  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27751  0.0  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27752  0.0  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     27644 27753  0.0  2.5 129332 26624 ?        Sl   11:14   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>>
>>
>> gettid()  sample output log with Patch from Johannes Stetzenbach
>> [2005/12/04 11:16:15] vdr vdr[29989]: tuner on device 3 thread started 
>> (pid=29989, tid=30086)
>> sample output ps -T u -C vdr
>> root at vdr:~# ps -T u -C vdr
>> USER       PID  SPID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME 
>> COMMAND
>> root     29989 29989  0.1  2.5 129380 26640 ?        Sl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30080  0.0  2.5 129380 26640 ?        Sl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30081  0.0  2.5 129380 26640 ?        SNl  11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30083  0.0  2.5 129380 26640 ?        Sl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30084  0.0  2.5 129380 26640 ?        SNl  11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30086  0.0  2.5 129380 26640 ?        Sl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30087  0.0  2.5 129380 26640 ?        SNl  11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30088  0.0  2.5 129380 26640 ?        Sl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30089  0.0  2.5 129380 26640 ?        Sl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30090  0.0  2.5 129380 26640 ?        Sl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>> root     29989 30091  0.0  2.5 129380 26640 ?        Rl   11:16   0:00 
>> ./vdr -w 60 -s /usr/local/bin/stopvdr -r /usr/local/bin/record.sh -
>>
>> my System is a NPTL only System (Linuxfromscatch System) with vdr-1.3.37.
> 
> 
> Well, this shows me that on such a system all VDR threads have the same 
> PID,
> but different SPIDs. I don't think that this has in any way changed through
> Johannes' patch.
> 
> What would be interesting would be the log excerpts corresponding to these
> test runs, where the VDR threads log their 'pid' and 'tid' values.
> Maybe you could post these, too?

Aaaahhhrrrgghhhh - right after sending this message I saw that you
had actually posted these. They must have slipped by my eyes, sorry.

Klaus



More information about the vdr mailing list