SlideShare a Scribd company logo
1 of 21
Download to read offline
Meccanismi per la cooperazione e la prelazione
dell'I/O nel kernel Linux
Arianna Avanzini
Università di Modena e Reggio Emilia
Corso di Laurea in Informatica
15 dicembre 2011
Sommario
Cenni sull'I/O in Linux
Scheduler del disco gerarchici: CFQ e BFQ
Carenze di CFQ e BFQ
Analisi del problema riscontrato in BFQ: I/O interlacciato
Proposte di soluzione
Risultati sperimentali
Conclusioni e sviluppi futuri
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Sottosistema di I/O di Linux
Obiettivi
Indipendenza dal dispositivo
Uso eciente del dispositivo
sico
Servizio equo alle diverse
applicazioni in competizione
Operazioni
Fusione di richieste contigue
Riordino delle richieste
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Flusso di una richiesta: l'applicazione
L'applicazione richiede una
lettura da le
Invocazione della funzione
read()
read() invoca la chiamata
di sistema sys_read()
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
data.c
read()
sys read()
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Flusso di una richiesta: Virtual File System
Individua i metadati del le a
partire dal percorso
In caso di lettura, verica se
il dato è già presente in
memoria
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
Pagine
PaginePagine
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Flusso di una richiesta: Cache delle pagine
La cache delle pagine ritorna
l'eventuale blocco già letto
Non è il nostro caso . . .
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
Pagine
PaginePagine
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Flusso di una richiesta: Mapping layer
Nel caso in cui il dato non sia
presente in memoria:
si individuano i blocchi di
disco corrispondenti
si mappano i blocchi in
pagine vuote appena create
si programma
l'aggiornamento delle
pagine
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
...
Blocchi
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Flusso di una richiesta: Block layer
Astrazione di un dispositivo
a blocchi
Prepara le richieste di
caricamento dei blocchi
Traduce tali richieste in
richieste di caricamento di
settori del disco
Fornisce le richieste di
caricamento dei settori allo
scheduler del disco
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
Settori
del disco
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Flusso di una richiesta: Scheduler del disco
Funzioni:
Decide l'ordine eettivo di
servizio delle richieste
Una coda delle richieste per
ciascuna applicazione
Obiettivi (contrastanti):
alto tasso di servizio per
applicazioni batch,
sequenziali, sincrone
(→ attesa in anticipazione di
richieste sequenziali)
bassa latenza per
applicazioni interattive
equità di servizio
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
Settori
del disco
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Flusso di una richiesta: Gestore del disco
Preleva le richieste dallo
scheduler
Programma l'accesso sico
al dispositivo
L'operazione di I/O è
eseguita in modo asincrono
(DMA, interruzioni)
Virtual File System
Mapping layer
Block Layer
Gestore del disco
Disco
Cache delle pagine
Processo
Scheduler del disco
User
Kernel
Settori
del disco
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Class Fair Queuing
Scheduler di default
di Linux
Scelta esterna
dell'applicazione:
Round Robin basato
su priorità (125ms)
Ordinamento
interno delle
richieste: C-LOOK
Favorisce il
throughput a scapito
della latenza
Opera nel dominio del
tempo
.
.
.
algoritmo
Round Robin
selezione
applicazione
attiva
deselezione
applicazione
attiva
.
.
.
controllo
esaurimento
del quanto
di tempo o
delle richieste
Richieste
Appl. 1
Richieste
Appl. 2
CFQ Scheduler
Richieste
Appl. N
Coda C-LOOK
Coda C-LOOK
Coda C-LOOK
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Budget Fair Queuing
Scelta esterna
dell'applicazione:
B-WF
2Q+
Ordinamento
interno delle
richieste: C-LOOK
Favorisce la latenza a
scapito del
throughput
Opera nel dominio dei
settori
.
.
.
algoritmo
di scheduling
B-WF2Q+
selezione
applicazione
attiva
deselezione
applicazione
attiva
.
.
.
controllo
esaurimento
budget o
richieste
Richieste
Appl. 1
Richieste
Appl. 2
Richieste
Appl. N
BFQ Scheduler
Calcolo del nuovo
budget
C-LOOK
C-LOOK
Calcolo del nuovo
budget
C-LOOK
Calcolo del nuovo
budget
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
I problemi dei due scheduler
CFQ
Carico di fondo sequenziale
(copia di le, le system
check)
Viene fatta partire una
applicazione
→ la latenza di servizio è
altissima (anche diversi
minuti)
BFQ
Una applicazione esegue
letture in modalità
interlacciata (QEMU,
dump, NFS, DBMS)
→ il throughput
dell'applicazione è basso
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Carico interlacciato
QEMU
I/O thread I/O thread ... I/O thread
...
...
Settore
Thread1 Thread2 Thread3 ThreadN
Primo
thread
disponibile
...
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Il problema
BFQ scheduler
Coda I/O thread 1
Coda I/O thread 2
...
Lo scheduler ha appena
nito di servire una coda
Lo scheduler sta facendo
idling su tale coda
Un processo sta facendo
richieste per settori vicini
Lo scheduler non serve la
coda vicina
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
La soluzione: code cooperanti
BFQ scheduler
Coda I/O thread 1
Coda I/O thread 2
Coda condivisa
1
2
34
5678
Le code con richieste vicine
sono fuse in un'unica coda
condivisa
All'interno della coda
condivisa le richieste sono
riordinate per settore
Se la distanza media delle
richieste della coda condivisa
aumenta troppo, le due code
sono nuovamente divise
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Il problema: media iniziale dei posizionamenti alta
BFQ scheduler
Coda I/O thread 1
Coda I/O thread 2
...
Coda 2 è riutilizzata per fare
richieste da tutt'altra parte
del disco
La sua distanza media fra
richieste successive aumenta;
è marcata come seeky
A Coda 2 viene impedito di
cooperare con Coda 1 per
ridurre i posizionamenti della
testina
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Il problema: fusioni e divisioni frequenti
BFQ scheduler
BFQ scheduler
Coda I/O thread 1
Coda I/O thread 2
Coda condivisa
Coda I/O thread 1
Coda I/O thread 2
La distanza tra le zone di
competenza dei due thread
di I/O è altamente uttuante
Coda 2 può fare richieste
lontane rispetto a quelle di
Coda 1
Le due code si fondono e
dividono spesso
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
La soluzione: prelazione di code
BFQ scheduler
BFQ scheduler
Coda I/O thread 1
Coda I/O thread 2
Coda I/O thread 1
Coda I/O thread 2
Agisce ad ogni accodamento
di richiesta
Se l'immediato servizio della
coda interessata è
vantaggioso in termini di
throughput aggregato, le
assegna subito la risorsa
Consente di individuare un
cooperatore il prima
possibile, anche in caso di
media di posizionamento alta
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Latenza
0
5
10
15
20
base coop preempt preempt-lat
Tempodirisposta[s]
Versione di BFQ
Partenza di konsole con 10 lettori sequenziali
1.37 1.67
5.79
1.50
Deviazione standard
Tempo di risposta medio
Le modiche
eettuate
favoriscono il
throughput
Inevitabili
ripercussioni
sulla latenza
Una parziale
soluzione è già
stata
implementata
Arianna Avanzini Cooperazione e prelazione nel kernel Linux
Conclusioni e sviluppi futuri
Conclusioni
I meccanismi di cooperazione e prelazione tra code consentono
a BFQ un throughput no a 4 volte più alto in presenza di
scenari di carico interlacciati
L'incremento del tasso di servizio avviene al prezzo di un
ridotto aumento nel tempo di risposta di applicazioni in
partenza
Sviluppi futuri
Integrazione di euristiche nella logica di prelazione al ne di
preservare la latenza
Aumento dell'ecacia congiunta dei due meccanismi
Valutazione prestazionale di BFQ su dispositivi RAID, logici e
SSD
Arianna Avanzini Cooperazione e prelazione nel kernel Linux

More Related Content

Viewers also liked

Integrating Linux and the real-time ERIKA OS through the Xen hypervisor
Integrating Linux and the real-time ERIKA OS through the Xen hypervisorIntegrating Linux and the real-time ERIKA OS through the Xen hypervisor
Integrating Linux and the real-time ERIKA OS through the Xen hypervisorArianna Avanzini
 
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, OracleXPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, OracleThe Linux Foundation
 
Tomorrow Today - a Laser Science Newsletter, March 2014
Tomorrow Today - a Laser Science Newsletter, March 2014Tomorrow Today - a Laser Science Newsletter, March 2014
Tomorrow Today - a Laser Science Newsletter, March 2014Laser Science
 
היוזמה לחיזוק הדרום
היוזמה לחיזוק הדרוםהיוזמה לחיזוק הדרום
היוזמה לחיזוק הדרוםElli Gershenkroin
 
Laser Science Services (I) Pvt. Ltd
Laser Science Services (I) Pvt. LtdLaser Science Services (I) Pvt. Ltd
Laser Science Services (I) Pvt. LtdLaser Science
 
Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013
Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013
Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013Laser Science
 
французский рекламный плакат
французский рекламный плакатфранцузский рекламный плакат
французский рекламный плакатЮлия Кошарка
 
Llegim en parelles blog
Llegim en parelles blogLlegim en parelles blog
Llegim en parelles blogmeritxellserra
 
происхождение названий известных брендов
происхождение названий известных брендовпроисхождение названий известных брендов
происхождение названий известных брендовЮлия Кошарка
 
мифы и легенды брендов
мифы и легенды брендовмифы и легенды брендов
мифы и легенды брендовЮлия Кошарка
 
Cartells de la castanyada 2012
Cartells de  la castanyada 2012Cartells de  la castanyada 2012
Cartells de la castanyada 2012meritxellserra
 
Известные ученые в области рекламы и со
Известные ученые в области рекламы и соИзвестные ученые в области рекламы и со
Известные ученые в области рекламы и соЮлия Кошарка
 

Viewers also liked (18)

Integrating Linux and the real-time ERIKA OS through the Xen hypervisor
Integrating Linux and the real-time ERIKA OS through the Xen hypervisorIntegrating Linux and the real-time ERIKA OS through the Xen hypervisor
Integrating Linux and the real-time ERIKA OS through the Xen hypervisor
 
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, OracleXPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
 
Tutorial sebastian 2102
Tutorial sebastian 2102Tutorial sebastian 2102
Tutorial sebastian 2102
 
NAPZA
NAPZANAPZA
NAPZA
 
Tomorrow Today - a Laser Science Newsletter, March 2014
Tomorrow Today - a Laser Science Newsletter, March 2014Tomorrow Today - a Laser Science Newsletter, March 2014
Tomorrow Today - a Laser Science Newsletter, March 2014
 
היוזמה לחיזוק הדרום
היוזמה לחיזוק הדרוםהיוזמה לחיזוק הדרום
היוזמה לחיזוק הדרום
 
Vikings
VikingsVikings
Vikings
 
Tutorial sebastian 2102
Tutorial sebastian 2102Tutorial sebastian 2102
Tutorial sebastian 2102
 
Que es un computador
Que es un computadorQue es un computador
Que es un computador
 
Laser Science Services (I) Pvt. Ltd
Laser Science Services (I) Pvt. LtdLaser Science Services (I) Pvt. Ltd
Laser Science Services (I) Pvt. Ltd
 
Oral report 80 ies
Oral report 80 iesOral report 80 ies
Oral report 80 ies
 
Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013
Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013
Tomorrow Today - A Laser Science Newsletter (2nd issue) - May 2013
 
французский рекламный плакат
французский рекламный плакатфранцузский рекламный плакат
французский рекламный плакат
 
Llegim en parelles blog
Llegim en parelles blogLlegim en parelles blog
Llegim en parelles blog
 
происхождение названий известных брендов
происхождение названий известных брендовпроисхождение названий известных брендов
происхождение названий известных брендов
 
мифы и легенды брендов
мифы и легенды брендовмифы и легенды брендов
мифы и легенды брендов
 
Cartells de la castanyada 2012
Cartells de  la castanyada 2012Cartells de  la castanyada 2012
Cartells de la castanyada 2012
 
Известные ученые в области рекламы и со
Известные ученые в области рекламы и соИзвестные ученые в области рекламы и со
Известные ученые в области рекламы и со
 

Similar to Meccanismi per la cooperazione e la prelazione dell'I/O nel kernel Linux

ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...Marco Cavallini
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggeraRoberto Polli
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceNaLUG
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTTProtocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTTStefano Valle
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspLaura Camellini
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...LeonardoIurada
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSMorlini Gabriele
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS Imola Informatica
 
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.Raul Cafini
 
Un Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo ModemUn Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo ModemMarco Scaloni
 
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUG IT
 
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUG IT
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device DriversFabio Nisci
 

Similar to Meccanismi per la cooperazione e la prelazione dell'I/O nel kernel Linux (20)

ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
3rd 3DDRESD: BSS
3rd 3DDRESD: BSS3rd 3DDRESD: BSS
3rd 3DDRESD: BSS
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open Source
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTTProtocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
Protocol Rollercoaster: da HTTP a AMQP, passando per CoAP e MQTT
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcsp
 
Processi e Thread
Processi e ThreadProcessi e Thread
Processi e Thread
 
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...Summary of “The Case for Writing Network Drivers in High-Level Programming La...
Summary of “The Case for Writing Network Drivers in High-Level Programming La...
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
zeroconf
zeroconfzeroconf
zeroconf
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
Analisi ed implementazione di file system distribuiti in ambiente GNU/Linux.
 
Un Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo ModemUn Pinguino Nel Tuo Modem
Un Pinguino Nel Tuo Modem
 
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia View
 
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia View
 
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
 
Battaglia Navale
Battaglia NavaleBattaglia Navale
Battaglia Navale
 

Meccanismi per la cooperazione e la prelazione dell'I/O nel kernel Linux

  • 1. Meccanismi per la cooperazione e la prelazione dell'I/O nel kernel Linux Arianna Avanzini Università di Modena e Reggio Emilia Corso di Laurea in Informatica 15 dicembre 2011
  • 2. Sommario Cenni sull'I/O in Linux Scheduler del disco gerarchici: CFQ e BFQ Carenze di CFQ e BFQ Analisi del problema riscontrato in BFQ: I/O interlacciato Proposte di soluzione Risultati sperimentali Conclusioni e sviluppi futuri Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 3. Sottosistema di I/O di Linux Obiettivi Indipendenza dal dispositivo Uso eciente del dispositivo sico Servizio equo alle diverse applicazioni in competizione Operazioni Fusione di richieste contigue Riordino delle richieste Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 4. Flusso di una richiesta: l'applicazione L'applicazione richiede una lettura da le Invocazione della funzione read() read() invoca la chiamata di sistema sys_read() Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel data.c read() sys read() Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 5. Flusso di una richiesta: Virtual File System Individua i metadati del le a partire dal percorso In caso di lettura, verica se il dato è già presente in memoria Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel Pagine PaginePagine Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 6. Flusso di una richiesta: Cache delle pagine La cache delle pagine ritorna l'eventuale blocco già letto Non è il nostro caso . . . Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel Pagine PaginePagine Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 7. Flusso di una richiesta: Mapping layer Nel caso in cui il dato non sia presente in memoria: si individuano i blocchi di disco corrispondenti si mappano i blocchi in pagine vuote appena create si programma l'aggiornamento delle pagine Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel ... Blocchi Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 8. Flusso di una richiesta: Block layer Astrazione di un dispositivo a blocchi Prepara le richieste di caricamento dei blocchi Traduce tali richieste in richieste di caricamento di settori del disco Fornisce le richieste di caricamento dei settori allo scheduler del disco Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel Settori del disco Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 9. Flusso di una richiesta: Scheduler del disco Funzioni: Decide l'ordine eettivo di servizio delle richieste Una coda delle richieste per ciascuna applicazione Obiettivi (contrastanti): alto tasso di servizio per applicazioni batch, sequenziali, sincrone (→ attesa in anticipazione di richieste sequenziali) bassa latenza per applicazioni interattive equità di servizio Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel Settori del disco Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 10. Flusso di una richiesta: Gestore del disco Preleva le richieste dallo scheduler Programma l'accesso sico al dispositivo L'operazione di I/O è eseguita in modo asincrono (DMA, interruzioni) Virtual File System Mapping layer Block Layer Gestore del disco Disco Cache delle pagine Processo Scheduler del disco User Kernel Settori del disco Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 11. Class Fair Queuing Scheduler di default di Linux Scelta esterna dell'applicazione: Round Robin basato su priorità (125ms) Ordinamento interno delle richieste: C-LOOK Favorisce il throughput a scapito della latenza Opera nel dominio del tempo . . . algoritmo Round Robin selezione applicazione attiva deselezione applicazione attiva . . . controllo esaurimento del quanto di tempo o delle richieste Richieste Appl. 1 Richieste Appl. 2 CFQ Scheduler Richieste Appl. N Coda C-LOOK Coda C-LOOK Coda C-LOOK Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 12. Budget Fair Queuing Scelta esterna dell'applicazione: B-WF 2Q+ Ordinamento interno delle richieste: C-LOOK Favorisce la latenza a scapito del throughput Opera nel dominio dei settori . . . algoritmo di scheduling B-WF2Q+ selezione applicazione attiva deselezione applicazione attiva . . . controllo esaurimento budget o richieste Richieste Appl. 1 Richieste Appl. 2 Richieste Appl. N BFQ Scheduler Calcolo del nuovo budget C-LOOK C-LOOK Calcolo del nuovo budget C-LOOK Calcolo del nuovo budget Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 13. I problemi dei due scheduler CFQ Carico di fondo sequenziale (copia di le, le system check) Viene fatta partire una applicazione → la latenza di servizio è altissima (anche diversi minuti) BFQ Una applicazione esegue letture in modalità interlacciata (QEMU, dump, NFS, DBMS) → il throughput dell'applicazione è basso Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 14. Carico interlacciato QEMU I/O thread I/O thread ... I/O thread ... ... Settore Thread1 Thread2 Thread3 ThreadN Primo thread disponibile ... Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 15. Il problema BFQ scheduler Coda I/O thread 1 Coda I/O thread 2 ... Lo scheduler ha appena nito di servire una coda Lo scheduler sta facendo idling su tale coda Un processo sta facendo richieste per settori vicini Lo scheduler non serve la coda vicina Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 16. La soluzione: code cooperanti BFQ scheduler Coda I/O thread 1 Coda I/O thread 2 Coda condivisa 1 2 34 5678 Le code con richieste vicine sono fuse in un'unica coda condivisa All'interno della coda condivisa le richieste sono riordinate per settore Se la distanza media delle richieste della coda condivisa aumenta troppo, le due code sono nuovamente divise Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 17. Il problema: media iniziale dei posizionamenti alta BFQ scheduler Coda I/O thread 1 Coda I/O thread 2 ... Coda 2 è riutilizzata per fare richieste da tutt'altra parte del disco La sua distanza media fra richieste successive aumenta; è marcata come seeky A Coda 2 viene impedito di cooperare con Coda 1 per ridurre i posizionamenti della testina Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 18. Il problema: fusioni e divisioni frequenti BFQ scheduler BFQ scheduler Coda I/O thread 1 Coda I/O thread 2 Coda condivisa Coda I/O thread 1 Coda I/O thread 2 La distanza tra le zone di competenza dei due thread di I/O è altamente uttuante Coda 2 può fare richieste lontane rispetto a quelle di Coda 1 Le due code si fondono e dividono spesso Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 19. La soluzione: prelazione di code BFQ scheduler BFQ scheduler Coda I/O thread 1 Coda I/O thread 2 Coda I/O thread 1 Coda I/O thread 2 Agisce ad ogni accodamento di richiesta Se l'immediato servizio della coda interessata è vantaggioso in termini di throughput aggregato, le assegna subito la risorsa Consente di individuare un cooperatore il prima possibile, anche in caso di media di posizionamento alta Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 20. Latenza 0 5 10 15 20 base coop preempt preempt-lat Tempodirisposta[s] Versione di BFQ Partenza di konsole con 10 lettori sequenziali 1.37 1.67 5.79 1.50 Deviazione standard Tempo di risposta medio Le modiche eettuate favoriscono il throughput Inevitabili ripercussioni sulla latenza Una parziale soluzione è già stata implementata Arianna Avanzini Cooperazione e prelazione nel kernel Linux
  • 21. Conclusioni e sviluppi futuri Conclusioni I meccanismi di cooperazione e prelazione tra code consentono a BFQ un throughput no a 4 volte più alto in presenza di scenari di carico interlacciati L'incremento del tasso di servizio avviene al prezzo di un ridotto aumento nel tempo di risposta di applicazioni in partenza Sviluppi futuri Integrazione di euristiche nella logica di prelazione al ne di preservare la latenza Aumento dell'ecacia congiunta dei due meccanismi Valutazione prestazionale di BFQ su dispositivi RAID, logici e SSD Arianna Avanzini Cooperazione e prelazione nel kernel Linux