fdcavalcanti commented on PR #16673:
URL: https://github.com/apache/nuttx/pull/16673#issuecomment-3113140740

   > I made some testing; executed some px4 based FC apps on MFPS with 
CONFIG_BUILD_KERNEL=y, CONFIG_SMP_NCPUS=4, CONFIG_DEBUG_ASSERTIONS=y, 
CONFIG_PRIORITY_INHERITANCE=y
   > 
   > This is a very semaphore heavy data-driven app, with data producers 
(sensors) frequencies varying between 800Hz to 2KHz (several pipelines running 
in parallel), and also communication between kernel and userspace is based on 
semaphores (+ lots of context switches).
   > 
   > With an earlier version of this PR (the SMP code is the same, just some 
cosmetic changes after that), the test has been succesfully running for 2 days 
8 hours without errors:
   > 
   > ```
   > nsh> uptime
   > 15:25:05 up 2 days,  8:27
   > ```
   > 
   > From the current PR version, I measured some CPU load with PX4 tools (px4 
top):
   > 
   > px4 top:
   > 
   > ```
   >  PID COMMAND                   CPU(ms) CPU(%)  USED/STACK PRIO(BASE) 
TSLICE FD
   >    0 CPU0 IDLE                   77818 59.735   392/ 2048   0 (  0)      0 
 5
   >    1 CPU1 IDLE                   75126 74.300   632/ 2016   0 (  0)      0 
 5
   >    2 CPU2 IDLE                  104611 86.036   584/ 2016   0 (  0)      0 
 5
   >    3 CPU3 IDLE                  111112 92.352   584/ 2016   0 (  0)      0 
 5
   > ...
   > Processes: 96 total, 5 running, 91 sleeping
   > CPU usage: 21.89% tasks, 0.00% sched, 78.11% idle
   > Uptime: 120.440s total, 77.818s idle
   > ```
   > 
   > With the current upstream version of the scheduling, the same tool gives me
   > 
   > ```
   >  PID COMMAND                   CPU(ms) CPU(%)  USED/STACK PRIO(BASE) 
TSLICE FD
   >    0 CPU0 IDLE                   86933 61.260   408/ 2048   0 (  0)      0 
 5
   >    1 CPU1 IDLE                  118468 73.182   616/ 2016   0 (  0)      0 
 5
   >    2 CPU2 IDLE                  134880 81.970   584/ 2016   0 (  0)      0 
 5
   >    3 CPU3 IDLE                  144453 91.641   584/ 2016   0 (  0)      0 
 5
   > ...
   > Processes: 96 total, 5 running, 91 sleeping
   > CPU usage: 22.62% tasks, 0.00% sched, 77.38% idle
   > Uptime: 458.290s total, 276.382s idle
   > ```
   > 
   > So initially it seems that the PR gives a small performance gain over the 
current version.
   > 
   > Additionally, I used the px4 "perf" tool, which measures a bunch of 
latencies and latency deviations, also these show some smaller deviations in 
latencies with this PR (something to note here: the "sched" figure doesn't give 
anything reasonable on risc-v due to placement of sched note hooks; all the 
time is accounted in the thread's execution times).
   > 
   > Also tested the rv-virt:smp64 target on qemu with ostest, which passes. 
Additionally I enabled CONFIG_PRIORITY_INHERITANCE and CONFIG_DEBUG_ASSERTIONS 
on the rv-virt:smp64 target and checked with ostest.
   > 
   > And finally; I am not experiencing the original issue ... which we first 
tried to patch, but then requests to remove the whole pending lists etc. lead 
to this re-write.
   > 
   > So all in all, I am currently quite happy with this...
   
   Seems the tests have different uptimes. Can you repeat with a similar run 
time?
   I'll test this on Espressif CI to so we have more answers on RISC-V and 
Xtensa.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to