[rtems-docs commit] c-user: Add SMP profiling
Sebastian Huber
sebh at rtems.org
Fri Feb 3 12:58:33 UTC 2017
Module: rtems-docs
Branch: master
Commit: 0874d7dd594dab1a7214c66117eb25db57fc5c02
Changeset: http://git.rtems.org/rtems-docs/commit/?id=0874d7dd594dab1a7214c66117eb25db57fc5c02
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Fri Feb 3 13:58:19 2017 +0100
c-user: Add SMP profiling
---
c-user/symmetric_multiprocessing_services.rst | 58 +++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/c-user/symmetric_multiprocessing_services.rst b/c-user/symmetric_multiprocessing_services.rst
index 80e3f8c..b043bf8 100644
--- a/c-user/symmetric_multiprocessing_services.rst
+++ b/c-user/symmetric_multiprocessing_services.rst
@@ -2,6 +2,7 @@
.. COMMENT: COPYRIGHT (c) 2014.
.. COMMENT: On-Line Applications Research Corporation (OAR).
+.. COMMENT: Copyright (c) 2017 embedded brains GmbH.
.. COMMENT: All rights reserved.
Symmetric Multiprocessing (SMP)
@@ -599,6 +600,63 @@ processors.
:width: 400
:align: center
+Profiling
+---------
+
+To identify the bottlenecks in the system, support for profiling of low-level
+synchronization is optionally available. The profiling support is a BSP build
+time configuration option (``--enable-profiling``) and is implemented with an
+acceptable overhead, even for production systems. A low-overhead counter for
+short time intervals must be provided by the hardware.
+
+Profiling reports are generated in XML for most test programs of the RTEMS
+testsuite (more than 500 test programs). This gives a good sample set for
+statistics. For example the maximum thread dispatch disable time, the maximum
+interrupt latency or lock contention can be determined.
+
+.. code-block:: xml
+
+ <ProfilingReport name="SMPMIGRATION 1">
+ <PerCPUProfilingReport processorIndex="0">
+ <MaxThreadDispatchDisabledTime unit="ns">36636</MaxThreadDispatchDisabledTime>
+ <MeanThreadDispatchDisabledTime unit="ns">5065</MeanThreadDispatchDisabledTime>
+ <TotalThreadDispatchDisabledTime unit="ns">3846635988
+ </TotalThreadDispatchDisabledTime>
+ <ThreadDispatchDisabledCount>759395</ThreadDispatchDisabledCount>
+ <MaxInterruptDelay unit="ns">8772</MaxInterruptDelay>
+ <MaxInterruptTime unit="ns">13668</MaxInterruptTime>
+ <MeanInterruptTime unit="ns">6221</MeanInterruptTime>
+ <TotalInterruptTime unit="ns">6757072</TotalInterruptTime>
+ <InterruptCount>1086</InterruptCount>
+ </PerCPUProfilingReport>
+ <PerCPUProfilingReport processorIndex="1">
+ <MaxThreadDispatchDisabledTime unit="ns">39408</MaxThreadDispatchDisabledTime>
+ <MeanThreadDispatchDisabledTime unit="ns">5060</MeanThreadDispatchDisabledTime>
+ <TotalThreadDispatchDisabledTime unit="ns">3842749508
+ </TotalThreadDispatchDisabledTime>
+ <ThreadDispatchDisabledCount>759391</ThreadDispatchDisabledCount>
+ <MaxInterruptDelay unit="ns">8412</MaxInterruptDelay>
+ <MaxInterruptTime unit="ns">15868</MaxInterruptTime>
+ <MeanInterruptTime unit="ns">3525</MeanInterruptTime>
+ <TotalInterruptTime unit="ns">3814476</TotalInterruptTime>
+ <InterruptCount>1082</InterruptCount>
+ </PerCPUProfilingReport>
+ <!-- more reports omitted --->
+ <SMPLockProfilingReport name="Scheduler">
+ <MaxAcquireTime unit="ns">7092</MaxAcquireTime>
+ <MaxSectionTime unit="ns">10984</MaxSectionTime>
+ <MeanAcquireTime unit="ns">2320</MeanAcquireTime>
+ <MeanSectionTime unit="ns">199</MeanSectionTime>
+ <TotalAcquireTime unit="ns">3523939244</TotalAcquireTime>
+ <TotalSectionTime unit="ns">302545596</TotalSectionTime>
+ <UsageCount>1518758</UsageCount>
+ <ContentionCount initialQueueLength="0">759399</ContentionCount>
+ <ContentionCount initialQueueLength="1">759359</ContentionCount>
+ <ContentionCount initialQueueLength="2">0</ContentionCount>
+ <ContentionCount initialQueueLength="3">0</ContentionCount>
+ </SMPLockProfilingReport>
+ </ProfilingReport>
+
Scheduler Helping Protocol
--------------------------
More information about the vc
mailing list