SOFTWARE PERFORMANCE AND SCALABILITY
- Anno accademico
- 2020/2021 Programmi anni precedenti
- Titolo corso in inglese
- SOFTWARE PERFORMANCE AND SCALABILITY
- Codice insegnamento
- CM0481 (AF:332750 AR:175926)
- Lingua di insegnamento
- Inglese
- 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
Inquadramento dell'insegnamento nel percorso del corso di studio
Lo studente conoscerà gli aspetti fondamentali da considerare nella progettazione di software con requisiti di prestazioni e scalabilità.
Risultati di apprendimento attesi
- 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
Prerequisiti
- variabili casuali continue e discrete
- processi di Markov
Programmazione server side in un linguaggio a scelta
Uso di database relazionali
Contenuti
- 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
Testi di riferimento
Ray Jain: The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling. Wiley. 1991
Modalità di verifica dell'apprendimento
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.