I am developing an application on an LPC54102 that makes use of FreeRTOS. I am planning on using FreeRTOS queues for IPC between application tasks. Has any performance profiling for FreeRTOS queues been publicly documented? I am interested, for example, in metrics like messages/second. Does anyone have experience in pushing 1000s of messages (assume small messages: < 100 bytes) through a queue (assume application message processing is low overhead) a second on an LPC5410x (or similar)?
Hi,
For the queue number, I suppose that there is not restriction as long as the memory is enough.
Pls refer to the queue description in freertos.
https://www.freertos.org/a00116.html
QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize );
Each queue requires RAM that is used to hold the queue state, and to hold the items that are contained in the queue (the queue storage area). If a queue is created using xQueueCreate() then the required RAM is automatically allocated from the FreeRTOS heap. If a queue is created using xQueueCreateStatic() then the RAM is provided by the application writer, which results in a greater number of parameters, but allows the RAM to be statically allocated at compile time. See the Static Vs Dynamic allocation page for more information.
uxQueueLength | The maximum number of items the queue can hold at any one time. |
uxItemSize | The size, in bytes, required to hold each item in the queue.
Items are queued by copy, not by reference, so this is the number of bytes that will be copied for each queued item. Each item in the queue must be the same size.
|
For your case, each queue occupies 100 bytes, so 1000 queues occupy 100KBytes, so it is okay.
Hope it can help you
BR
XiangJun Rong