PDF de programación - Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 3. Monitorización y control avanzado del tiempo de ejecución

Imágen de pdf Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 3. Monitorización y control avanzado del tiempo de ejecución

Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 3. Monitorización y control avanzado del tiempo de ejecucióngráfica de visualizaciones

Publicado el 14 de Enero del 2017
703 visualizaciones desde el 14 de Enero del 2017
79,8 KB
11 paginas
Creado hace 9a (13/05/2014)
Master en Computación

Plataformas de Tiempo Real

POSIX Avanzado y Extensiones

Tema 1. Ficheros y entrada/salida
Tema 2. Gestión de Interrupciones en MaRTE OS

Tema 3. Monitorización y control avanzado del tiempo de

ejecución

Tema 4. Planificación EDF
Tema 5. Planificación a Nivel de Aplicación

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

Tema 3. Monitorización y control avanzado del tiempo de ejecución

Tema 3. Monitorización y control avanzado del

tiempo de ejecución

3.1. Relojes y temporizadores de tiempo de ejecución
3.2. Patrón de diseño para threads de TR
3.3. Relojes de tiempo de ejecución para grupos de threads
3.4. Tiempo de ejecución de las Interrupciones

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014



1

2

3

Tema 3. Monitorización y control avanzado del tiempo de ejecución

3.1 Relojes y temporizadores de tiempo de

3.1 Relojes y temporizadores de tiempo de ejecución

ejecución

Ya vistos en "Programación Concurrente"

Relojes de tiempo de ejecución

• Permiten conocer el tiempo consumido por un thread

Temporizadores de tiempo de ejecución

• Permiten detectar un consumo excesivo de tiempo de

ejecución

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

Tema 3. Monitorización y control avanzado del tiempo de ejecución

Relojes de tiempo de ejecución: Resumen
Constante que identifica el reloj del thread actual:

const clockid_t CLOCK_THREAD_CPUTIME_ID = ...;

3.1 Relojes y temporizadores de tiempo de ejecución

Obtener el identificador de reloj de un thread cualquiera:

#include <pthread.h>
#include <time.h>
int pthread_getcpuclockid(pthread_t thread_id,
clockid_t *clock_id);

Leer el tiempo consumido por el thread actual:

struct timespec time;
...
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &time);

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

4

Tema 3. Monitorización y control avanzado del tiempo de ejecución

3.1 Relojes y temporizadores de tiempo de ejecución

Temporizadores de tiempo de ejec.: Resumen
Se utiliza la interfaz de temporizadores POSIX
• basados en un reloj de tiempo de ejecución
• lanzan una señal cuando expiran

Crear un temporizador:
#include <signal.h>
#include <time.h>
int timer_create (clockid_t clock_id,
struct sigevent *evp,
timer_t *timerid);

Armar (programar) un temporizador:

int timer_settime (timer_t timerid, int flags,
const struct itimerspec *value,
struct itimerspec *ovalue);

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

Tema 3. Monitorización y control avanzado del tiempo de ejecución

3.2 Patrón de diseño para threads de TR

3.2 Patrón de diseño para threads de TR

Define un marco que permite implementar de forma sencilla:

• threads periódicos y esporádicos

Con detección automática de:

• sobrepaso de plazo
• sobrepaso de tiempo de ejecución de peor caso

Basado en la utilización de temporizadores y relojes POSIX

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

5

6

Tema 3. Monitorización y control avanzado del tiempo de ejecución

3.2 Patrón de diseño para threads de TR

Checking Deadlines
Periodic and sporadic hard real-time threads have deadlines
It is useful to be able to perform some error-handling action if the
deadline is not met

loop
loop
loop
sleep until next period
loop
sleep until next period
loop
sleep until next period
set deadline watch
loop
sleep until next period
set deadline watch
sleep until next period
set deadline watch
do useful things
sleep until next period
set deadline watch
do useful things
set deadline watch
do useful things
clear deadline watch
set deadline watch
do useful things
clear deadline watch
do useful things
clear deadline watch
end loop
do useful things
clear deadline watch
end loop
clear deadline watch
end loop
clear deadline watch
end loop
end loop
end loop

Periodic Thread

Handler
Handler

Plataformas de Tiempo Real

Tema 3. Monitorización y control avanzado del tiempo de ejecución

A r m

r m

a

s

D i

Timer

Signal

loop
sigwait
execute handler
end loop

Deadline Manager Thread

© M. Aldea, M. González

Mayo-2014

3.2 Patrón de diseño para threads de TR

Enforcing CPU-time budgets
Hard real-time threads may overrun their estimated WCETs,
perhaps causing somebody else to miss its deadline
It is necessary to detect and limit budget overruns

Periodic Thread

loop
loop
loop
sleep until next period
loop
sleep until next period
loop
sleep until next period
set deadline watch
loop
sleep until next period
set deadline watch
sleep until next period
set deadline watch
do useful things
sleep until next period
set deadline watch
do useful things
set deadline watch
do useful things
clear deadline watch
set budget watch
do useful things
clear deadline watch
do useful things
clear deadline watch
end loop
do useful things
clear deadline watch
end loop
clear deadline watch
end loop
clear budget watch
end loop
end loop
end loop

Lower the priority
or abort job

Handler
Handler

Plataformas de Tiempo Real

Tema 3. Monitorización y control avanzado del tiempo de ejecución

A r m

r m

a

s

D i

CPU-Time

Timer

Signal

loop
sigwait
execute handler
end loop
Budget Manager Thread

© M. Aldea, M. González

Mayo-2014

Common actions for a periodic thread

3.2 Patrón de diseño para threads de TR

Periodic Thread

loop
loop
loop
loop
sleep until next period
loop
sleep until next period
loop
sleep until next period
clear budget watch
set deadline watch
loop
sleep until next period
set deadline watch
sleep until next period
set deadline watch
clear deadline watch
do useful things
sleep until next period
set deadline watch
do useful things
set deadline watch
do useful things
sleep until next period
clear deadline watch
set budget watch
do useful things
clear deadline watch
do useful things
clear deadline watch
set budget watch
end loop
do useful things
clear deadline watch
end loop
clear deadline watch
end loop
set deadline watch
clear budget watch
end loop
end loop

end loop
do useful things
end loop

A r m

r m

a

s

D i

CPU-Time

Timer

Signal

Handler
Handler

loop
sigwait
execute handler
end loop
Budget Manager Thread

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

7

8

9

Tema 3. Monitorización y control avanzado del tiempo de ejecución

Example: packages for periodic threads

3.2 Patrón de diseño para threads de TR

time_ops

rt_constants

user thread

rt_events

rt_deadlines

rt_budgets

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

10

3.2 Patrón de diseño para threads de TR

Tema 3. Monitorización y control avanzado del tiempo de ejecución

Example sources: rt_budgets.h
#include <time.h>
#include "rt_constants.h"
#ifndef RT_BUDGET_TIMERS
#define RT_BUDGET_TIMERS
#define RT_BUDGET_SIGNAL SIGRTMIN
// Opaque datatype for the budget timer
typedef struct { ... } rt_budget_timer;

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

11

Tema 3. Monitorización y control avanzado del tiempo de ejecución

rt_budgets.h (cont’d)

3.2 Patrón de diseño para threads de TR

// Creates the budget manager thread if it is not already created
int rt_init_budget_manager();
// Creates a budget timer for the calling thread, with a
// normal priority level equal to the calling thread's priority
int rt_init_budget_timer(rt_budget_timer *budgettimer,
void (*action)(void *arg),
void * arg);
// Starts counting the budget
int rt_set_budget_timer(rt_budget_timer *budgettimer,
struct timespec budget);
// Stops counting the budget
int rt_clear_budget_timer(rt_budget_timer *budgettimer);
#endif //RT_BUDGET_TIMERS

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

12

Tema 3. Monitorización y control avanzado del tiempo de ejecución

Example sources: rt_deadlines.h

3.2 Patrón de diseño para threads de TR

#include <time.h>
#ifndef RT_DEADLINES
#define RT_DEADLINES
#define RT_DEADLINE_SIGNAL SIGRTMIN+1
// Opaque datatype for the deadline timer
typedef struct { ... } rt_dln_timer;

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

13

Tema 3. Monitorización y control avanzado del tiempo de ejecución

rt_deadlines.h (cont’d)

3.2 Patrón de diseño para threads de TR

// Creates the deadline manager thread if it is not already created
int rt_init_deadline_manager();
// Creates a budget timer for the calling thread, with the
// specified action and arg. associated with the expiration
int rt_init_deadline_timer(rt_dln_timer *dlntimer,
void (void *arg) action,
void * arg);
// Sets the deadline timer to expire at the deadline
int rt_set_deadline_timer(rt_dln_timer *dlntimer,
struct timespec budget);
// Stops the deadline timer
int rt_clear_deadline_timer(rt_budget_timer *budgettimer);
#endif //RT_DEADLINES

Plataformas de Tiempo Real

© M. Aldea, M. González

Mayo-2014

14

Tema 3. Monitorización y control avanzado del tiempo de ejecución

3.2 Patrón de diseño para threads de TR

Example sources: rt_events.h
#include <time.h>
#include "rt_constants.h"
#include "rt_budgets.h"
#include "rt_deadlines.h"
#ifndef RT_EVENT_MANAGERS
#define RT_EVENT_MANAGERS
// Event manager types
typedef enum {PERIODIC, SPORADIC, ...} event_manager_t;
// Opaque datatype for the event manager
typedef struct {
rt_budget_timer budgettimer;
rt_dln_timer dlntimer;
... } rt_event_manager;

Los campos budgettimer y dlntimer permiten
cambiar el manejador usando las funciones
rt_init_budget_timer y
rt_init_deadline_timer respectivamente.
Los manejadores por defecto se limitan a escribir
un
  • Links de descarga
http://lwp-l.com/pdf1129

Comentarios de: Master en Computación - Plataformas de Tiempo Real - POSIX Avanzado y Extensiones - Tema 3. Monitorización y control avanzado del tiempo de ejecución (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad