Performance testing...

69 views
Skip to first unread message

Dave Marples

unread,
Sep 19, 2019, 10:52:31 AM9/19/19
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)

Reply all
Reply to author
Forward
0 new messages