Real-time EDF scheduling per il kernel FreeBSD: analisi, implementazione e risultati sperimentali

Documenti analoghi
Università degli Studi di Milano Bicocca Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea Specialistica in Informatica

Schedulazione in RTAI

Lo scheduling. Tipici schedulatori

scheduling Riedizione modifi cata delle slide della Prof. DI Stefano

Università degli Studi di Milano Bicocca Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea Specialistica in Informatica

Algoritmi di scheduling

Scheduling. Scheduling 14/12/2003 1/7

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

Lo scheduler di UNIX (1)

Algoritmi di scheduling - Parte 2

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Scheduling. Lo scheduler è la parte del SO che si occupa di

Sistemi Operativi. Scheduling dei processi

Lezione 6. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

RTAI e scheduling. Andrea Sambi

Low Power Scheduling per Sistemi Real Time

Scheduling della CPU

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Lezione R14. Sistemi embedded e real-time

Lez. 4 Lo scheduling dei processi. Corso: Sistemi Operativi Danilo Bruschi

Sistemi Operativi SCHEDULING DELLA CPU

Gianluigi Magnasco easitec S.r.l. Parma, 16 Settembre 2010

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Porting su architettura ARM Marvell 88F6281 ed analisi comparativa delle patch real-time RTAI e Xenomai per il kernel Linux

Lo Scheduling Real Time in Linux. Universita degli studi di Roma La Sapienza Ivan Gualandri Matricola Relatore: Giorgio Richelli

Obiettivo della multiprogrammazione: massimizzazione dell utilizzo CPU. Scheduling della CPU: commuta l uso della CPU tra i vari processi

Principi di Schedulazione in tempo reale

Processi e Thread. Scheduling (Schedulazione)

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi.

Scheduling della CPU:

Concetti di base. Scheduling della CPU. Diagramma della durata dei CPU-burst. Sequenza Alternata di CPU Burst e I/O Burst

J. Assfalg Appunti di Sistemi Operativi

Corso di Informatica

La schedulazione. E.Mumolo

SCHEDULATORI DI PROCESSO

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi operativi e reti A.A Lezione 2

Esercitazione E1 Scheduling, deadlock, monitor

ISTVAS Ancona Introduzione ai sistemi operativi Tecnologie Informatiche

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Gli stati di un processo

Laureando: Damiano Vittor. Relatore: Dott. Ing. Massimiliano Nolich

Sistemi Real-Time Ing. Rigutini Leonardo

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Lo schedulatore del kernel

Scheduling della CPU. Contenuti delle lezioni del 23 e del 26 Marzo Sequenza alternata di CPU burst e di I/O burst.

Scheduling della CPU

Implementazione di sistemi real time

Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Concetti fondamentali. Dispatcher. Scheduler della CPU

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

Il sistema operativo TinyOS

Scheduling della CPU Simulazione in linguaggio Java

Scheduling della CPU

Come valutare e scegliere un Sistema Operativo Embedded

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

FONDAMENTI di INFORMATICA L. Mezzalira

Sistemi Operativi. Schedulazione della CPU

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Progetti F.O.S.S. Ieri e Oggi

Criteri di Scheduling Algoritmi di Scheduling Multiple-Processor Scheduling Asymmetric/Symmetric multiprocessing Processori Multicore

Scheduling. Dipartimento di Informatica Università di Verona, Italy. Sommario

Generazione Automatica di Asserzioni da Modelli di Specifica

Diagramma delle durate dei CPU burst. Lo scheduler della CPU. Criteri di scheduling. Dispatcher

Linux nei sistemi Real-Time. Andrea Sambi

Un sistema operativo è un insieme di programmi che consentono ad un utente di

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Strumento per l iniezione di guasti software nel sistema operativo GNU/Linux

Capitolo 1: Introduzione

5. Scheduling della CPU. 5.1 Concetti Fondamentali Lo scheduler della CPU

5. Scheduling della CPU

GENERAZIONE PROCESSO FIGLIO (padre attende terminazione del figlio)

Capitolo 5: Scheduling della CPU! Scheduling della CPU! Concetti di Base! Alternanza di Sequenze di CPU- e I/O-Burst!

Calcolatori Elettronici A a.a. 2008/2009

Software Open Source per sistemi embedded

Sistemi Operativi a.a Esercizi - 2

Sistema operativo: Gestione dei processi

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

Scheduling della CPU

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

SISTEMI OPERATIVI. Schedulazione della CPU. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

in collaborazione con l'università degli studi di Bergamo Facoltà d'ingegneria presenta:

e-dva - eni-depth Velocity Analysis

Dipartimento di Informtica e Sistemistica Università di Roma La Sapienza

Scheduling. Livelli Algoritmi

Sistemi Operativi (modulo di Informatica II) I processi

Scheduling Introduzione Tipi di scheduler Scheduler di lungo termine (SLT) Scheduler di medio termine (SMT) Scheduler di breve termine (SBT)

STRUTTURE DEI SISTEMI DI CALCOLO

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

La Gestione delle risorse Renato Agati

Sistemi Operativi. Rappresentazione e gestione delle attività e della computazione: processi e thread

Scheduling di processi HRT

Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI

Sistemi Operativi Kernel

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Transcript:

Real-time EDF scheduling per il kernel FreeBSD: analisi, implementazione e risultati sperimentali Marco Trentini m.trentini@campus.unimib.it Relatore: Dott. Sergio Ruocco Correlatore: Prof. Francesco Tisato Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea Specialistica in Informatica Sessione del 24 Novembre, 2011

Roadmap della presentazione 1 evoluzione dei sistemi operativi Unix-like 2 FreeBSD, Linux, e sue varianti real-time 3 lo scheduler real-time SCHED DEADLINE per Linux 4 porting di SCHED DEADLINE per FreeBSD 5 risultati sperimentali 6 conclusioni e sviluppi futuri

Evoluzione dei sistemi operativi Unix-like

FreeBSD Origini, impieghi e caratteristiche principali FreeBSD nasce nel 1993 come derivazione di 386BSD la versione non commerciale di Unix sviluppata da UC-Berkeley impiegato per server, workstation e recentemente in alcuni sistemi embedded (TV Panasonic) lo scheduler (ULE) non ha supporto per il real-time...... e nella comunità non sono note iniziative in tal senso! ha una licenza (BSD) tecnicamente e commercialmente molto meno restrittiva di quella Linux (GPL)

Real-time Linux Stato dell arte Linux viene oggi impiegato in svariati ambiti: multimedia, sistemi embedded e mobili, cellulari, smartphone (Android), consumer electronics (TV, navigatori), robotica... dal 1999 si tiene il Real Time Linux Workshop, seminario internazionale dedicato al supporto ed impiego di Linux in ambiti real-time. varianti con supporto commerciale: Montavista, Windriver e Timesys; varianti con supporto communità: OCERA, AQuoSA, Frescor, LITMUS-RT, RTLinux e Preempt-RT; Variante scelta per questa tesi: SCHED DEADLINE SCHED DEADLINE = EDF + isolamento temporale (Constant Bandwidth Server) implementazione per Linux nel contesto del progetto europeo ACTOR guidato da Ericsson Research con la partecipazione, tra gli altri, di Scuola S. Anna (PI) incapsulata in un componente (modulo Linux) - lo scheduler è modulare dalla versione 2.6.23 licenza Gnu Public License (GPL) V2 free software

Modello dei task real-time in SCHED DEADLINE

FreeBSD (sched)ule: strutture dati

(sched)ule + SCHED DEADLINE = FreeBSD real-time!

Risultati sperimentali Ambiente di test: AMD Athlon(tm) 64bit X2 Dual Core Processor 5200+ (2700.27-MHz K8-class CPU); FreeBSD 8.2.0 con patch deadline-bsd (HZ=10000) Tool: modifica di sched getparam ex e relativi parametri per portare in user space informazioni di scheduling dei thread real-time; KTR, sched switch e GtkWave per visualizzare gli eventi di scheduling in formato grafico. Misurazioni: 1 rispetto dei vincoli temporali di esecuzione; 2 confronto con le altre classi di scheduling.

Risultati sperimentali - (1) SCHED DEADLINE Legenda: sh tid 100063: task di classe real-time Posix (massima priorità, simula alto carico); sh tid 100092/93/94: task di classe deadline con runtime 200/300/300(us) e deadline 1/2/3(ms); colore linea: rosso per task ready; verde/azzurro per task running; giallo per task not ready;

Risultati sperimentali - (1) SCHED DEADLINE Osservazioni: rispetto priorità esecutiva; rispetto di max runtime (isolamento temporale); rispetto delle deadline (EDF); preemption tra task real-time (EDF);

Risultati sperimentali - (2) classe standard di ULE Legenda: sh tid 100085: task di classe real-time Posix (massima priorità e in while(1), simula alto carico); sh tid 100069-72: task di classe real-time Posix (massima priorità e in while(1)); colore linea: rosso per task ready; verde/azzurro per task running; giallo per task not ready;

Risultati sperimentali - (2) classe standard di ULE Osservazioni: max runtime dipende dalla time slice (default a 100ms per tutti i task); periodo di esecuzione dipende dal numero di task in stato di pronto (in Round Robin);

Conclusioni e direzioni future Risultati ottenuti: il porting di SCHED DEADLINE in FreeBSD è stato effettuato con successo; FreeBSD può essere impiegato in ambiti applicativi con requisiti real-time. Lavori futuri: vincolo deadline diverso dal periodo; integrare altri algoritmi di scheduling real-time (come moduli);

(Extra) Cosa è stato fatto - Teoria e pratica Parte teorica: studio sulla teoria dello scheduling di processi nei sistemi operativi; scheduling in Linux e FreeBSD con ricerca di proposte real-time. Parte pratica: implementazione/trapianto di SCHED DEADLINE nello scheduler di FreeBSD con risultati sperimentali.

(Extra) FreeBSD - Scheduling di processi Due scheduler: 4BSD, ereditato da 4.3BSD (obsoleto); il più recente ULE (da schedule), scheduler di default per la maggior parte delle architetture supportate; Obiettivi massima priorità esecutiva ai task kernel; minimizzare i tempi di risposta per i task utente interattivi; supporto per architetture multicore (SMP).

(Extra) FreeBSD - Scheduling di processi Due scheduler: 4BSD, ereditato da 4.3BSD (obsoleto); il più recente ULE (da schedule), scheduler di default per la maggior parte delle architetture supportate; Obiettivi massima priorità esecutiva ai task kernel; minimizzare i tempi di risposta per i task utente interattivi; supporto per architetture multicore (SMP).

(Extra) FreeBSD - Scheduling di processi Caratteristiche di ULE: classi di priorità: in una decisione di scheduling si manda in esecuzione il task con priorità maggiore; classi kernel con priorità statiche e senza time slice; classi utente con time slice e calcolo delle priorità dinamiche con lo scopo di favorire i task interattivi; complessità temporale di O(1) (in 4BSD era O(n)); tecnica a priorità ereditata per il problema di priorità inversa; supporto alle classi di scheduling real-time POSIX sched fifo e sched rr; bilanciamento di carico statico e periodico basato su affinity e distanza di cache, per architetture multicore (SMP).

(Extra) FreeBSD - Scheduling real-time (?!) FreeBSD manca di: scheduling che tenga conto di vincoli temporali; kernel preemptive a grana più fine; timer ad alta risoluzione [1ms... 10us]; Cosa risolve l implementazione di SCHED DEADLINE in FreeBSD?

(Extra) FreeBSD - Scheduling real-time (?!) FreeBSD manca di: scheduling che tenga conto di vincoli temporali; kernel preemptive a grana più fine; timer ad alta risoluzione [1ms... 10us]; Cosa risolve l implementazione di SCHED DEADLINE in FreeBSD?

(Extra) FreeBSD - Scheduling real-time (?!) FreeBSD manca di: scheduling che tenga conto di vincoli temporali; kernel preemptive a grana più fine; timer ad alta risoluzione [1ms... 10us]; Cosa risolve l implementazione di SCHED DEADLINE in FreeBSD?

(Extra) FreeBSD - Scheduling real-time (?!) FreeBSD manca di: scheduling che tenga conto di vincoli temporali; kernel preemptive a grana più fine; timer ad alta risoluzione [1ms... 10us]; Cosa risolve l implementazione di SCHED DEADLINE in FreeBSD?

(Extra) Deadline-BSD - classe di scheduling Nuova classe di scheduling deadline. Precedenza di esecuzione: minore rispetto alle classi kernel; maggiore rispetto a tutte le classi utente; Motivazioni: evitare di ritardare l esecuzione dei gestori degli interrupt; rispetto dei vincoli temporali richide la precedenza su altri task utente; gestione della capacità di calcolo per allocare banda di utilizzo per altre classi.

(Extra) Deadline-BSD - classe di scheduling Nuova classe di scheduling deadline. Precedenza di esecuzione: minore rispetto alle classi kernel; maggiore rispetto a tutte le classi utente; Motivazioni: evitare di ritardare l esecuzione dei gestori degli interrupt; rispetto dei vincoli temporali richide la precedenza su altri task utente; gestione della capacità di calcolo per allocare banda di utilizzo per altre classi.

(Extra) Deadline-BSD - Gestione dei task Strutture dati: modifica struttura informativa dei thread; albero binario red-black (per-cpu); banda di utilizzo disponibile ed effettiva (per-cpu); Albero red-black ogni nodo rappresenta/punta ad un task; ordinato sulla base delle deadline assolute dei task; il nodo più a sinistra è quello con il minor valore; complessità temporale di gestione dell albero di O(log n).

(Extra) Deadline-BSD - Gestione dei task Strutture dati: modifica struttura informativa dei thread; albero binario red-black (per-cpu); banda di utilizzo disponibile ed effettiva (per-cpu); Albero red-black ogni nodo rappresenta/punta ad un task; ordinato sulla base delle deadline assolute dei task; il nodo più a sinistra è quello con il minor valore; complessità temporale di gestione dell albero di O(log n).

(Extra) Deadline-BSD - Isolamento temporale EDF non garantisce il rispetto del budget di esecuzione dei task. Controllo del budget: agganciato alla gestione dei tick del clock di sistema; quando un task esaurisce il suo budget viene stoppato e ri-attivato (tramite un timer) sulla base del periodo. Cosa otteniamo? l istanza del task può restare in esecuzione per al massimo il suo budget; un task non può monopolizzare la CPU, influenzando l esecuzione di altri task.

(Extra) Deadline-BSD - Isolamento temporale EDF non garantisce il rispetto del budget di esecuzione dei task. Controllo del budget: agganciato alla gestione dei tick del clock di sistema; quando un task esaurisce il suo budget viene stoppato e ri-attivato (tramite un timer) sulla base del periodo. Cosa otteniamo? l istanza del task può restare in esecuzione per al massimo il suo budget; un task non può monopolizzare la CPU, influenzando l esecuzione di altri task.

(Extra) Deadline-BSD - Isolamento temporale EDF non garantisce il rispetto del budget di esecuzione dei task. Controllo del budget: agganciato alla gestione dei tick del clock di sistema; quando un task esaurisce il suo budget viene stoppato e ri-attivato (tramite un timer) sulla base del periodo. Cosa otteniamo? l istanza del task può restare in esecuzione per al massimo il suo budget; un task non può monopolizzare la CPU, influenzando l esecuzione di altri task.

(Extra) Deadline-BSD - Gestione banda di utilizzo Gestione della banda di utilizzo (per-cpu) dei task di classe deadline regolata da due parametri di sistema: Sysctl: kern.sched.dl period us (default a 1s); kern.sched.dl runtime us (default a 600ms);

(Extra) Deadline-BSD - Test di ammissione Test di ammissione: n dl bw <= C (dl runtime us/dl period us) i=0 con C numero di CPU del sistema e n numero di task di classe deadline in stato di pronto. Cosa garantisce? sufficiente banda di CPU per rispettare i vincoli temporali di esecuzione dei task. Cosa non garantisce? l effettivo rispetto dei vincoli temporali.

(Extra) Deadline-BSD - Test di ammissione Test di ammissione: n dl bw <= C (dl runtime us/dl period us) i=0 con C numero di CPU del sistema e n numero di task di classe deadline in stato di pronto. Cosa garantisce? sufficiente banda di CPU per rispettare i vincoli temporali di esecuzione dei task. Cosa non garantisce? l effettivo rispetto dei vincoli temporali.

(Extra) Deadline-BSD - Test di ammissione Test di ammissione: n dl bw <= C (dl runtime us/dl period us) i=0 con C numero di CPU del sistema e n numero di task di classe deadline in stato di pronto. Cosa garantisce? sufficiente banda di CPU per rispettare i vincoli temporali di esecuzione dei task. Cosa non garantisce? l effettivo rispetto dei vincoli temporali.

(Extra) - Deadline-BSD - Granularità Uso dei timer in Deadline-BSD: per attivare nuove istanze di task; per controllare il budget di esecuzione dei task; I timer in FreeBSD sono legati alla frequenza del clock principale di sistema (parametro di configurazione del kernel, HZ). Cosa implica? non è possibile armare timer con una risoluzione inferiore al periodo di clock di sistema; diminuisce la precisione nel rispetto dei vincoli; frequenze troppo alte del clock di sistema comportano instabilità (es. a 1us).

(Extra) - Deadline-BSD - Granularità Uso dei timer in Deadline-BSD: per attivare nuove istanze di task; per controllare il budget di esecuzione dei task; I timer in FreeBSD sono legati alla frequenza del clock principale di sistema (parametro di configurazione del kernel, HZ). Cosa implica? non è possibile armare timer con una risoluzione inferiore al periodo di clock di sistema; diminuisce la precisione nel rispetto dei vincoli; frequenze troppo alte del clock di sistema comportano instabilità (es. a 1us).

(Extra) - Deadline-BSD - Granularità Uso dei timer in Deadline-BSD: per attivare nuove istanze di task; per controllare il budget di esecuzione dei task; I timer in FreeBSD sono legati alla frequenza del clock principale di sistema (parametro di configurazione del kernel, HZ). Cosa implica? non è possibile armare timer con una risoluzione inferiore al periodo di clock di sistema; diminuisce la precisione nel rispetto dei vincoli; frequenze troppo alte del clock di sistema comportano instabilità (es. a 1us).

(Extra) - Deadline-BSD - SMP Gestione del bilanciamento di carico per i task di classe deadline separata da quella standard di ULE. Scelta della CPU per i nuovi task: banda di utilizzo sufficiente; minir carico di task di classe deadline; la banda rimane allocata fino al uscita (exit/kill) del task.

(Extra) - Deadline-BSD - SMP Gestione del bilanciamento di carico per i task di classe deadline separata da quella standard di ULE. Scelta della CPU per i nuovi task: banda di utilizzo sufficiente; minir carico di task di classe deadline; la banda rimane allocata fino al uscita (exit/kill) del task.

(Extra) Deadline-BSD - Integrazione in ULE Innesto di Deadline-BSD in ULE: nuove strutture dati e relative inizializzazioni; scelta del task da mandare in esecuzione; switch di contesto; fork di thread; tick di stathz; tick di hz; passaggio del thread in stato di pronto; yielding; uscita di un thread.

(Extra) Deadline-BSD - Chiamate di sistema syscall: int sched_getparam_ex(pid_t, struct sched_param_ex *); int sched_getscheduler_ex(pid_t); int sched_setparam_ex(pid_t, const struct sched_param_ex *); int sched_setscheduler_ex(pid_t, int, const struct sched_param_ex *); struct sched_param_ex { int sched_priority; struct timespec sched_runtime; struct timespec sched_deadline; struct timespec sched_period; unsigned int sched_flags; struct timespec curr_runtime; struct timespec used_runtime; struct timespec curr_deadline; };

(Extra) Deadline-BSD - Risultati sperimentali - (1) Statistiche di scheduling: while(1) per 3 secondi con diversi vincoli temporali 200us/1ms 300us/2ms 300us/3ms (runtime/deadline) tot rtime usec 600289 450430 300306 (runtime totale) rtime over usec 289 430 306 (runtime totale in eccesso) last rorun usec 1 73 9 (ultimo runtime in eccesso) rorun max usec 99 99 99 (massimo runtime in eccesso) cnt dmiss 0 0 0 (nbr deadline mancate) cnt rorun 3000 1502 1001 (nbr runtime in eccesso) cnt timerfire 3000 1502 1001 (nbr attivazione timer) cnt resched 3000 1502 1001 (nbr rischedulazione) cnt updatecurr 6166 4600 3576 (nbr update runtime)

(Extra) Deadline-BSD - Risultati sperimentali - (1) Osservazioni: rispetto della banda di utilizzo grazie all isolamento temporale, (valori di tot rtime usec e figura); rispetto della deadline (cnt dmiss a 0); preemption tra task di classe deadline con EDF (preemption del task 94); rorun max use non va mai oltre la risoluzione del tick di clock di sistema (in questo caso pari a 100us);