Percentage use of the CPU

  • Alain Mouette
    Alain Mouette

    Is there a reference implementation of an indicator of CPU used/free time in % ?

    Motivation:I had a test thread without any call to vTaskDelay() by mistake, because of that all lower priority task were never executed. It could prove a valuable debug tool to check is the Idle task is executing as much as is expected.

    Alternative: I could maybe set a bit while entering the Idle task and reseting it on exit, how would I do that?

  • I think there are several things you can do.

    1) Add in an idle hook function that keeps a cycle count for how many times the idle task loops around, then have a high priority 'watchdog task' (referred to as a 'check' task in all the official demos) that monitors how the cycle counters of each task to ensure they are cycling as expected.

    2) Use the run-time-stats feature, which is generic up to the point of the time source which is necessarily application specific (not just port specific).

    3) Use the traceTASK_SWITCHED_IN() or traceTASK_SWITCHED_OUT trace macros to count how many times the idle task gets switched in/out. You can use xTaskGetIdleTaskHandle() to find the handle of the idle task.

    4) Use FreeRTOS+Trace to visualise exactly how your application is running.

    Richard Barry.