SOFTWARE PERFORMANCE AND SCALABILITY

Anno accademico
2021/2022 Programmi anni precedenti
Titolo corso in inglese
SOFTWARE PERFORMANCE AND SCALABILITY
Codice insegnamento
CM0481 (AF:354806 AR:185432)
Modalità
In presenza
Crediti formativi universitari
6
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
INF/01
Periodo
II Semestre
Anno corso
1
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
Lo studente acquisirà conoscenze avanzate su metodi matematici e computazionali per l’ottimizzazione, le conoscenze fondamentali per progettare software e sistemi per la gestione e l’elaborazione di grandi moli di dati digitali.
Lo studente conoscerà gli aspetti fondamentali da considerare nella progettazione di software con requisiti di prestazioni e scalabilità.
Alla fine del corso lo studente sarà in grado di:
- riconoscere i fondamentali performance patterns di un sistema: colli di bottiglia, collasso per congestione, collasso latente per congestione, effetti collaterali della competizione
- Programmare un banchmark professionale ed eseguire degli esperimenti per determinare gli indici di prestazione
- Interpretare correttamente i risultati di un benchmark
- Modellare un sistema software mediante un sistema a coda o a reti di code
- Individuare colli di bottiglia e bounds per gli indici di performance in sistemi che consistono di più componenti modellati mediante reti di code
- Calcolare gli indici di prestazione medi per sistemi complessi modellati tramite reti di code
Statistica e calcolo delle probabilità di base
- variabili casuali continue e discrete
- processi di Markov

Programmazione server side in un linguaggio a scelta

Uso di database relazionali
Introduzione alla performance evaluation
- Performance patterns
- Indici di prestazione
- Metodologie per la valutazione delle prestazioni

Introduzione alle architetture hardware/software
- classificazione del parallelismo nei processori (hyper threading, multi core, multi processor) ed impatto sulle performance del software
- sistemi di dischi RAID e loro impatto sulle performance del software
- reti ed impatto sulle performance del software
- introduzione alle architetture software

Benchmarking
- Progettazione di un esperimento di benchmarking
- Benchmarking in open loop e closed loop
- Intervalli di confidenza

Single queueing systems
- Notazione Kendall
- Legge di Little
- Code: M/M/1, M/M/m, M/M/Infinity. Formule di Erlang
- Code M/G/1

Reti di code
- Analisi operazionale
- Reti di code di Jackson
- Reti di code di Gordon Newell: algoritmi di convoluzione e di Mean Value Analysis
- Reti di code BCMP
- Utilizzo di Java Modelling Tool (JMT) per lo studio di reti di code

Introduzione al profiling del software

Case study: performance di applicazioni basate su bitcoin/blockchain
Henry H. Liu: Software performance and scalability. A quantitative approach. Wiley. 2009
Ray Jain: The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling. Wiley. 1991
L’esame può essere sostenuto in due modi:
1) Una prova scritta e una prova orale. La prova scritta consiste in domande aperte sugli argomenti del corso ed in esercizi. La prova orale consisterà principalmente in una discussione della prova scritta.
2) Due assignments di laboratorio e una prova orale. La prova orale prevede la discussione della parte di laboratorio e in domande sul programma del corso.
Laboratorio e lezioni frontale
Inglese
scritto e orale
Programma definitivo.
Data ultima modifica programma: 15/03/2021