Racedetectie in Parallelle Programma’s door Gecontroleerde Heruitvoering Michiel Ronsse Promotoren: Prof. K. De Bosschere Prof. J. Van Campenhout Vakgroep.

Slides:



Advertisements
Verwante presentaties
Test computertermen: Deze test gaat over de vorige les. Je krijgt steeds een vraag te zien waarop je het juist antwoord moet aanklikken. Is je antwoord.
Advertisements

22:00 WinHealth 1.0 WinHealt is een medische programma. Het is vrij nieuw en komt binnenkort op de markt. Deze software met medewerking van een detectie.
Vincent Poté Nelis Vandermeiren Simen Akkermans Kevin De Neef
CIMSOLUTIONS B.V. CIMSOLUTIONS Automation for Industry & Business SIG Embedded “Proces Ellende” André Vink CDP real-time embedded 28 september 2005.
Performance management
Hoe werkt een rekenmachine?
Stijn Hoppenbrouwers Software Engineering les 1 Algemene inleiding en Requirements Engineering.
Hardware (1) SGDB Informatica.
Secure Distributed Computing Gregory Neven (3CW Pr.) Promotor: Prof. Dr. ir. Frank Piessens.
Hardware (1) NSG Informatica.
Jerry van den Heuvel Pim van der Lee
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur.
BESTURINGS SYSTEMEN Vincent Naessens.
Les1: eenvoudig computergebruik
Practica Computerlinguistiek Tekst en uitleg:
Over computers.
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Steven Van Acker. Transmeta Crusoe - Steven Van Acker - Mei Overzicht  Inleiding  Het Idee  De Technologie  CodeMorphing  LongRun  NorthBridge.
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.
In de juiste volgorde Initiatief Bijstellen Analyse Evaluatie
Grote apparatuur die we helaas niet kunnen tentoonstellen.
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 3 Basisprogrammatuur. 2 Inhoud De Vertaler De Voorvertaler De Lader De Binder De Vertolker Het Speurprogramma Het Opstarten van de Computer.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Visibility-based Probabilistic Roadmaps for Motion Planning Tim Schlechter 13 februari 2003.
Experimenteel Design Prof. Dr. S. Van Dongen
1 Inleiding tot de besturingssystemen Prof. K. De Bosschere Vakgroep ELIS Universiteit Gent.
Inhoud Synthese van sequentiële netwerken
Chapter 9. Understanding Multivariate Techniques
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(1): Instructietypen (1)
Geheugenbeheer ICT Infrastructuren hoofdstukken 7 en 8.1.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom A Harvard Machine Calculator Calculator  Computer.
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
Inleidend probleem Data structuur (hiërarchie van classes)
Evelyne Louis Cluster oncologie
Hoe werkt een rekenmachine?
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
1 ICT Infrastructuren 19 november 2007 David N. Jansen.
Operating Systems Informatica.
Object georiënteerd programmeren in Alice
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (1)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Inleiding InstructieSetArchitectuur (ISA) datatypen.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)
MICROCONTROLLERS.
Processor Hart van de computer.
Concurrency en Deadlock ICT Infrastructuren David N. Jansen Stallings hoofdstukken 5 en 6.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 9(1): Virtual.
Inhoud college Lijnbalancering Comsoal Random Sequence Generation
De rommel van de programmeur Pieter van Ede. Handmatig geheugenbeheer Programmeur gooit zelf objecten weg Veel fouten mee gemaakt Geheugenlekken ‘Dangling.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
Neurale Netwerken Genetische Algorithmen
Basisfuncties Operating System.
20 mei Symposium Statistical Auditing Slide 1 Wat zegt de COS over steekproeven en data-analyse? Paul van Batenburg.
De Transmeta Crusoe processor Een VLIW CPU met x86 compatibiliteit.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Observeren Les 3.
WinHealth 1.0 WinHealth 1.0 WinHealt is een medisch programma. Het is vrij nieuw en komt binnenkort op de markt . Deze software is in staat om - met de.
Programmeren woensdag 4 oktober 2017.
Besturingssystemen Prof. K. De Bosschere Vakgroep ELIS
Observeren Les 2.
SQL Les February 2019.
Quantumcomputers en quantumcommunicatie
Besturingssysteem.
Observeren Les 2.
Stap drie bij projecten
Netwerken & Internet 1.
Observeren rapporteren
Transcript van de presentatie:

Racedetectie in Parallelle Programma’s door Gecontroleerde Heruitvoering Michiel Ronsse Promotoren: Prof. K. De Bosschere Prof. J. Van Campenhout Vakgroep Elektronica en Informatiesystemen

Inleiding

wielen stuur accu bougies stuurbout

Inleiding wielen stuur accu bougies stuurbout

Inleiding wielen stuur accu bougies stuurbout

Inleiding wielen stuur accu bougies stuurbout

Inleiding wielen stuur accu bougies stuurbout

Inleiding persoon1 persoon2 tijd Assemblage van eerste auto wielen stuur accu bougies stuurbout Assemblage van tweede auto persoon1 persoon2 wielen stuur accu bougies stuurbout race synchronisatie

Inleiding wielen stuur accu processor geheugen programmeur A  1 C  B+1 B  2C programma

Inhoud  Inleiding  Parallelle programma´s  Doelstelling  Gecontroleerde heruitvoering  Voorbeeld van dataracedetectie  Implementatie  Evaluatie  Verwant werk  Conclusie en eigen bijdragen

Inhoud  Inleiding  Parallelle programma´s  Doelstelling  Gecontroleerde heruitvoering  Voorbeeld van dataracedetectie  Implementatie  Evaluatie  Verwant werk  Conclusie en eigen bijdragen

Parallelle programma´s Proc1: A  1 C  B+1 B  2CProc2: B  2A B  B+C B  2A (2) B  B+C (9) B  2C(6) C  B+1(3) A1A1(1)

Parallelle programma´s A1A1 B  2A B  2C C  B+1 B  B+C Proc1: A  1 C  B+1 B  2CProc2: B  2A B  B+C (2) (9) (6) (3) (1) B  2C(6) (5) 

Parallelle programma´s: synchronisatie A1A1Proc1: A  1Proc2: B  2A S1S1 while (r==0){ r  S S  0 } S1S1 B  2A r  S (1) S0S0 S0S0 r  S (0)

Parallelle programma´s: synchronisatie A1A1Proc1: A  1Proc2: B=2A S1S1 B  2A while (r==0){ r  S S  0 } S1S1 B  2A r  S (1) S0S0 S0S0 r  S (0) V(S)

Parallelle programma´s: synchronisatie A1A1Proc1: A  1 Proc2: B  2A P(S) S1S1 B  2A P(S) V(S)

Parallelle programma´s: semafoorsynchronisatie V(S): vrijgeven P(S): passeren

Parallelle programma´s P(S) r  C r  r+1 C  r V(S) Proc1: P(S) r  C r  r+1 C  r V(S) Proc2: P(S) r  C r  r+1 C  r V(S) P(S) r  C r  r+1 C  r V(S)

Parallelle programma´s P(S) r  C r  r+1 C  r V(S) Proc1: P(S) r  C r  r+1 C  r V(S) Proc2: P(S) r  C r  r+1 C  r V(S) P(S) r  C r  r+1 C  r V(S)

Parallelle programma´s  Nood aan goede ontwikkelomgevingen met debugmogelijkheden  Normale debugmethode: cyclisch debuggen  Eis: programma-uitvoering moet herhaalbaar zijn  Probleem: niet-determinisme bij parallelle programma´s  Oplossing: gecontroleerde heruitvoering

Doelstellingen  Cyclisch debuggen van een niet- verstoorde uitvoering >overhead bij opname moet laag zijn >tijdens heruitvoering intrusieve analyse  Races opsporen

Inhoud  Inleiding  Parallelle programma´s  Doelstelling  Gecontroleerde heruitvoering  Voorbeeld van dataracedetectie  Implementatie  Evaluatie  Verwant werk  Conclusie en eigen bijdragen

Oorzaken van niet-determinisme  Alle programma´s: >Invoer: van toetsenbord, netwerk, sensoren,... >Systeemoproepen: date(), random(),...  Parallelle programma´s: >Volgorde van geheugenoperaties 

Niet-determinisme door geheugentoegangen  Ongewild niet- determinisme  Gewild niet- determinisme dataracessynchronisatieraces P(S) r  C r  r+1 C  r V(S) P(S) r  C r  r+1 C  r V(S) P(S) r  C r  r+1 C  r V(S) P(S) r  C r  r+1 C  r V(S) A1A1 B  2A B  2C C  B+1 B  B+C A1A1 B  2A B  2C C  B+1 B  B+C

Gecontroleerde heruitvoering  Gecontroleerde heruitvoering >opname: niet intrusief >heruitvoering: getrouw  Geheugenoperaties: leesoperaties moeten terug dezelfde waarde lezen  Oplossing: dring terug dezelfde volgorde van alle geheugenoperaties op

Proc1: P(S) r  C r  r+1 C  r V(S) Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread Proc1: P(S) r  C r  r+1 C  r V(S) P(S)= while (r==0){ r  S S  0 }

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread Proc1: P(S) r  C r  r+1 C  r V(S)Proc2: P(S) r  C r  r+1 C  r V(S)

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread P(S) r  C r  r+1 C  r V(S) P(S) r  C r  r+1 C  r V(S)

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) V(S)

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) V(S)

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) S0S0 r’  S (0) r’  S (1) S0S0 S1S1

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr S0S0 r’  S (0) r’  S (1) S0S0 S1S1 observatieniveau

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr S0S0 r’  S (0) r’  S (1) S0S0 S1S1 observatie

Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) V(S) observatie

Gecontroleerde heruitvoering op twee niveaus  Enkel synchronisatieraces heruitvoeren  Werkt enkel indien geen dataraces optreden  Daarom: testen op dataraces tijdens heruitvoering  Voordelen: >lage overhead >onderscheid tussen data- en synchronisatieraces >dataraces kunnen verwijderd worden m.b.v. cyclisch debuggen

 Volgorde synchronisatie-operaties  ROLT-methode: elke synchronisatie- operatie krijgt een scalaire klokwaarde Opname: bepalen volgorde  Eenvoudig, weinig overhead (tijd, ruimte)

Dataracedetectie: heruitvoering  Heruitvoeren synchronisatieraces

Dataracedetectie: verzamelen van geheugenoperaties  Heruitvoeren synchronisatieraces  Testen of er dataraces zijn >alle lees- en schrijfoperaties onderscheppen per segment: verzamelingen L en S

Dataracedetectie: verzamelen van geheugenoperaties  Heruitvoeren synchronisatieraces  Testen of er dataraces zijn >alle lees- en schrijfoperaties onderscheppen per segment: verzamelingen L en S P(S) a=C a=a+1 C=a V(S) L={C} S={C}

Dataracedetectie: parallelle segmenten  Heruitvoeren synchronisatieraces  Testen of er dataraces zijn >alle lees- en schrijfoperaties onderscheppen per segment: verzamelingen L en S >verzamelingen van parallelle segmenten vergelijken

Dataracedetectie: parallelle segmenten  Heruitvoeren synchronisatieraces  Testen of er dataraces zijn >alle lees- en schrijfoperaties onderscheppen per segment: verzamelingen L en S >verzamelingen van parallelle segmenten vergelijken

Dataracedetectie: parallelle segmenten  Heruitvoeren synchronisatieraces  Testen of er dataraces zijn >alle lees- en schrijfoperaties onderscheppen per segment: verzamelingen L en S >verzamelingen van parallelle segmenten vergelijken V(S) P(S)

Dataracedetectie: vergelijken van parallelle segmenten  Heruitvoeren synchronisatieraces  Testen of er dataraces zijn >alle lees- en schrijfoperaties onderscheppen per segment: verzamelingen L en S >verzamelingen van parallelle segmenten vergelijken S(s 2 ) ( L(s 2 )  S(s 2 ) )  S(s 1 ) ( L(s 1 )  S(s 1 ) )  S(s 2 )

B2B2 Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 V(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 V(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld 

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld  

B2B2 A1A1 C4C4P(S1) V(S1) C  A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld

Verwijderen van oude segmenten tijd Aantal segmenten Normaal Logische matrixklok Gespiekte matrixklok

Inhoud  Inleiding  Parallelle programma´s  Doelstelling  Gecontroleerde heruitvoering  Voorbeeld van dataracedetectie  Implementatie  Evaluatie  Verwant werk  Conclusie en eigen bijdragen

Implementatie  Detectie parallelle segmenten: vectorklokken  Detectie oude segmenten: gespiekte matrixklokken  Detectie synchronisatie- en geheugenoperaties: JiTI (Just in Time Instrumentation)

Geheugen

LD [100],r1 JMP LD [4],r0 ADD r0,r1 SUB r1,r0 Geheugen

LD [100],r1 JMP LD [4],r0 ADD r0,r1 SUB r1,r0 Normale programma-uitvoering ADD r0,r1 LD [100],r1 JMP +100 SUB r1,r

LD [100],r1 JMP LD [4],r0 ADD r0,r1 SUB r1,r0 Instrumentatie

LD [100],r1 JMP LD [4],r0 ADD r0,r1 SUB r1,r0 JMP ADD r0,r1 SUB r1,r instrum. LD [4],r0 LD [100],r1 Instrumentatie: klassieke manier ADD r0,r1 instrum. LD [100],r1 JMP +100 instrum.

LD [100],r1 JMP LD [4],r0 ADD r0,r1 SUB r1,r0 Instrumentatie: JiTI LD [100],r1 instrum. JMP... JMP +100  +100     JMP... SUB r1,r0 ADD r0,r1 +  ADD r0,r1 JMP +100 SUB r1,r0 ADD r0,r1 JMP +100 SUB r1,r0 LD [4],r0LD [100],r1JMP...

LD [100],r1 JMP LD [4],r0 ADD r0,r1 SUB r1,r0 JMP... JMP +100  +100     JMP... SUB r1,r0 ADD r0,r1 Instrumentatie: JiTI LD [100],r1 instrum. JMP... ADD r0,r1 JMP... instrum. LD [100],r1 JMP... JMP +100 SUB r1,r

Evaluatie  Implementatie voor Solaris werd getest op een SUN-multiprocessor met 4 processoren  Evaluatie a.d.h.v. SPLASH-benchmark >numerieke applicaties >getest op 4 processoren

Opname >Overhead: gemiddeld 2,1% >Gemiddeld 748 bytes/s (2,5MB/h) of 2,3 bits/operatie

Heruitvoering zonder dataracedetectie >Vertraging: gemiddeld 1,7 

Heruitvoering met dataracedetectie  Vertraging: 8 à 80 (gemiddeld 30,6) >factor 11,3: detectie van geheugenoperaties >factor 1,7: heruitvoering >factor 1,6: vergelijken van parallelle segmenten  Kan automatisch gebeuren  Moet slechts éénmaal uitgevoerd worden per uitvoering

Inhoud  Inleiding  Parallelle programma´s  Doelstelling  Gecontroleerde heruitvoering  Voorbeeld van dataracedetectie  Implementatie  Evaluatie  Verwant werk  Conclusie en eigen bijdragen

Verwant werk  Savage et al (Eraser): >enkel voor mutexoperaties, detecteert anders valse dataraces >vertraging: factor 10 à 30  Perkovic & Keleher >CVM met mutex- en semafooroperaties >vertraging: factor 2 à 2,5  Beide: >detectie tijdens originele uitvoering >racende instructies kunnen niet bepaald worden

Conclusie  Gecontroleerde heruitvoering op twee niveaus heeft voordelen: >enkel synchronisatieraces heruitvoeren  efficiënte opname >automatische en intrusieve dataracedetectie is mogelijk

Belangrijkste eigen bijdragen  Concept van gecontroleerde heruitvoering op twee niveaus  Instrumentatietool: JiTI  Beperking van geheugenverbruik tijdens dataracedetectie