Performance evaluation Flashcards
Quali sono gli approcci di performance evaluation?
Quali sono gli approcci di comparison?
Quali sono i nostri parametri? nel grafico dove vogliamo rimanere (verde, giallo, rosso)? Quali sono le problematiche del futuro?
Abbiamo:
- Sistemi reali (bench marking)
- Modelli fisici: con prototipi su piccola scala, fare scale up del risultato
- Modelli matematici: equazioni che imitano il comportamento di un sistema, gestibili, what if scenari
- Simulatori: software che implementano il comportamento di un sistema
______
- Sistema reali vs modello: facile da fare e meno costoso/pericoloso
- fisico vs matematico: facile da realizzare, poco costoso e facile da modificare, i modelli matematici devono essere accurati
- soluzioni analitiche vs simulazione: Analitico è più precisio la sim è più flessibile
____
response time
throuput: quante richieste soddisfatte in unità di tempo
error rate
Vogliamo rimanere prossimi alla fine della zona verde.
Il workload può aumentare (rischio di overload), errori possono saltare fuori, dobbiamo fare del buon capacity planning ed è un compito complesso e costoso potenzialmente.
Quali sono le tipologie di Testing?
Functional: se si comporta come aspettato (Unit testing, vediamo i risultati attesi e se ci sono bugs)
Activity: come funziona in condizioni normali, al di fuori dello unit testing, fatto dallo user
Endurance: sistema busy, per what if scenarios per capacity planning
Stress: sistema al limite, creiamo failures, cerchiamo i bottleneck e se c’è presenza di trashing
Benchmarking: sistema sotto load standardizzati per comparare con altri scenari etc…
Cosa sono i benchmark?
Quali sono i tipi?
Quali sono i possibili abusi?
Quali sono gli standard?
Abbiamo i toy benchmark per scenari circoscritti facili da usare ma non molto rappresentativi, come ad esempio, quick sort, problema delle otto regine etc… (e sti cazzi?)
Real benchmark: usiamo software dedicati per testare le performance del sistema (es. ray tracing, compiling kernel linux) ha problemi di porting e di ottimizzazione (es. driver gpu assenti e viene usata la cpu) se usiamo più software come li pesiamo.
Benchmark Sintetici: prendono operazioni comuni dei software, tipicamente limitato dall’architettura HW. Si focalizzano su un aspetto, es. dhrystone per operazini integer e whetstone per floating point
Benchmark reali
Considero le applicazioni oltre agli algoritmi (non fa solo quicksorts) ma lavora su problemi reali (no compiling kernel linuz)
_____
Alcuni casi abbiamo architettura HW ottimizzati per il benchmarking. es. PowerPC ha un istruzione hw per operazioni multiply and sum dei vettori, per il calcolo matriciale fatto da Whetstone.
Alcuni benchmark modificano il source code…
In alcuni casi abbiamo l’ottimizzazione dei compiler, i benchmark sono in formato binario (pre-compiled).
I bench homebrew non sono molto affidabili che funziona su diverse feature in certi scenari. Se vengono mostrati solo alcuni subset di benchmarks è sospetto.
Certe curve vengono croppate dove magari il mio benchmark comincia a avere un tendenza esponenziale su carichi alti. (pagare il doppio per 10% di velocità in piu o 50% per il doppio della velocità?) Piccoli cambi si notano di più a carichi pesanti.
Ogni cosa deve essere spiegata in modo chiaro e motivato.
___
Ci sono delle organizzazioni che modellano e standarizzano i benchmark come SPEC e TPC.
SPEC Web: benchmark che cerca di creare workload per sito web generale, usa un workload rapresentativo basato su logs. Definisce un controller, tanti client e un server
SPEC-cloud: per IaaS nel contesto di scalabilità ed elasticità.
Quali sono i contributi del response time in un server multi tier? Che cos’è il node model?
Che cos’è il network model?
Complex model?
Network, front end, middle tier node, back end node
Ogni nodo: CPU time + storage time + communication LAN
Il node model è composto da CPU, LAN e Storage
(rete, disco e CPU)
____
E’ un modello detto di Queeing che ha un traffico di pacchetti in input, una coda dove i pacchetti aspettano per essere serviti, server e in output le richieste processate.
Queue -> CPU con core in parallelo -> storage -> LAN -> output
___
Front end (parallelo) -> Middle tier (parallelo) -> back end (parallelo) -> Network (bottleneck)
ognuno ha una coda
Formalizzazione del problema di Modeling, quali sono i contributi del Workload?
Quali sono le metriche di performance? Che cosa sono i jobs?
In cosa consiste la legge dell’utilizzazione?
Abbiamo 1 nodo con CPU,LAN e storage e 1 server
Workload:
- Si service time medio alla risorsi i-esima (1/mu)
- Wi tempo di attesa i-esima fila
- Lambda i arrival rate alla fila i-esima
____
Metriche di performance:
- Ri response time avg i queue
- Xi troughput queue i
- X0 overall system troughput
___
Number of jobs at a resource
- Niw richieste in waiting per la risorsa i
- Nis numero di richiesto servite
- Ni numero di richieste alla risorsa i
______
La legge di Little considera un periodo di osservazione tau, e abbiamo il tempo di busy nel periodo Bi e Ci che è il numero di richieste completate nel periodo.
La legge dice che
- l’utilizzazione Ui = Bi/tau.
- Xi= Ci/tau
- Ui = Si/m * Xi (dove m è il numero di server)
legge di Little
modelli open loop vs closed loop
Abbiamo un sistema che è una Black Box
- N richieste entranti
- X richieste uscenti throughput
- R time spent within the system
N=X*R
Se lo applichiamo al nostro problema
Niw = Xi * Wi
Nis = Xi * Si
Ni = Xi * Ri
______
Open loop: potenzialmente utenti infiniti, richieste entrano ed escono dal sistema
Closed loop: utenti finiti. le richieste ciclicano e think time degli users
con la legge di Little, closed loop formulation (pop M, think time Z)
R+Z = M/X
Cosa sono i modelli analitici?
In cosa consiste il processo di Poisson? Come calcoliamo il tempo di risposta?
Come calcoliamo il tempo il tempo medio di response e waiting?
Nel modello analitico abbiamo i job che arrivano e quelli processati che sono entrambi processi stocastici.
arrival/process/servers/queuelen/num proces (inf.)
M -> poisson
G -> generic
D -> Deterministic
Ek -> Erlang (multi stadio con tanti server in cascata)
___
Processo di Poisson possono essere descritto come una catena di Markov:
- arrival rate lambda
- leave rate mu
- utilizzazione ro=lambda/mu
- probabilità di essere in un stato k: Pk=(1-ρ)ρK
Mano a mano che arrivano oggetti passo a uno stato, e torno indietro ogni volta che lo servo.
Tresp = 1/(μ - λ)
___
Usiamo la formula di Pollaczek-Kichin (M/G/1) per sapere il tempo di attesa in coda e quello di risposta.
coefficiente di variazione Cv^2
Come classifichiamo le failures?
Quali sono le metriche? Quali sono le classi di avalailability?
Permanent
Recoverable
Transient: sparisce dopo un po’
Intermittent
Funzionale: Si guasta una funzione che funziona come non dovrebbe
Di performance: SLA Violations, sistema funziona ma non nelle prestazioni desiderate
Totale: si canna tutto, anche se si schianta una componente critica
Paraziale: solo un certo sottosistema
____
MTTF
MTTR
MTBF (Meantime Between Faults) = MTTF + MTTR
Availability = MTTF/MTBF
reliability tau= prob che un sistema sia available su un certo periodo, se allunghiamo il periodio convergiamo alla availability
___
1 unmanaged (36 giorni di unavailable)
2 managed (3-6 giorni di unavailable)
3 well managed (526 minuti di unavailable)
4 fault tolerant (53 minuti di unavailable)
5 highly available (0.53minuti di unavailable)
6 very ha 0.053minuti di unavailable)
7 ultra available 0.0053minuti di unavailable)
In cosa consiste gestire una failure?
Come interagiscono i sistemi?
Teorema del CAP?
E’ un doppio compito:
Detection: devo rilevarlo subito (prima dei clienti)
- preventiva: facciamo dei test preventivi
- concorrente
Recovery: ripristinare lo stato di funzionamento
- error handling(dipendeMTTR): rollback allo stato corretto, rollforward(salto allo stato finale), compensazione con sistemi idle
- fault handling: diagnosis (post mortem analysis), isolation, reconfiguration, re-intialization
______
Abbiamo n subsystems che interagiscono in diversi modi
Serie : lampadine di natale
R(reliability)=produttoria[i] ri
parallelo: se un elemento s’interrompe ho solo un degrado
R = 1 - prod(1-ri)
___
Possiamo solo avere 2 su 3
Consistency
Partition Tolerance: funziona anche se ho problematiche durante lo scambio di messaggi (abbiamo 2 sistemi)
Availiability
Workload forecasting qual’è il processo e a cosa serve?
Quali sono i metodi per misurare l’errore?
Come vediamo la predicibilità di una serie?
- Definiamo cosa vogliamo predire
- Selezioniamo la fonte delle info
- Aggreghiamo i dati
- Costruiamo modelli
- Forecast e validation
Vogliamo predirre il workload, e ci sono vari parametri come il session arrrival rate, richieste per session, think time, workload mix, response size.
Magari abbiamo tante richieste ma chiede solo l’homepage.
Dobbiamo vedere se ci serve davvero un modello complesso e su quali dati lavoro.
____
I dati possono filtrarli, magari un’analisi di fourier per dei pattern periodici.
_____
Misure d’errore:
Errore medio sum (yi-fi)/n
Errore quadratico medio sum (yi-fi)^2/n
Summa degli square error sum (yi-fi)^2
Funzioni d’interpolazione (comune se voglio intercettare dei trend): Y=a+bX
Minimize square error
___
Autocorrelazione: correlazione di una var con se stessa nel tempo. es. vediamo la correlazione tra X(T) e X(T-lag) come funzione di lag.
Slow autocorrelation decay: prevedibile
Fast decay: serie altamente irregolare
Controlliamo se abbiamo dei picchi.
Cosa sono le simulazioni? Quali sono i loro obbiettivi?
Tipi di simulazione?
Quali sono i vantaggi dei simulatori? e svantaggi?
Come funziona un simulatore discreto?
La simulazione consiste nel definire un modello astratto del sistema e testare il suo comportamento in diverse situazioni. Tipicamente è semplificato, ma il livello di semplificazione dipende dall’obbiettivo della sim….
____
- Statico o Dinamico (se considero il tempo)
- Deterministici o Stocastici (il più comune)
- Tempo discrete a eventi o Tempo continue (non possiamo dividere il tempo a eventi)
____
Ci permettono di gestire sistemi complessi con var random, o che hanno dificoltà di trovare un modello analitico, analizzare diversi scenari e più facili da controllare rispetto a un prototipo.
___
Sono solo una stima e sono buoni quanto il modello che implementano.
____
Un simulatore discreto ha uno stato con clock, delle routines che sono funzioni invocate al momento giusto inizializzazione, timing (selezione dell’evento) e event management. C’è anche una funzione main per lo startup e shutdown
Quali sono gli step per una buona simulazione?
1) Formuliamo il problema, definendo l’obbiettivo, le KPI da misurare, gli scenari e le domande da rispondere.
2) Definiamo un modello, collezzionando i dati, documentando le assunzioni del modello, il livello di dettaglio
3) Fare validation del modello, confrontandosi con esperti
4) SW development
5) Simulator validation:
- confrontare con dati o modello teorico
- fare una sensitivity analysis rispetto ai parametri
6) Gli esperimenti:
- dobbiamo definire la lunghezza della run
- numero delle run
- c’è un transitiorio da evitare durante l’accensione
7) Scriviamo il report che presenta dati, le decisioni di management, assunzioni e limiti.
Quali sono i pitfalls comuni?
Perchè fare esperimenti ripetuti?
Quali sono gli effetti di una varianza bassa o alta?
Livello di dettaglio errato (troppo o poco), modello sbagliato (input, KPI…), analisi di statistica errata.
____
Ogni esperimento ha un seed RNG diverso e sono statisticamente indipendenti. Bisogna fare esperimenti con varianza, media e e intervallo di confidenza.
____
bassa: picchi alti e sottili
alta: picchi bassi e larghi
Se non abbiamo intervalli di confidenza, abbiamo poco in mano, se è basso vuol dire che non ho modo di capire cosa sta succedendo. In esame chiede un KPI (nelle slide)
u + σ -> 68% confidenza
u + 3σ -> 99% confidenza
Qual’è il processo di creazione dei modelli?
Quali sono le tecniche di verification?
- Validation: dobbiamo verificare che il modello è implementato bene, cioè rispecchia il sistema. Non sempre riusciamo a descrivere tutto, a volte conviene andare a blocchi.
- Verification: Implentazione del sw
- Stabilire credibilità: le info sono accettate da esperiti
__________
Evitiamo soluzioni raffinate e complesse perchè non sono scalabiliti e difficili da testare. testare su un uno spazio ampio di parametri e tracciare tutto.
Come sono le variabili in input? Quali sono i vantaggi del rng e quali gli svantaggi?
Come capiamo l’indipendenza dei samples?
Sono variabili random e sono descritti da una distribuzione exp (Gaussiana) o normale.
___
Se abbiamo il seed possiamo riprodurre l’esperimento, dobbiamo selezionare il seed però e può diventare un random like.
___
Vediamo l’indipendenza tra le variabili tramite valori o plots. Vediamo se ci sono autocorrelazioni.