SOFTWARE PERFORMANCE AND SCALABILITY
- Anno accademico
- 2024/2025 Programmi anni precedenti
- Titolo corso in inglese
- SOFTWARE PERFORMANCE AND SCALABILITY
- Codice insegnamento
- CM0481 (AF:513746 AR:286775)
- Lingua di insegnamento
- Inglese
- Modalità
- In presenza
- Crediti formativi universitari
- 6
- Livello laurea
- Laurea magistrale (DM270)
- Settore scientifico disciplinare
- ING-INF/05
- 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
Mor Harchol-Balter: Performance Modeling and Design of Computer Systems: Queueing Theory in Action. Cambridge press 2021
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) Un progetto di laboratorio e una prova orale. La prova orale prevede la discussione della parte di laboratorio e in domande sul programma del corso.
Nel caso 1) la valutazione dell'esame terrà conto della capacità di svolgere e discutere i casi di studio proposti nella prova scritta (70%) e della capacità di esporre i concetti fondamentali della disciplina (30%)
Nel caso 2) la valutazione dell'esame terrà conto della qualità del progetto (30%), della qualità della relazione che lo descrive (20%), della capacità di esporre i concetti fondamentali della disciplina (50%)