how to measure rtos performance · 2 mentor.com/embedded agenda introduction rtos/metrics...

43
mentor.com/embedded Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions. Linux is the registered trademark of Linus Torvalds in the U.S. and other countries. Colin Walls [email protected] with acknowledgement to Faheem Sheikh & Dan Driscoll How to Measure RTOS Performance

Upload: others

Post on 22-Mar-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

mentor.com/embedded

Android'is'a'trademark'of'Google'Inc.'Use'of'this'trademark'is'subject'to'Google'Permissions.Linux'is'the'registered'trademark'of'Linus'Torvalds'in'the'U.S.'and'other'countries.

Colin/Walls

[email protected]

with/acknowledgement/to/Faheem Sheikh/&/Dan/Driscoll

How$to$Measure$RTOS$Performance

Page 2: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

2mentor.com/embedded

2

Agenda

Introduction

RTOS/Metrics

Memory/Footprint

Interrupt/Latency

Scheduling/Latency

Timing/Kernel/Services

Conclusions

Page 3: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

3mentor.com/embedded

3

Agenda

Introduction

RTOS/Metrics

Memory/Footprint

Interrupt/Latency

Scheduling/Latency

Timing/Kernel/Services

Conclusions

Page 4: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

4mentor.com/embedded

4

Introduction$– Why?

Embedded&systems– Enough&CPU&power&– just– Adequate&memory&– none&to&spare– Power&consumption&an&issue– Cost&normally&critical

Desktop&computers– Infinite&CPU&power– Infinite&memory– Costs&nothing

Page 5: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

5mentor.com/embedded

5

Introduction$– Choosing$an$RTOS

! RTOS/solutions

— Proprietary/[inOhouseP/home/brew]

— Commercial

– At/least/200/product/available

— Open/source

! Asking/the/right/questions/is/important

! Understanding/the/answers/is/critical

— Pitfalls/with/misinterpretation

Page 6: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

6mentor.com/embedded

6

Agenda

Introduction

RTOS$Metrics

Memory/Footprint

Interrupt/Latency

Scheduling/Latency

Timing/Kernel/Services

Conclusions

Page 7: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

7mentor.com/embedded

7

RTOS$Metrics

! Three/common/categories:

— Memory/footprint

– Program/and/data

— Latency

– Interrupt/and/scheduling

— Services/performance

! No/real/standardization

— Embedded/Microprocessor/Benchmark/Consortium/(EEMBC)/not/

widely/adopted

– Oriented/towards/CPU/benchmarking

Page 8: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

8mentor.com/embedded

8

Agenda

Introduction

RTOS/Metrics

Memory$Footprint

Interrupt/Latency

Scheduling/Latency

Timing/Kernel/Services

Conclusions

Page 9: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

9mentor.com/embedded

9

Memory$Footprint

! RAM/and/ROM/requirements/of/RTOS

— On/a/specific/platform

! ROM&size:– Kernel&code– ReadGonly&data– Runtime&library&code– Maybe&in&flashH&possibly&copied&to&RAM

! RAM&size:– Kernel&data&structures– Global&variables– May&need&accommodate&“ROM”

Page 10: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

10mentor.com/embedded

10

Memory$Footprint$– Dependencies$

! Key/factors/affect/the/footprint/calculation

! CPU/architecture

— Huge/effect/on/number/of/instructions

! Software/configuration

— Which/kernel/components/are/included

— Scalability/...

! Compiler/optimization

— Reduces/code/size,/but/may/adversely/affect/performance

Page 11: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

11mentor.com/embedded

1111

Memory$Footprint$– Scalability$

Service&#1

Service&#2

Service&#3

Service&#4

Service&#271

RTOS

…rtos_call_1();…rtos_call_3();…rtos_call_157();…

ApplicationCode

Service&#1

Service&#3

Service&#157

RTOScore

Application Memory

Page 12: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

12mentor.com/embedded

12

Memory$Footprint$– Measurement$

! Making/measurement/need/not/be/difficult

! Two/key/methods:

— Memory/MAP/file

– Generated/by/standard/linkers

– Quality/and/detail/varies/between/tools

— Specific/tool

– Shows/footprint/information/for/selected/executable/image

– Example:/objdump

Page 13: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

13mentor.com/embedded

13

Memory$Footprint$– Importance$

! Limited/memory/availability

— Small/onOchip/memory

— No/external/memory/option

— Application/code/is/priority

! Larger/systems

— Kernel/performance/a/priority

— Place/in/onOchip/memory

— Lock/into/cache

! Using/a/bootloader

— NonOvolatile/memory/and/RAM/space/used

Page 14: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

14mentor.com/embedded

14

Memory$Footprint$– Pitfalls$

! Vendor/data/can/be/readily/misinterpreted

! Look/at/minimum/configuration/definition

— It/may/be/a/tiny,/impractical/subset

! Runtime/library/functions/are/often/not/included

! RAM/ROM/sizes/should/have/a/min/max/range

— RAM/is/likely/to/be/application/dependent

— ROM/driven/by/kernel/configuration

– Need/minimum/“useable”/size

– Also/maximum/measure/with/all/services

— Scalability/variable/– may/be/different/kernel/versions

Page 15: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

15mentor.com/embedded

15

Memory$Footprint$– Example$

! Nucleus/RTOS/kernel/is/fully/scalable

! Example:/ARM/Cortex/A8/in/ARM/mode

! Built/with/Mentor/Sourcery/CodeBench/toolchain

! Full/optimization/for/size

! ROM/=/12O30/Kbytes

! RAM/=/500/bytes

Page 16: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

16mentor.com/embedded

16

Memory$Footprint$– Example$

! Min/has/essential/kernel/services/[dynamic/memory,/

threads,/semaphores,/events,/queues]

— Runtime/library/excluded

! Max/includes/all/kernel/services

! Compiling/for/ThumbO2/mode/reduces/ROM/by/35%

— So/Nucleus/kernel/can/use/7.8/Kbytes/on/a/CortexOM/based/

controller

Page 17: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

17mentor.com/embedded

17

Agenda

Introduction

RTOS/Metrics

Memory/Footprint

Interrupt$Latency

Scheduling/Latency

Timing/Kernel/Services

Conclusions

Page 18: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

18mentor.com/embedded

18

Interrupt$Latency

Definitions/of/interrupt/latency

Page 19: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

19mentor.com/embedded

19

Interrupt$Latency$– Definition$

! Different/definitions

! System:/Time/between/interrupt/assertion/and/the/instant/

an/observable/response/happens

! OS:/Duration/of/when/the/CPU/was/interrupted/until/the/

start/of/the/corresponding/interrupt/service/routine/(ISR)

— This/is/really/OS/overhead

— Many/vendors/refer/to/this/as/the/latency

— Hence/often/report/zero/latency

Page 20: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

20mentor.com/embedded

20

Interrupt$Latency$– Measurement$

Interrupt/response/is/the/sum/of/two/distinct/times:

ƮIL =$ƮH$+ ƮOS

where:

ƮH is/the/hardware/dependent/time

– depends/on/the/interrupt/controller/on/the/board/as/well/as/the/type/

of/the/interrupt

ƮOS is/the/OS/induced/overhead

– Best/and/worst/case/scenarios

– Worst/when/kernel/disables/interrupts

Page 21: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

21mentor.com/embedded

21

Interrupt$Latency$– Measurement$

! Best/approach/is/to/record/time/between/interrupts/source/

and/response

— Use/an/oscilloscope

— For/example:

– One/GPIO/pin/can/generate/an/interrupt

– Another/pin/toggled/at/the/start/of/the/ISR

Page 22: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

22mentor.com/embedded

22

Interrupt$Latency$– Importance

! Specific/types/of/designs/rely/on/this/metric:

— Time/critical

— Fault/tolerant

! If/high/I/O/bandwidth/is/needed,/measure/the/latency/of/a/

particular/interrupt

! Most/systems/can/tolerate/interrupt/latency/of/tens/of/

microseconds

Page 23: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

23mentor.com/embedded

23

Interrupt$Latency$– Pitfalls$

! Main/danger/is/interpretation/of/published/figures

Hardware6configuration– Which&platform?– CPU&speed?– Cache&configuration?– Timer&frequency?– Interrupt&controller&type?

OS6configuration– Where&is&code&running&from?&[Flash,&SDRAM&...]

– Which&interrupt&used?– Code&optimized&for&speed?– Is&metric&best&or&average&case?

Page 24: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

24mentor.com/embedded

24

Interrupt$Latency$– Example$

! Nucleus/RTOS

— ARM/Cortex/A8

— 600MHz

— Running/from/SRAM

! Average/interrupt/latency/of/less/than/0.5/microseconds

Page 25: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

25mentor.com/embedded

25

Agenda

Introduction

RTOS/Metrics

Memory/Footprint

Interrupt/Latency

Scheduling$Latency

Timing/Kernel/Services

Conclusions

Page 26: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

26mentor.com/embedded

26

Scheduling$Latency$– Definition$

! Performance/of/RTOS/thread/scheduler

! Very/wide/variation/in/measurement/ technique/and/

interpretation

! Two/distinct/related/quantities:

— Context/switch/time

— Scheduling/overhead

Page 27: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

27mentor.com/embedded

27

Scheduling$Latency$– Definition$

Context/switch/time

Page 28: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

28mentor.com/embedded

28

Scheduling$Latency$– Definition$

Scheduling/overhead

Page 29: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

29mentor.com/embedded

29

Scheduling$Latency$– Measurement$

Scheduling/latency/is/the/maximum/of/two/times:

ƮSL =$MAX(ƮSO, ƮCS)

where:

ƮSO is/the/scheduling/overhead

– End/of/ISR/to/start/of/task/schedule

ƮCS is/the/time/taken/to/save/and/restore/thread/context

Page 30: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

30mentor.com/embedded

30

Scheduling$Latency$– Importance

! Most/systems/ that/have/stringent/interrupt/latency/

demands/also/need/low/scheduling/latency

! Broadly,/systems/ that/are:

— Time/critical

— Fault/tolerant

Page 31: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

31mentor.com/embedded

31

Scheduling$Latency$– Pitfalls$

! Ignoring/initial/system/state

— If/system/is/idle,/there/is/no/time/taken/saving/context

Hardware6configuration– Which&platform?– CPU&speed?– Cache&configuration?– Timer&frequency?– Interrupt&controller&type?

OS6configuration– Where&is&code&running&from?&[Flash,&SDRAM&...]

– Which&interrupt&used?– Code&optimized&for&speed?– Is&metric&best&or&average&case?

Page 32: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

32mentor.com/embedded

32

Scheduling$Latency$– Example$

! Nucleus/RTOS

— ARM/Cortex/A8

— 600MHz

— Running/from/SRAM

! Scheduling/latency/is/1.3/microseconds

Page 33: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

33mentor.com/embedded

33

Agenda

Introduction

RTOS/Metrics

Memory/Footprint

Interrupt/Latency

Scheduling/Latency

Timing$Kernel$Services

Conclusions

Page 34: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

34mentor.com/embedded

34

Timing$Kernel$Services

! RTOS/may/have/a/great/many/API/calls

! Timing/of/keys/ones/may/be/of/interest

— Focus/on/frequently/used/API/calls

! Four/key/categories:

— Threading/services

— Synchronization/services

— InterOprocess/communication/services

— Memory/services

Page 35: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

35mentor.com/embedded

35

Timing$Kernel$Services

Threading/Services

— Control/of/fundamental/kernel/functionality:

– Create/thread

– Start/thread

– Resume/thread

– Stop/thread

— Many/multiOtaking/applications/make/heavy/use/of/these/calls

Page 36: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

36mentor.com/embedded

36

Timing$Kernel$Services

Synchronization/Services

— Services/to/synchronize/between/contexts,/like/an/ISR/and/a/

thread

— Also/protection/of/critical/code/sections/from/concurrent/access

– e.g./Semaphore/may/be/used/by/Ethernet/ISR/to/write/data/into/

shared/memory/that/is/also/used/by/a/task

— Timing/is/important/is/the/application/has/numerous/shared/

resources/or/peripherals

Page 37: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

37mentor.com/embedded

37

Timing$Kernel$Services

InterOprocess/Communication/Services

— Services/to/share/data/between/multiple/threads

— Examples:

– FIFOs

– Queues

– Mailboxes

– Event/flags

— Many/multiOtaking/applications/make/heavy/use/of/this/type/of/

service

Page 38: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

38mentor.com/embedded

38

Timing$Kernel$Services

Memory/Services

— In/a/multiOthreaded/context,/kernel/is/used/to/manage/dynamic/

memory

— Allocation/and/deOallocation/times/are/important

– Applications/with/large/data/throughput/are/particularly/sensitive

Page 39: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

39mentor.com/embedded

39

Timing$Kernel$Services$– Pitfalls$

! Hardware/configuration

— Which/platform?

— CPU/speed?

— Cache/configuration?

! OS/configuration

— Where/is/code/running/from?/[Flash,/SDRAM/...]

— Code/optimized/for/speed?

— Is/metric/best/or/average/case?

— Is/kernel/configured/for/reduced/error/checking?

Page 40: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

40mentor.com/embedded

40

Timing$Kernel$Services$– Example

Nucleus$RTOS$Kernel$Service Time$in$µS

Task/resumption 0.3

Task/suspension 0.3

Obtaining/a/semaphore 0.5

Set/an/event 0.4

Send/message/to/queue 0.9

Allocate/memory 0.2

DeOallocate/memory 0.7

Allocate/partition 0.4

Page 41: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

41mentor.com/embedded

41

Agenda

Introduction

RTOS/Metrics

Memory/Footprint

Interrupt/Latency

Scheduling/Latency

Timing/Kernel/Services

Conclusions

Page 42: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

42mentor.com/embedded

42

Conclusions

! RTOS/performance/data/provided/by/vendors/can/be/

useful

! It/can/also/be/misleading/if/it/is/misinterpreted

! Need/a/thorough/understanding/of:

— Measurement/techniques

— Terminology

— TradeOoffs

to/conduct/fair/comparison

! Recommendation/is/to/rely/on/holistic/or/applicationO

oriented/measurements

Page 43: How to Measure RTOS Performance · 2 mentor.com/embedded Agenda Introduction RTOS/Metrics Memory/Footprint Interrupt/Latency Scheduling/Latency Timing/Kernel/Services Conclusions

mentor.com/embedded

Android'is'a'trademark'of'Google'Inc.'Use'of'this'trademark'is'subject'to'Google'Permissions.Linux'is'the'registered'trademark'of'Linus'Torvalds'in'the'U.S.'and'other'countries.

Colin/Walls

[email protected]

http://blogs.mentor.com/colinwalls

Thank$you