際際滷

際際滷Share a Scribd company logo
Communica)ebewuste	
 	
 
                 plaatsing	
 van	
 data	
 in	
 een	
 
               gedistribueerd	
 rekensysteem	
 
                                                                    Peter	
 Bertels	
 


Universiteit	
 Gent	
 	
 	
 	
 Vakgroep	
 Elektronica	
 en	
 Informa)esystemen	
 	
 	
 	
 Openbare	
 doctoraatsverdediging	
 	
 	
 	
 woensdag	
 19	
 mei	
 2010
Ons	
 spaarboekje	
 bij	
 de	
 bank	
 
communica)e	
 in	
 een	
 gedistribueerd	
 systeem	
 


                                          L	
 
           B	
 


                    G
Gedistribueerd	
 rekensysteem:	
 
vele	
 handen	
 maken	
 licht	
 werk	
 

                                   processor	
 
       processor	
                    geheugen	
 
         geheugen	
 

                                                  processor	
 
                    processor	
                      geheugen	
 
                        geheugen
Communica)e	
 op)maliseren:	
 
drie	
 stappen	
 op	
 weg	
 naar	
 meer	
 e鍖ci谷n)e	
 


  meten	
 is	
 weten	
 

           verdeling	
 van	
 het	
 werk	
 

                            plaatsing	
 van	
 data
Communica)e	
 tussen	
 de	
 methodes	
 
van	
 een	
 Java-足programma	
 


                  m1	
 
                                m2	
 
                                                  m3	
 

      m6	
 
                      m5	
 
                                         m4
Verdeling	
 van	
 interne	
 taken	
 over	
 processors	
 


                     m1	
 
                                     m2	
 
                                                       m3	
 

       m6	
 
                         m5	
 
                                              m4
Verdeling	
 van	
 interne	
 taken	
 over	
 processors	
 


                     m1	
 
                                     m2	
 
                                                       m3	
 

       m6	
 
                         m5	
 
                                              m4
Communica)epro鍖el	
 legt	
 de	
 inherente	
 
communica)e	
 in	
 een	
 programma	
 bloot	
 


                   m1	
 
                                 m2	
 
                                                   m3	
 

        m5	
 
                        m4	
 
                                          m3	
 

                 oproepgraaf        communica)e
Communica)epro鍖el	
 opbouwen	
 	
 
gaat	
 zeer	
 langzaam	
 en	
 vergt	
 veel	
 geheugen	
 
≒ Gemiddeld	
 voor	
 6	
 Java-足programmas:	
 
     #	
 geheugentoegangen:	
 877	
 miljoen	
 
     #	
 methode-足oproepen:	
 155	
 miljoen	
 
≒ Tergend	
 traag:	
 	
 
     Elke	
 lees/schrijf-足opera)e	
 moet	
 geteld	
 worden	
 
≒ Geheugenverslindend:	
 
     Per	
 Java-足object	
 moet	
 extra	
 data	
 bijgehouden	
 worden
Snelle,	
 nauwkeurige	
 me)ng	
 van	
 het	
 
communica)epro鍖el	
 door	
 reservoir	
 sampling	
 
≒ Scha]ng	
 van	
 het	
 communica)epro鍖el	
 
≒ Reservoir	
 sampling	
 gee_	
 een	
 willekeurige	
 selec)e	
 
   van	
 producent/consument-足paren	
 


                                                          )jd	
 
 reservoir:	
 N	
 monsters	
 


                                                          )jd
Communica)epro鍖el	
 wordt	
 	
 
veel	
 sneller	
 en	
 toch	
 nauwkeurig	
 opgebouwd	
 
≒ Pro鍖lering	
 gaat	
 15x	
 sneller	
 
≒ Rela)eve	
 fout	
 blij_	
 binnen	
 vastgestelde	
 grens	
 
≒ Reservoirgrooae	
 N	
 is	
 sta)s)sch	
 bepaald	
 
50%	
 




          rela)eve	
 fout	
 
   1000	
            10.000	
        100.000	
          1000.000	
 
                                        reservoirgrooae
Func)onele	
 par))onering	
 van	
 programmas	
 

            a	
 
                                    b	
 
                                                            c	
 


   d	
 
                    e	
                            f	
 


            g	
            h	
                                    oproepgraaf
                                            i	
 
                                                                    communica)e
Hardwareversnellers	
 kunnen	
 de	
 uitvoering	
 	
 
van	
 programmas	
 dras)sch	
 versnellen	
 



   DNA-足                                    communica)e	
 
 aligna)e	
      kern	
 


programma	
 
                             1	
 processor	
    met	
 co-足processor	
 
                                      uitvoerings)jd
Generieke	
 processor	
 vormt	
 samen	
 met	
 	
 
een	
 hardwareversneller	
 een	
 hybried	
 plahorm	
 

            java	
 
                                             vhdl	
 




         generieke	
 	
                hardware-足	
 
                               PCI	
 
         processor	
                    versneller
Java	
 virtuele	
 machine	
 is	
 een	
 abstrac)elaag	
 
tussen	
 het	
 programma	
 en	
 complexe	
 hardware	
 


                      programma	
 

                java	
 virtuele	
 machine	
 

         generieke	
             PCI	
 
                                            hardware-足	
 
         processor	
                       versneller
Virtuele	
 machine	
 stuurt	
 	
 
de	
 hardware-足versneller	
 aan	
 

         generieke	
             PCI	
 
                                                 hardware-足	
 	
 
         processor	
                            versneller	
 

                          hardware-足oproep	
 


                                            return
Communica)ebewuste	
 plaatsing	
 van	
 	
 
data	
 in	
 het	
 gedistribueerde	
 geheugen	
 

                                                      hardware-足	
 
       hoofdprocessor	
                              versneller	
 
                                        PCI	
 
         hoofdgeheugen	
                          lokaal	
 geheugen	
 


≒   Gedistribueerde	
 Java	
 heap	
 
≒   Elke	
 rekenknoop	
 kan	
 elk	
 object	
 lezen/schrijven	
 
≒   NUMA:	
 niet-足uniforme	
 toegangs)jden	
 
≒   Data	
 plaatsen	
 waar	
 ze	
 het	
 vaakst	
 gebruikt	
 wordt
Verschillende	
 technieken	
 klaren	
 de	
 klus	
 

   alles	
 in	
 hoofdgeheugen	
 

           lokale	
 dataplaatsing	
 

                    zelf-足lerende	
 aanpak	
 

                           theore)sch	
 op)mum
Zelf-足lerend	
 algoritme	
 probeert	
 de	
 op)male	
 
loca)e	
 te	
 vinden	
 )jdens	
 de	
 uitvoering	
 	
 
≒ Groepeer	
 objecten	
 per	
 crea)eplaats	
 
≒ Tel	
 geheugentoegangen	
 per	
 crea)eplaats	
 
≒ Nieuwe	
 objecten	
 plaatsen	
 volgens	
 de	
 tellers	
 

                                                           co-足processor	
 

                                                 397	
        12	
 
    Circle	
 c	
 =	
 new	
 Circle();	
    processor
Presta)es	
 over	
 alle	
 programmas	
 heen	
 

≒ Evalua)e	
 op	
 SPECjvm-足	
 en	
 DaCapo-足benchmarks	
 
≒ Vergelijking	
 van	
 frac)e	
 niet-足lokale	
 toegangen	
 

  47%	
  referen)e	
 (alles	
 in	
 hoofdgeheugen)	
 

  33%	
  lokale	
 dataplaatsing	
 

  26%	
  zelf-足lerende	
 aanpak	
 

  11%	
  op)mum
De	
 beste	
 techniek	
 voor	
 elk	
 programma	
 

                                                                                                 xml.valida
                                crypto.rsa	
                                     io	
                    )on	
 
             d   b	
                                                     mpegaud
        hsql
                                   chart	
                                             comp              antlr	
 
                                                                    pmd	
                   ress	
 

       zelf-足lerend	
                                           zelf-足lerend	
 	
 lokaal	
 
                  	
 
    lusearch                           luindex	
                 xalan	
       228ja
                                                                                       ck	
 
                                                                                                               227mtrt	
 
                                                                                                     xml.transf
 jython	
               202jess	
                                   crypto.aes                               orm	
 
                                          fop	
                                 	
 
                                                                                                derby	
 


                                         bloat	
                                                  209db	
 

        lokale	
 dataplaasing	
                                                       referen)e	
 
                   213javac	
                       serial
Convergen)e	
 van	
 de	
 zelf-足lerende	
 aanpak	
 



                            Circle	
 c	
 =	
 new	
 Circle();	
 




 processor	
       1	
       2	
              4	
            6	
                            )jd	
 
 co-足processor	
                       3	
            5	
            7	
    8	
    9	
 



                                       convergen)e
Sommige	
 objecten	
 staan	
 in	
 het	
 verkeerde	
 
geheugen,	
 maar	
 het	
 algoritme	
 leert	
 snel	
 

 100%



  50%



    0%
          0          16         512       16384      never
Zelf-足lerend	
 algoritme	
 werkt	
 ook	
 nog	
 
als	
 communica)e	
 bemonsterd	
 wordt	
 
≒ Evalua)e	
 voor	
 benchmark	
 antlr	
 
≒ Vermindering	
 van	
 de	
 e鍖ci谷n)e	
 blij_	
 beperkt	
 
                                  #	
 niet-足lokale	
 toegangen	
 
  100%



   50%



     0%
            volledig      1/10       1/100     1/1.000 1/10.000
                       bemonsteringsfrequen)e
Zelf-足lerend	
 algoritme	
 werkt	
 ook	
 nog	
 
als	
 communica)e	
 bemonsterd	
 wordt	
 
                                #	
 niet-足lokale	
 toegangen	
 
  100%




   50%




    0%
          antlr   luindex hsqldb 227mtrt        serial    209db
Meer	
 programmas	
 pro鍖teren	
 van	
 hardware-足
versnelling	
 dankzij	
 zelf-足lerende	
 aanpak	
 
rela)eve	
 uitvoerings)jd	
                                referen)e	
 
  16	
 


                                                                    lokaal	
 
    4	
 
                                                           zelf-足lerend	
 

    1	
 
            1	
                        10	
                         100	
 
                    rela)eve	
 kost	
 van	
 niet-足lokale	
 toegangen
Communica)ebewuste	
 plaatsing	
 van	
 data	
 
in	
 een	
 gedistribueerd	
 rekensysteem	
 


  meten	
 is	
 weten	
 

         verdeling	
 van	
 het	
 werk	
 

                       plaatsing	
 van	
 data
Communica)ebewuste	
 	
 
                 plaatsing	
 van	
 data	
 in	
 een	
 
               gedistribueerd	
 rekensysteem	
 
                                                                    Peter	
 Bertels	
 


Universiteit	
 Gent	
 	
 	
 	
 Vakgroep	
 Elektronica	
 en	
 Informa)esystemen	
 	
 	
 	
 Openbare	
 doctoraatsverdediging	
 	
 	
 	
 woensdag	
 19	
 mei	
 2010

More Related Content

Communicatiebewuste plaatsing van data in een gedistribueerd rekensysteem

  • 1. Communica)ebewuste plaatsing van data in een gedistribueerd rekensysteem Peter Bertels Universiteit Gent Vakgroep Elektronica en Informa)esystemen Openbare doctoraatsverdediging woensdag 19 mei 2010
  • 2. Ons spaarboekje bij de bank communica)e in een gedistribueerd systeem L B G
  • 3. Gedistribueerd rekensysteem: vele handen maken licht werk processor processor geheugen geheugen processor processor geheugen geheugen
  • 4. Communica)e op)maliseren: drie stappen op weg naar meer e鍖ci谷n)e meten is weten verdeling van het werk plaatsing van data
  • 5. Communica)e tussen de methodes van een Java-足programma m1 m2 m3 m6 m5 m4
  • 6. Verdeling van interne taken over processors m1 m2 m3 m6 m5 m4
  • 7. Verdeling van interne taken over processors m1 m2 m3 m6 m5 m4
  • 8. Communica)epro鍖el legt de inherente communica)e in een programma bloot m1 m2 m3 m5 m4 m3 oproepgraaf communica)e
  • 9. Communica)epro鍖el opbouwen gaat zeer langzaam en vergt veel geheugen ≒ Gemiddeld voor 6 Java-足programmas: # geheugentoegangen: 877 miljoen # methode-足oproepen: 155 miljoen ≒ Tergend traag: Elke lees/schrijf-足opera)e moet geteld worden ≒ Geheugenverslindend: Per Java-足object moet extra data bijgehouden worden
  • 10. Snelle, nauwkeurige me)ng van het communica)epro鍖el door reservoir sampling ≒ Scha]ng van het communica)epro鍖el ≒ Reservoir sampling gee_ een willekeurige selec)e van producent/consument-足paren )jd reservoir: N monsters )jd
  • 11. Communica)epro鍖el wordt veel sneller en toch nauwkeurig opgebouwd ≒ Pro鍖lering gaat 15x sneller ≒ Rela)eve fout blij_ binnen vastgestelde grens ≒ Reservoirgrooae N is sta)s)sch bepaald 50% rela)eve fout 1000 10.000 100.000 1000.000 reservoirgrooae
  • 12. Func)onele par))onering van programmas a b c d e f g h oproepgraaf i communica)e
  • 13. Hardwareversnellers kunnen de uitvoering van programmas dras)sch versnellen DNA-足 communica)e aligna)e kern programma 1 processor met co-足processor uitvoerings)jd
  • 14. Generieke processor vormt samen met een hardwareversneller een hybried plahorm java vhdl generieke hardware-足 PCI processor versneller
  • 15. Java virtuele machine is een abstrac)elaag tussen het programma en complexe hardware programma java virtuele machine generieke PCI hardware-足 processor versneller
  • 16. Virtuele machine stuurt de hardware-足versneller aan generieke PCI hardware-足 processor versneller hardware-足oproep return
  • 17. Communica)ebewuste plaatsing van data in het gedistribueerde geheugen hardware-足 hoofdprocessor versneller PCI hoofdgeheugen lokaal geheugen ≒ Gedistribueerde Java heap ≒ Elke rekenknoop kan elk object lezen/schrijven ≒ NUMA: niet-足uniforme toegangs)jden ≒ Data plaatsen waar ze het vaakst gebruikt wordt
  • 18. Verschillende technieken klaren de klus alles in hoofdgeheugen lokale dataplaatsing zelf-足lerende aanpak theore)sch op)mum
  • 19. Zelf-足lerend algoritme probeert de op)male loca)e te vinden )jdens de uitvoering ≒ Groepeer objecten per crea)eplaats ≒ Tel geheugentoegangen per crea)eplaats ≒ Nieuwe objecten plaatsen volgens de tellers co-足processor 397 12 Circle c = new Circle(); processor
  • 20. Presta)es over alle programmas heen ≒ Evalua)e op SPECjvm-足 en DaCapo-足benchmarks ≒ Vergelijking van frac)e niet-足lokale toegangen 47% referen)e (alles in hoofdgeheugen) 33% lokale dataplaatsing 26% zelf-足lerende aanpak 11% op)mum
  • 21. De beste techniek voor elk programma xml.valida crypto.rsa io )on d b mpegaud hsql chart comp antlr pmd ress zelf-足lerend zelf-足lerend lokaal lusearch luindex xalan 228ja ck 227mtrt xml.transf jython 202jess crypto.aes orm fop derby bloat 209db lokale dataplaasing referen)e 213javac serial
  • 22. Convergen)e van de zelf-足lerende aanpak Circle c = new Circle(); processor 1 2 4 6 )jd co-足processor 3 5 7 8 9 convergen)e
  • 23. Sommige objecten staan in het verkeerde geheugen, maar het algoritme leert snel 100% 50% 0% 0 16 512 16384 never
  • 24. Zelf-足lerend algoritme werkt ook nog als communica)e bemonsterd wordt ≒ Evalua)e voor benchmark antlr ≒ Vermindering van de e鍖ci谷n)e blij_ beperkt # niet-足lokale toegangen 100% 50% 0% volledig 1/10 1/100 1/1.000 1/10.000 bemonsteringsfrequen)e
  • 25. Zelf-足lerend algoritme werkt ook nog als communica)e bemonsterd wordt # niet-足lokale toegangen 100% 50% 0% antlr luindex hsqldb 227mtrt serial 209db
  • 26. Meer programmas pro鍖teren van hardware-足 versnelling dankzij zelf-足lerende aanpak rela)eve uitvoerings)jd referen)e 16 lokaal 4 zelf-足lerend 1 1 10 100 rela)eve kost van niet-足lokale toegangen
  • 27. Communica)ebewuste plaatsing van data in een gedistribueerd rekensysteem meten is weten verdeling van het werk plaatsing van data
  • 28. Communica)ebewuste plaatsing van data in een gedistribueerd rekensysteem Peter Bertels Universiteit Gent Vakgroep Elektronica en Informa)esystemen Openbare doctoraatsverdediging woensdag 19 mei 2010