SlideShare a Scribd company logo
1 of 17
Download to read offline
Tesi di Laurea
Triennale
Laureando:
Massimo Palmisano
Relatore:
Prof. Marco Tessarotto
Confronto delle prestazioni dell’
Algoritmo di Dijkstra su Sistema
Operativo Linux in modalità
utente e modalità kernel
Modalità Utente e
Modalità Kernel
• I processori moderni operano in due distinte
modalità
• Modalità utente
• Modalità kernel
• Implementazione dell’algoritmo di Dijkstra nelle due
modalità
Algoritmo di Dijkstra
• Trova il percorso minimo in un grafo orientato
avente pesi non negativi
• Implementazione nella sua versione “elementare”
• No multithreading
Linux e Linguaggio C
• Sistema Operativo Linux
• Open Source
• Conoscenza pregressa
• Linguaggio di programmazione C
• Conoscenza pregressa
• Kernel linux scritto in C
Lato Utente
• Implementazione modalità utente
• Scrittura di un unico programma
• Lavoro suddiviso in tre processi che interoperano tramite pipe:
• Processo 1: Lettura grafo
• Processo 2: Esecuzione Dijkstra
• Processo 3: Scrivi risultati
Modulo Kernel Linux
• Implementazione Modalità kernel
• Porzioni di codice che aumentano le funzionalità del kernel
• aggiunti a runtime
• no ricompilazione dell’intero kernel Linux
• no riavvio del sistema
• aumentano funzionalità del kernel Linux
Lettura grafo in kernel mode
• In kernel mode non si legge mai direttamente da file
• Scrittura di un programma utente
• Legge i dati e li passa al modulo kernel
• Interfaccia character device driver
Progettazione
Benchmark – I
• Grafo implementato in file di testo
• In formato leggibile dai programmi
• Tre grafi per eseguire i benchmark
• 1000 nodi
• 10000 nodi
• 100000 nodi
• Grafi completamente connessi
Progettazione Benchmark – II
• Benchmark eseguito su due macchine diverse
• Modulo Kernel compilato da GCC
• Programma Utente compilato da Clang e GCC
Prima Macchina – grafo 1.000 nodi
1
1,1
1,2
1,3
1,4
1,5
1,6
1,7
1,8
1,9
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
TempoEsecuzione(ms)
Numero Test
CPU Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz
Kernel Mode GCC User Mode GCC User Mode Clang
Prima Macchina – grafo 10.000 nodi
90
100
110
120
130
140
150
160
170
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
TempoEsecuzione(ms)
Numero Test
CPU Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz
Modulo Kernel User Space GCC User Space Clang
Prima Macchina – grafo 100.000 nodi
15000
15500
16000
16500
17000
17500
18000
18500
19000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
TempoEsecuzione(ms)
Numero Test
CPU Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz
Modulo Kernel Userspace GCC Userspace Clang
Seconda Macchina – grafo 1.000 nodi
7,5
8,5
9,5
10,5
11,5
12,5
13,5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
TempoEsecuzione(ms)
Numero Test
Raspberry PI 3 model B+
Kernel module Userspace GCC Userspace CLANG
Seconda Macchina – grafo 10.000 nodi
610
612
614
616
618
620
622
624
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
TempoEsecuzione(ms)
Numero Test
Raspberry PI 3 model B+
Kernel module Userspace GCC Userspace CLANG
Seconda Macchina – grafo 100.000 nodi
86000
87000
88000
89000
90000
91000
92000
93000
94000
95000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
TempoEsecuzione(ms)
Numero Test
Raspberry PI 3 model B+
Kernel module Userspace GCC Userspace CLANG
Conclusioni
• Nessun miglioramento in kernel mode
• Prestazioni dipendono da molti fattori
• Processore
• Condizioni interne della macchina (clock dinamico, temperatura)
• Compilatore utilizzato e livello di ottimizzazione del codice prodotto

More Related Content

What's hot (8)

Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcsp
 
Thesis Frascino Slide iT
Thesis Frascino Slide iTThesis Frascino Slide iT
Thesis Frascino Slide iT
 
Alcuni dei corsi ISICT
Alcuni dei corsi ISICT Alcuni dei corsi ISICT
Alcuni dei corsi ISICT
 
Pgtraining bdr
Pgtraining bdrPgtraining bdr
Pgtraining bdr
 
Socket python
Socket pythonSocket python
Socket python
 
Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberry
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
 

Similar to Presentazione - Algoritmo di Dijkstra

Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overviewpietrobr
 
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
 
Jvm performance Tuning
Jvm performance TuningJvm performance Tuning
Jvm performance TuningMarco Sabatini
 
Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...
Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...
Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...Codemotion
 
Thanatos - Parallel & Distributed Computing
Thanatos -  Parallel & Distributed ComputingThanatos -  Parallel & Distributed Computing
Thanatos - Parallel & Distributed ComputingIdriss Riouak
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su LinuxMajong DevJfu
 
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCLAngelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCLAngelo Impedovo
 
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
 
RGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 SintheraRGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 SintheraLuca Turco
 
[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDA
[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDA[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDA
[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDAkylanee
 
OpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCLOpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCLFrancesco Garofalo
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterPar-Tec S.p.A.
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNMatteo D'Amore
 

Similar to Presentazione - Algoritmo di Dijkstra (20)

Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overview
 
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...
 
Jvm performance Tuning
Jvm performance TuningJvm performance Tuning
Jvm performance Tuning
 
Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...
Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...
Kunos Simulazioni and Assetto Corsa, behind the scenes- Alessandro Piva, Fabr...
 
Thanatos - Parallel & Distributed Computing
Thanatos -  Parallel & Distributed ComputingThanatos -  Parallel & Distributed Computing
Thanatos - Parallel & Distributed Computing
 
Thanatos
ThanatosThanatos
Thanatos
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
 
Thread
ThreadThread
Thread
 
Thread
ThreadThread
Thread
 
Hadoop analyzerJR
Hadoop analyzerJRHadoop analyzerJR
Hadoop analyzerJR
 
Thesis Amicucci Slides IT
Thesis Amicucci Slides ITThesis Amicucci Slides IT
Thesis Amicucci Slides IT
 
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCLAngelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
Angelo Impedovo, Linux Day 2016, Programmazione Parallela in openCL
 
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
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
RGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 SintheraRGX Remote Graphics eXperience 1.1 Sinthera
RGX Remote Graphics eXperience 1.1 Sinthera
 
[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDA
[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDA[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDA
[SLIDE]Modellazione della dinamica di un liquido bifase mediante GPU CUDA
 
3DD 1e Reconfig
3DD 1e Reconfig3DD 1e Reconfig
3DD 1e Reconfig
 
OpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCLOpenCL - Introduzione al framework OpenCL
OpenCL - Introduzione al framework OpenCL
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDN
 

Presentazione - Algoritmo di Dijkstra

  • 1. Tesi di Laurea Triennale Laureando: Massimo Palmisano Relatore: Prof. Marco Tessarotto
  • 2. Confronto delle prestazioni dell’ Algoritmo di Dijkstra su Sistema Operativo Linux in modalità utente e modalità kernel
  • 3. Modalità Utente e Modalità Kernel • I processori moderni operano in due distinte modalità • Modalità utente • Modalità kernel • Implementazione dell’algoritmo di Dijkstra nelle due modalità
  • 4. Algoritmo di Dijkstra • Trova il percorso minimo in un grafo orientato avente pesi non negativi • Implementazione nella sua versione “elementare” • No multithreading
  • 5. Linux e Linguaggio C • Sistema Operativo Linux • Open Source • Conoscenza pregressa • Linguaggio di programmazione C • Conoscenza pregressa • Kernel linux scritto in C
  • 6. Lato Utente • Implementazione modalità utente • Scrittura di un unico programma • Lavoro suddiviso in tre processi che interoperano tramite pipe: • Processo 1: Lettura grafo • Processo 2: Esecuzione Dijkstra • Processo 3: Scrivi risultati
  • 7. Modulo Kernel Linux • Implementazione Modalità kernel • Porzioni di codice che aumentano le funzionalità del kernel • aggiunti a runtime • no ricompilazione dell’intero kernel Linux • no riavvio del sistema • aumentano funzionalità del kernel Linux
  • 8. Lettura grafo in kernel mode • In kernel mode non si legge mai direttamente da file • Scrittura di un programma utente • Legge i dati e li passa al modulo kernel • Interfaccia character device driver
  • 9. Progettazione Benchmark – I • Grafo implementato in file di testo • In formato leggibile dai programmi • Tre grafi per eseguire i benchmark • 1000 nodi • 10000 nodi • 100000 nodi • Grafi completamente connessi
  • 10. Progettazione Benchmark – II • Benchmark eseguito su due macchine diverse • Modulo Kernel compilato da GCC • Programma Utente compilato da Clang e GCC
  • 11. Prima Macchina – grafo 1.000 nodi 1 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1,9 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TempoEsecuzione(ms) Numero Test CPU Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz Kernel Mode GCC User Mode GCC User Mode Clang
  • 12. Prima Macchina – grafo 10.000 nodi 90 100 110 120 130 140 150 160 170 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TempoEsecuzione(ms) Numero Test CPU Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz Modulo Kernel User Space GCC User Space Clang
  • 13. Prima Macchina – grafo 100.000 nodi 15000 15500 16000 16500 17000 17500 18000 18500 19000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TempoEsecuzione(ms) Numero Test CPU Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz Modulo Kernel Userspace GCC Userspace Clang
  • 14. Seconda Macchina – grafo 1.000 nodi 7,5 8,5 9,5 10,5 11,5 12,5 13,5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TempoEsecuzione(ms) Numero Test Raspberry PI 3 model B+ Kernel module Userspace GCC Userspace CLANG
  • 15. Seconda Macchina – grafo 10.000 nodi 610 612 614 616 618 620 622 624 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TempoEsecuzione(ms) Numero Test Raspberry PI 3 model B+ Kernel module Userspace GCC Userspace CLANG
  • 16. Seconda Macchina – grafo 100.000 nodi 86000 87000 88000 89000 90000 91000 92000 93000 94000 95000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TempoEsecuzione(ms) Numero Test Raspberry PI 3 model B+ Kernel module Userspace GCC Userspace CLANG
  • 17. Conclusioni • Nessun miglioramento in kernel mode • Prestazioni dipendono da molti fattori • Processore • Condizioni interne della macchina (clock dinamico, temperatura) • Compilatore utilizzato e livello di ottimizzazione del codice prodotto