Debug Log Slow ioctl

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • OpenPLI hat die ioctl Geschichte komplett rausgeschmissen aus der frontend.cpp ;)

      Quellcode

      1. #define ioctlMeasureStart \
      2. struct timeval start, end; \
      3. int duration; \
      4. gettimeofday(&start, NULL);
      5. #define ioctlMeasureEval(x) \
      6. do { \
      7. gettimeofday(&end, NULL); \
      8. duration = (((end.tv_usec - start.tv_usec)/1000) + 1000 ) % 1000; \
      9. if (duration>35) \
      10. eWarning("[eDVBFrontend] Slow ioctl '%s', potential driver issue, %dms",x,duration); \
      11. } while(0)
      Alles anzeigen
      > 1x 2.7m Laminas AS2700 76.5Ost - 47.5West mit 7-fach LNB Wechsler, JPC-Positioner
      > 1x 1.8m Channelmaster 75Ost - 47.5West mit 8-fach LNB Wechsler (abgebaut)
      > 3x T90 mit 32 LNB 52.0Ost - 30.0West
      > 2x AX HD51 4k UHD PVR CI+
      > 1x SF 8008 Twin
      > 1x SF 8008m Mini
      > 1x SX 88 V2 Dual
      > 1x Edision Os Mio 4K
    • Jetzt habe ich mir Mal das von dir, @Suedschzwede, gezeigte Code-Snippet genauer angesehen und dessen Nutzung in frontend.cpp. Irgendwie schaudert es mich ein bisschen.
      1. Dauert der ioctl-Call 36 ms, kommt ne Warnung im Log ("dauert zu lange"). Dauert der Call 1001 ms, kommt *keine* Warnung
      2. Nutzung der Funktion gettimeofday(), die seit POSIX 2008 als obsolet gekennzeichnet ist. Zudem ist sie nach meiner Erfahrung langsamer als die besser geeignete und von POSIX empfohlene Funktion clock_gettime(). (clock_gettime wird durchaus in E2-Quellen genutzt)
      3. Wollte Autor Verwendung des Sekunden-Teils von gettimeofday-Ergebnis und Multiplikation mit 1000000 vermeiden aus Effizienzgründen, hat dabei aber eine Division und eine Modulo-Operation genutzt - die auf typischen Prozessoren langsamsten arithmetischen Operationen? (Oft kann man Division und Modulo zusammen in einem CPU-Befehl machen, hier aber nicht).
      (4. Timing wird auch gemacht in manchen Fällen, wenn gar kein ioctl-Call stattfindet.)
      (5. Das ist vielleicht Ansichtssache: fragwürdige Nutzung dieser Präprozessor Makros in C++ Code)
    • Neu

      Jetzt ist es doch wieder passiert, allerdings mit starker Referenz Richtung Timeshift. Wobei die Zeile "Main thread is busy, displaying spinner!" zwar drei Sekunden nach dem OK geloggt wurde, der Spinner aber erst nach ca. 10 Sekunden erschien.

      IMHO ist Timeshift bei mir ausgeschaltet und es wurde auch noch nie etwas ins timeshift-Verzeichnis geschrieben.

      Oder es ist etwas komplett anderes.....
      Dateien

    Unsere Partnerboards

    ^
    Flag Counter