Menu

#314 Timeout supervision does not restart after PD request

2.0.3.0
closed
2020-08-21
2020-02-04
No

When a PD request is sent, the timeout supervision of the related subscriber is not restarted even though it should according to the standard (A.6.6.3).

Discussion

  • Stefan Bender

    Stefan Bender - 2020-02-04
    • labels: --> ConformanceTest
     
  • Stefan Bender

    Stefan Bender - 2020-02-04

    It appears that the bug is related to the High Performance mode.

     
  • Bernd Löhr

    Bernd Löhr - 2020-02-10
    • Labels: ConformanceTest --> ConformanceTest, Conformance Test
     
  • Stefan Bender

    Stefan Bender - 2020-02-13
    • labels: ConformanceTest, Conformance Test --> Conformance Test
     
  • Bernd Löhr

    Bernd Löhr - 2020-03-27
    • status: open --> accepted
    • assigned_to: Chirag Khangani
     
  • Bernd Löhr

    Bernd Löhr - 2020-03-27

    Different behaviour in High Perf Mode.

     
  • Bernd Löhr

    Bernd Löhr - 2020-08-06
    • status: accepted --> pending
    • assigned_to: Chirag Khangani --> Bernd Löhr
     
  • Bernd Löhr

    Bernd Löhr - 2020-08-06

    ...The issue occured in one of the TRDP Conformance Test cases. Here, the device under test would create a subscriber for a telegram with a 400 ms timeout and with a callback.
    Now the main thread waits for a semaphore given by the callback after receiving 4 PD telegrams.
    4 PD telegrams are sent from another device with a cycle time of 100 ms. Nothing is sent from the other device after that.
    Once the main thread gets the semaphore, it waits for 200ms, sends a request, takes the “start time” and waits for about a second.
    During that second, the subscriber’s callback is triggered again once the PD timeout occurs, and takes the “stop time” of the timeout interval.

    Without High Performance mode, this interval is about 400ms, as it should be.
    In High Performance mode, this interval will be different and not always the same. Sometimes it’s up to 600ms.
    ...

    Reply:
    "This is a tradeoff done between timely timeouts vs cpu-load at higher loads (~500+ subscribers). The downside of this approach is that the timeouts are not detected early. However, that is not the priority I think in HIGH_PERF_INDEX mode. All subscriptions need not be checked in all iterations ( this causes very high cpu load). In current devices, PD callbacks are not used and the data is only obtained through polling. While polling through tlp_get(), the user will always get the updated status (data received or timeout) of the subscriber."

    Solution:
    The fixed 100ms check cycle for telegrams with cycle times > 100ms can be reduced during compile time via CFLAGS += -DTRDP_TO_CHECK_CYCLE=50000.
    See sample build config file LINUX_X86_64_HP_conform_config.

     
  • Bernd Löhr

    Bernd Löhr - 2020-08-21
    • Status: pending --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB