Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdGerrit Vermeiren Laatst gewijzigd meer dan 9 jaar geleden
1
Racedetectie in Parallelle Programma’s door Gecontroleerde Heruitvoering Michiel Ronsse Promotoren: Prof. K. De Bosschere Prof. J. Van Campenhout Vakgroep Elektronica en Informatiesystemen
2
Inleiding
4
wielen stuur accu bougies stuurbout
5
Inleiding wielen stuur accu bougies stuurbout
6
Inleiding wielen stuur accu bougies stuurbout
7
Inleiding wielen stuur accu bougies stuurbout
8
Inleiding wielen stuur accu bougies stuurbout
9
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
10
Inleiding wielen stuur accu processor geheugen programmeur A 1 C B+1 B 2C programma
11
Inhoud Inleiding Parallelle programma´s Doelstelling Gecontroleerde heruitvoering Voorbeeld van dataracedetectie Implementatie Evaluatie Verwant werk Conclusie en eigen bijdragen
12
Inhoud Inleiding Parallelle programma´s Doelstelling Gecontroleerde heruitvoering Voorbeeld van dataracedetectie Implementatie Evaluatie Verwant werk Conclusie en eigen bijdragen
13
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) A1A1(1)
14
Parallelle programma´s A1A1 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)
15
Parallelle programma´s: synchronisatie A1A1Proc1: A 1Proc2: B 2A S1S1 while (r==0){ r S S 0 } S1S1 B 2A r S (1) S0S0 S0S0 r S (0)
16
Parallelle programma´s: synchronisatie A1A1Proc1: A 1Proc2: B=2A S1S1 B 2A while (r==0){ r S S 0 } S1S1 B 2A r S (1) S0S0 S0S0 r S (0) V(S)
17
Parallelle programma´s: synchronisatie A1A1Proc1: A 1 Proc2: B 2A P(S) S1S1 B 2A P(S) V(S)
18
Parallelle programma´s: semafoorsynchronisatie V(S): vrijgeven P(S): passeren
19
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)
20
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)
21
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
22
Doelstellingen Cyclisch debuggen van een niet- verstoorde uitvoering >overhead bij opname moet laag zijn >tijdens heruitvoering intrusieve analyse Races opsporen
23
Inhoud Inleiding Parallelle programma´s Doelstelling Gecontroleerde heruitvoering Voorbeeld van dataracedetectie Implementatie Evaluatie Verwant werk Conclusie en eigen bijdragen
24
Oorzaken van niet-determinisme Alle programma´s: >Invoer: van toetsenbord, netwerk, sensoren,... >Systeemoproepen: date(), random(),... Parallelle programma´s: >Volgorde van geheugenoperaties
25
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) A1A1 B 2A B 2C C B+1 B B+C A1A1 B 2A B 2C C B+1 B B+C
26
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
27
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 }
28
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)
29
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)
30
Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) V(S)
31
Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) V(S)
32
Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) S0S0 r’ S (0) r’ S (1) S0S0 S1S1
33
Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr S0S0 r’ S (0) r’ S (1) S0S0 S1S1 observatieniveau
34
Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr S0S0 r’ S (0) r’ S (1) S0S0 S1S1 observatie
35
Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr P(S) V(S) observatie
36
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
37
Volgorde synchronisatie-operaties ROLT-methode: elke synchronisatie- operatie krijgt een scalaire klokwaarde Opname: bepalen volgorde 3 2 1 1 Eenvoudig, weinig overhead (tijd, ruimte)
38
Dataracedetectie: heruitvoering Heruitvoeren synchronisatieraces 3 2 1 1 3 2 1 1
39
Dataracedetectie: verzamelen van geheugenoperaties Heruitvoeren synchronisatieraces Testen of er dataraces zijn >alle lees- en schrijfoperaties onderscheppen per segment: verzamelingen L en S
40
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}
41
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
42
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
43
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) 1 24 31 3 2 3 2 4
44
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 )
45
B2B2 Dataracedetectie: voorbeeld
46
B2B2 A1A1 C4C4P(S1) Dataracedetectie: voorbeeld
47
B2B2 A1A1 C4C4P(S1) Dataracedetectie: voorbeeld
48
B2B2 A1A1 C4C4P(S1) V(S1) Dataracedetectie: voorbeeld
49
B2B2 A1A1 C4C4P(S1) V(S1) Dataracedetectie: voorbeeld
50
B2B2 A1A1 C4C4P(S1) V(S1) Dataracedetectie: voorbeeld
51
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 V(S2) Dataracedetectie: voorbeeld
52
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 V(S2) Dataracedetectie: voorbeeld
53
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld
54
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld
55
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld
56
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 V(S2) P(S2) Dataracedetectie: voorbeeld
57
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) Dataracedetectie: voorbeeld
58
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) Dataracedetectie: voorbeeld
59
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld
60
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld
61
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld
62
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld
63
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld
64
B2B2 A1A1 C4C4P(S1) V(S1) C A+B A3A3 P(S2) V(S3) V(S2) P(S3) Dataracedetectie: voorbeeld
65
Verwijderen van oude segmenten tijd Aantal segmenten Normaal Logische matrixklok Gespiekte matrixklok
66
Inhoud Inleiding Parallelle programma´s Doelstelling Gecontroleerde heruitvoering Voorbeeld van dataracedetectie Implementatie Evaluatie Verwant werk Conclusie en eigen bijdragen
67
Implementatie Detectie parallelle segmenten: vectorklokken Detectie oude segmenten: gespiekte matrixklokken Detectie synchronisatie- en geheugenoperaties: JiTI (Just in Time Instrumentation)
68
17298 913782 451789 871254 567231 100 1108 1008 1004 1000 Geheugen
69
LD [100],r1 JMP +100 100 1108 1008 1004 1000 LD [4],r0 ADD r0,r1 SUB r1,r0 Geheugen
70
LD [100],r1 JMP +100 100 1108 1008 1004 1000 LD [4],r0 ADD r0,r1 SUB r1,r0 Normale programma-uitvoering ADD r0,r1 LD [100],r1 JMP +100 SUB r1,r0 17298
71
LD [100],r1 JMP +100 100 1108 1008 1004 1000 LD [4],r0 ADD r0,r1 SUB r1,r0 Instrumentatie
72
LD [100],r1 JMP +100 100 1108 1008 1004 1000 LD [4],r0 ADD r0,r1 SUB r1,r0 JMP +100 100 1200 1008 1004ADD r0,r1 SUB r1,r0 1012 1016 instrum. LD [4],r0 LD [100],r1 Instrumentatie: klassieke manier ADD r0,r1 instrum. LD [100],r1 JMP +100 instrum.
73
LD [100],r1 JMP +100 100 1108 1008 1004 1000 LD [4],r0 ADD r0,r1 SUB r1,r0 Instrumentatie: JiTI LD [100],r1 instrum. JMP... JMP +100 +100 +1108 +1008 +1004 +1000 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...
74
LD [100],r1 JMP +100 100 1108 1008 1004 1000 LD [4],r0 ADD r0,r1 SUB r1,r0 JMP... JMP +100 +100 +1108 +1008 +1004 +1000 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,r0 17298
75
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
76
Opname >Overhead: gemiddeld 2,1% >Gemiddeld 748 bytes/s (2,5MB/h) of 2,3 bits/operatie
77
Heruitvoering zonder dataracedetectie >Vertraging: gemiddeld 1,7
78
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
79
Inhoud Inleiding Parallelle programma´s Doelstelling Gecontroleerde heruitvoering Voorbeeld van dataracedetectie Implementatie Evaluatie Verwant werk Conclusie en eigen bijdragen
80
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
81
Conclusie Gecontroleerde heruitvoering op twee niveaus heeft voordelen: >enkel synchronisatieraces heruitvoeren efficiënte opname >automatische en intrusieve dataracedetectie is mogelijk
82
Belangrijkste eigen bijdragen Concept van gecontroleerde heruitvoering op twee niveaus Instrumentatietool: JiTI Beperking van geheugenverbruik tijdens dataracedetectie
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.