tests: app_kernel: extend msgq test
Extends the msgq benchmark test to obtain data for larger message queues (messages of size 192 bytes). This allows for a better indication of what the impact of data size is on message queue performance. Signed-off-by: Peter Mitsis <peter.mitsis@intel.com>
This commit is contained in:
parent
fa33147bf9
commit
4e426fbfa1
4 changed files with 54 additions and 15 deletions
|
@ -53,6 +53,7 @@ K_APPMEM_PARTITION_DEFINE(bench_mem_partition);
|
||||||
|
|
||||||
K_MSGQ_DEFINE(DEMOQX1, 1, 500, 4);
|
K_MSGQ_DEFINE(DEMOQX1, 1, 500, 4);
|
||||||
K_MSGQ_DEFINE(DEMOQX4, 4, 500, 4);
|
K_MSGQ_DEFINE(DEMOQX4, 4, 500, 4);
|
||||||
|
K_MSGQ_DEFINE(DEMOQX192, 192, 500, 4);
|
||||||
K_MSGQ_DEFINE(MB_COMM, 12, 1, 4);
|
K_MSGQ_DEFINE(MB_COMM, 12, 1, 4);
|
||||||
K_MSGQ_DEFINE(CH_COMM, 12, 1, 4);
|
K_MSGQ_DEFINE(CH_COMM, 12, 1, 4);
|
||||||
|
|
||||||
|
@ -207,9 +208,9 @@ int main(void)
|
||||||
recvtask, (void *)(uintptr_t)true, NULL, NULL,
|
recvtask, (void *)(uintptr_t)true, NULL, NULL,
|
||||||
5, K_USER, K_FOREVER);
|
5, K_USER, K_FOREVER);
|
||||||
|
|
||||||
k_thread_access_grant(&recv_thread, &DEMOQX1, &DEMOQX4, &MB_COMM,
|
k_thread_access_grant(&recv_thread, &DEMOQX1, &DEMOQX4, &DEMOQX192,
|
||||||
&CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3, &SEM4,
|
&MB_COMM, &CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3,
|
||||||
&STARTRCV, &DEMO_MUTEX,
|
&SEM4, &STARTRCV, &DEMO_MUTEX,
|
||||||
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
||||||
|
|
||||||
k_thread_start(&recv_thread);
|
k_thread_start(&recv_thread);
|
||||||
|
@ -231,9 +232,9 @@ int main(void)
|
||||||
recvtask, (void *)(uintptr_t)true, NULL, NULL,
|
recvtask, (void *)(uintptr_t)true, NULL, NULL,
|
||||||
5, 0, K_FOREVER);
|
5, 0, K_FOREVER);
|
||||||
|
|
||||||
k_thread_access_grant(&test_thread, &DEMOQX1, &DEMOQX4, &MB_COMM,
|
k_thread_access_grant(&test_thread, &DEMOQX1, &DEMOQX4, &DEMOQX192,
|
||||||
&CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3, &SEM4,
|
&MB_COMM, &CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3,
|
||||||
&STARTRCV, &DEMO_MUTEX,
|
&SEM4, &STARTRCV, &DEMO_MUTEX,
|
||||||
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
||||||
|
|
||||||
k_thread_start(&recv_thread);
|
k_thread_start(&recv_thread);
|
||||||
|
@ -255,13 +256,13 @@ int main(void)
|
||||||
recvtask, (void *)(uintptr_t)true, NULL, NULL,
|
recvtask, (void *)(uintptr_t)true, NULL, NULL,
|
||||||
5, K_USER, K_FOREVER);
|
5, K_USER, K_FOREVER);
|
||||||
|
|
||||||
k_thread_access_grant(&test_thread, &DEMOQX1, &DEMOQX4, &MB_COMM,
|
k_thread_access_grant(&test_thread, &DEMOQX1, &DEMOQX4, &DEMOQX192,
|
||||||
&CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3, &SEM4,
|
&MB_COMM, &CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3,
|
||||||
&STARTRCV, &DEMO_MUTEX,
|
&SEM4, &STARTRCV, &DEMO_MUTEX,
|
||||||
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
||||||
k_thread_access_grant(&recv_thread, &DEMOQX1, &DEMOQX4, &MB_COMM,
|
k_thread_access_grant(&recv_thread, &DEMOQX1, &DEMOQX4, &DEMOQX192,
|
||||||
&CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3, &SEM4,
|
&MB_COMM, &CH_COMM, &SEM0, &SEM1, &SEM2, &SEM3,
|
||||||
&STARTRCV, &DEMO_MUTEX,
|
&SEM4, &STARTRCV, &DEMO_MUTEX,
|
||||||
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
&PIPE_NOBUFF, &PIPE_SMALLBUFF, &PIPE_BIGBUFF);
|
||||||
|
|
||||||
k_thread_start(&recv_thread);
|
k_thread_start(&recv_thread);
|
||||||
|
|
|
@ -93,6 +93,7 @@ extern struct k_sem STARTRCV;
|
||||||
|
|
||||||
extern struct k_msgq DEMOQX1;
|
extern struct k_msgq DEMOQX1;
|
||||||
extern struct k_msgq DEMOQX4;
|
extern struct k_msgq DEMOQX4;
|
||||||
|
extern struct k_msgq DEMOQX192;
|
||||||
extern struct k_msgq MB_COMM;
|
extern struct k_msgq MB_COMM;
|
||||||
extern struct k_msgq CH_COMM;
|
extern struct k_msgq CH_COMM;
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,26 @@ void message_queue_test(void)
|
||||||
PRINT_F(FORMAT, "dequeue 4 bytes msg in MSGQ",
|
PRINT_F(FORMAT, "dequeue 4 bytes msg in MSGQ",
|
||||||
SYS_CLOCK_HW_CYCLES_TO_NS_AVG(et, NR_OF_MSGQ_RUNS));
|
SYS_CLOCK_HW_CYCLES_TO_NS_AVG(et, NR_OF_MSGQ_RUNS));
|
||||||
|
|
||||||
|
start = timing_timestamp_get();
|
||||||
|
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
||||||
|
k_msgq_put(&DEMOQX192, data_bench, K_FOREVER);
|
||||||
|
}
|
||||||
|
end = timing_timestamp_get();
|
||||||
|
et = (uint32_t)timing_cycles_get(&start, &end);
|
||||||
|
|
||||||
|
PRINT_F(FORMAT, "enqueue 192 bytes msg in MSGQ",
|
||||||
|
SYS_CLOCK_HW_CYCLES_TO_NS_AVG(et, NR_OF_MSGQ_RUNS));
|
||||||
|
|
||||||
|
start = timing_timestamp_get();
|
||||||
|
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
||||||
|
k_msgq_get(&DEMOQX192, data_bench, K_FOREVER);
|
||||||
|
}
|
||||||
|
end = timing_timestamp_get();
|
||||||
|
et = (uint32_t)timing_cycles_get(&start, &end);
|
||||||
|
|
||||||
|
PRINT_F(FORMAT, "dequeue 192 bytes msg in MSGQ",
|
||||||
|
SYS_CLOCK_HW_CYCLES_TO_NS_AVG(et, NR_OF_MSGQ_RUNS));
|
||||||
|
|
||||||
k_sem_give(&STARTRCV);
|
k_sem_give(&STARTRCV);
|
||||||
|
|
||||||
start = timing_timestamp_get();
|
start = timing_timestamp_get();
|
||||||
|
@ -81,4 +101,15 @@ void message_queue_test(void)
|
||||||
PRINT_F(FORMAT,
|
PRINT_F(FORMAT,
|
||||||
"enqueue 4 bytes in MSGQ to a waiting higher priority task",
|
"enqueue 4 bytes in MSGQ to a waiting higher priority task",
|
||||||
SYS_CLOCK_HW_CYCLES_TO_NS_AVG(et, NR_OF_MSGQ_RUNS));
|
SYS_CLOCK_HW_CYCLES_TO_NS_AVG(et, NR_OF_MSGQ_RUNS));
|
||||||
|
|
||||||
|
start = timing_timestamp_get();
|
||||||
|
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
||||||
|
k_msgq_put(&DEMOQX192, data_bench, K_FOREVER);
|
||||||
|
}
|
||||||
|
end = timing_timestamp_get();
|
||||||
|
et = (uint32_t)timing_cycles_get(&start, &end);
|
||||||
|
|
||||||
|
PRINT_F(FORMAT,
|
||||||
|
"enqueue 192 bytes in MSGQ to a waiting higher priority task",
|
||||||
|
SYS_CLOCK_HW_CYCLES_TO_NS_AVG(et, NR_OF_MSGQ_RUNS));
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,18 +11,24 @@
|
||||||
|
|
||||||
/* message queue transfer speed test */
|
/* message queue transfer speed test */
|
||||||
|
|
||||||
|
static BENCH_BMEM char buffer[192];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Data receive task
|
* @brief Data receive task
|
||||||
*/
|
*/
|
||||||
void dequtask(void)
|
void dequtask(void)
|
||||||
{
|
{
|
||||||
int x, i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
||||||
k_msgq_get(&DEMOQX1, &x, K_FOREVER);
|
k_msgq_get(&DEMOQX1, buffer, K_FOREVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
||||||
k_msgq_get(&DEMOQX4, &x, K_FOREVER);
|
k_msgq_get(&DEMOQX4, buffer, K_FOREVER);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < NR_OF_MSGQ_RUNS; i++) {
|
||||||
|
k_msgq_get(&DEMOQX192, buffer, K_FOREVER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue