De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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

Verwante presentaties


Presentatie over: "Racedetectie in Parallelle Programma’s door Gecontroleerde Heruitvoering Michiel Ronsse Promotoren: Prof. K. De Bosschere Prof. J. Van Campenhout Vakgroep."— Transcript van de presentatie:

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

3

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) A1A1(1)

14 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) 

15 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)

16 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)

17 Parallelle programma´s: synchronisatie A1A1Proc1: A  1 Proc2: B  2A P(S) S1S1 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) 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

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 rCrC CrCr P(S) V(S)

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

32 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

33 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

34 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

35 Gecontroleerde heruitvoering: observatiepunten programma hardware kernel libc libthread rCrC CrCr 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 B2B2 Dataracedetectie: voorbeeld

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

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

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

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

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

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

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

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

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

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

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

57 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

58 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

59 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

60 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

61 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

62 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 

63 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  

64 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

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

83

84


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

Verwante presentaties


Ads door Google