sundtek, section handler, read() hängt manchmal

  • Ich habe in VDR eine Messung eingebaut wie lange read() braucht wenn es vom VDR section handler aufgerufen wird. Wenn read() länger als eine Sekunde braucht, wird ein Eintrag in syslog geschrieben:

    Code
    int cDevice::ReadFilter(int Handle, void *Buffer, size_t Length)                                                                                                                 
    {                                                                                                                                                                                
      std::chrono::time_point<std::chrono::high_resolution_clock> begin = std::chrono::high_resolution_clock::now();                                                                 
      int ret_code = safe_read(Handle, Buffer, Length);                                                                                                                              
      std::chrono::duration<double> timeNeeded = std::chrono::high_resolution_clock::now() - begin;                                                                                  
      if (timeNeeded.count() > 1) esyslog("cDevice::ReadFilter, Handle %d, time needed %g seconds", Handle, timeNeeded.count());                                                     
      return ret_code;                                                                                                                                                               
    }

    Die Meldung im syslog wird geschrieben, nachdem read() fertig ist.

    Code
    2025-10-27T21:17:37.618124+01:00 rpi4s vdr: [2666984] cDevice::ReadFilter, Handle 36, time needed 128,255 seconds

    bedeutet also, dass read() von 21:15:29.36 bis 21:17:37.62 gebraucht hat.

    Ergebnis vom 27.10: In der Zeit von 20:34:07 bis 21:31:17 gab es sehr viele solcher Einträge. Außerhalb dieser Zeit gab es keine solche Einträge im syslog. Im syslog sieht das dann so aus:


    Ein Auszug aus der mediasrv.log in diesem Zeitraum ist attached. Die mediasrv.log sieht übrigens immer so aus, auch wenn read() kurze Antwortzeiten hat.

    Sundtek , könnt ihr Euch das bitte mal anschauen.

  • Hast Du auch eine ganze Logfile, wo z.B die Frequenz / der Transponder drinnen steht?

    Wenn das auftritt bitte auch /opt/bin/mediaclient --readsignal=0 -d /dev/dvb/adapterX/frontend0 --band universal ausführen.

  • Hast Du auch eine ganze Logfile, wo z.B die Frequenz / der Transponder drinnen steht?

    Ja, ich habe das komplette mediasrv.log file. s..o., attached. Jetzt hätte ich erwartet, dass da alle relevanten Informationen (also auch Frequenz, Transponder, Signalstärke, ...) drin stehen, so groß, wie diese Datei ist (?).

    Meine Erwartung ist, dass read() nie länger als eine Sekunde braucht, auch bei schlechter Signalstärke. Mein Empfang/Signalstärke von Astra 2 ist hier wetterabhängig. Für mich ist auch O.K., wenn deshalb eine Sendung (bei schlechtem Wetter) nicht korrekt aufgenommen wird. Für mich ist aber nicht O.K., wenn VDR hängt, weil VDR von kurzen Antwortzeiten von read() ausgeht.

  • Ich schätze logrotate hat diese Datei rasiert.

    Eigentlich nicht. Ich habe hier nur einen Auszug gepostet, weil die mediasrv.log.xz vom kompletten Log 8,4 MB groß ist, was ich hier nicht hochladen kann ...

    Wenn Du mir deine E-Mail Adresse gibst, kann ich Dir die Datei schicken

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!