Dave Marples
unread,Sep 19, 2019, 10:52:31 AM9/19/19Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to nuttx
Folks,
A bit of an aside, but I've been doing some performance testing of NuttX
using orbuculum, Development branch. This is a debug build of NuttX with
no optimization, stack overflow checking on, debug assertions on and
stack coloration. The test was flood pinging over a 2.4GHz WiFi network
to a BCM43438 based radio connected over SDIO on an IMX1021.
Personally, I don't think 77% idle in that configuration is too bad!
With optimisations switched on (the second case below) processor load
decreases to get nearly 91% idle. The decrease in Interrupt time
(AveTicks) is particularly interesting for the optimised case. Keep this
is your back pocket for next time someone starts claiming embedded OSes
introduce inefficiency.
Sampling was over a 20MHz SWO channel on a SEGGER JTrace.
Regards
DAVE
(Debug build
case)===========================================================
77.45% 24034 ** SLEEPING **
1.55% 481 imxrt_sendcmd
1.27% 395 up_doirq
1.18% 369 imxrt_waitresponse
1.05% 327 up_invalidate_dcache
1.05% 326 sdio_io_rw_extended
0.87% 273 board_autoled_off
0.74% 231 board_autoled_on
0.71% 223 nxsem_post
0.70% 218 wd_start
0.67% 209 memcpy
0.66% 205 imxrt_waitenable
0.63% 197 __udivmoddi4
0.53% 167 clock_systimespec
0.52% 163 up_svcall
0.40% 127 irq_dispatch
0.37% 115 sdio_sendcmdpoll
0.33% 104 exception_common
0.33% 104 sched_unlock
0.31% 99 raisebasepri
-----------------
91.32% 28367 of 31029 Samples
Ex | Count | MaxD | TotalTicks | AveTicks | minTicks | maxTicks
----+----------+-------+-------------+------------+------------+------------
11 | 1485 | 1 | 22425983 | 15101 | 2105 | 27985
15 | 102 | 1 | 796746 | 7811 | 1075 | 19170
127 | 998 | 1 | 25909293 | 25961 | 4225 | 89247
[--TH] Interval = 1013mS / 508340857 (~501817 Ticks/mS)
(Full optimisation
case)========================================================
90.81% 27833 ** SLEEPING **
1.99% 610 imxrt_waitresponse
0.89% 274 exception_common
0.53% 164 up_svcall
0.34% 106 imxrt_waitenable
0.28% 87 clock_systimespec
0.27% 85 __udivmoddi4
0.27% 84 imxrt_sendcmd
0.26% 82 memcpy
0.25% 79 imxrt_eventwait
0.24% 74 up_invalidate_dcache
0.19% 61 up_doirq
0.19% 59 $t
0.19% 59 raisebasepri
0.17% 53 nxsig_timedwait
0.16% 52 sched_addprioritized
0.16% 51 up_block_task
0.12% 37 up_switchcontext
0.12% 37 work_process
0.10% 33 sdio_sendcmdpoll
-----------------
97.53% 29920 of 30648 Samples
Ex | Count | MaxD | TotalTicks | AveTicks | minTicks | maxTicks
----+----------+-------+-------------+------------+------------+------------
11 | 1912 | 1 | 11050219 | 5779 | 520 | 15661
15 | 101 | 1 | 87793 | 869 | 620 | 8815
127 | 1233 | 1 | 6376226 | 5171 | 834 | 23771
[V-TH] Interval = 1011mS / 502109473 (~496646 Ticks/mS)