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  Eenvoudig, weinig overhead (tijd, ruimte)

38 Dataracedetectie: heruitvoering  Heruitvoeren synchronisatieraces

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)

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 Geheugen

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

70 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

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

72 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.

73 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...

74 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

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