SlideShare une entreprise Scribd logo
1  sur  59
EMF Compare 2
Scaling to Millions




Mikaël Barbero        24 October 2012
http://idealistpropaganda.blogspot.fr/2010/04/imaginary-foundations-make-difference.html
EMF Compare 2.0

• Released mid-september 2012


• Sponsored by Ericsson under Polarsys and
  Modeling Platform Working Group (MPWG)




• Goal: performance should relate to number
  of differences, not to the size of the model


   • But also simpler API, better
     understanding of differences for end-
     users...
Brand New UI   Better integration with Team/Compare
http://www.flickr.com/photos/viggum/2417430161/




Demo
Because it worths a thousand words
How does it works?   in a Nutshell
Match
http://www.flickr.com/photos/brianjmatis/3209203494/




Differencing
Dependencies




               http://www.flickr.com/photos/qilin/2262821682/
Equivalences




               http://www.bavarianfootballworks.com/2012/9/24/3384502/preview-fc-bayern-vs-vfl-wolfsburg
http://www.theology21.com/2010/07/27/are-you-talking-to-me-the-art-of-misunderstanding-and-theological-double-talk/




                                                                                                                      Conflicts
Merge




        http://www.flickr.com/photos/brendanlynch/5013468408/
Match




                  Difference



Summary
                           Requirement




                                   Equivalence




                                                 Conflict
How to scale to Millions?




                            http://www.flickr.com/photos/somemixedstuff/2403249501/
A graph of EObjects
A «logical» EMF model
A



                                  C




                                      D

A graph of EObjects           B


                      G

In Resources
                          E




                          F
A



                                    C




                                        D

A graph of EObjects             B


                        G

Cross-resources links
                            E




                            F
A   B       C




A graph of Resources                   D
                               E
                       G




                               F
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A




G       B




        C




    D



                        To be loaded
    F

                        Loaded


    E                   Unloaded




    Smart Resolve All       Multi-Threaded
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
A           B       C


        Ancestor
                                                    D
                                            E
                            G


A   B            C

                         Left (local)       F



                     D
             E
G                           A           B       C




             F
                                                    D
                                            E
                            G




                                            F
                         Right (remote)
Summary
Summary



  Build the graph of
      resources
Summary



  Build the graph of
      resources




  Smart resolve all
Summary


                         Find which
  Build the graph of
                       resources has
      resources
                          changed




  Smart resolve all
Summary


                          Find which
  Build the graph of
                        resources has
      resources
                           changed




                       Binary comparison
  Smart resolve all
                          of resources
Summary


                          Find which
  Build the graph of                       Compare resource
                        resources has
      resources                             with differences
                           changed




                       Binary comparison
  Smart resolve all
                          of resources
Summary


                          Find which
  Build the graph of                       Compare resource
                        resources has
      resources                             with differences
                           changed




                                           Match, Diff, etc.
                       Binary comparison
  Smart resolve all                        without resolving
                          of resources
                                                proxies
Kill two pigs with one (angry) bird




                                      http://extremehdwallpapers.com/wp-content/uploads/2012/08/angry-birds-wallpaper-hd-.jpg
http://www.flickr.com/photos/roberts87/2646193801/




                                                    Lightweight   How light?
http://www.flickr.com/photos/themonnie/2495892146/




                                                    Fast   How fast?
Number of fragments (resources)              Number of EObjects                   Disk Usage (XMI files size)
10000                                     10000K                                1000M


1000                                      1000K
                                                                                 100M

 100                                       100K

                                                                                  10M
   10                                       10K



          Small    Medium      Large               Small   Medium   Large                 Small    Medium      Large




                                               Sample Models                The numbers (x2 in 2-ways, x3 in 3-ways)
The
                               promised millions
        Number of fragments (resources)              Number of EObjects                   Disk Usage (XMI files size)
10000                                     10000K                                1000M


1000                                      1000K
                                                                                 100M

 100                                       100K

                                                                                  10M
   10                                       10K



          Small    Medium      Large               Small   Medium   Large                 Small    Medium      Large




                                               Sample Models                The numbers (x2 in 2-ways, x3 in 3-ways)
Small        Medium         Large

                                          120




                                           90



CPU Usage




                             Time (sec)
                                           60

Some changes in 1 resource

                                           30




                                                1                  10                   100
                                                            number of changes
Small        Medium          Large

                                          120




                                           90



CPU Usage




                             Time (sec)
                                           60

1 change in some fragments

                                           30




                                                1           5              10            20
                                                       number of changed fragments
600




                                       450




                      Max Heap (MiB)
Memory Usage
                                       300

Max Heap (-Xmx512m)



                                       150




                                        0
                                             Small   Medium   Large
http://www.flickr.com/photos/exploratorium/4689347618/in/set-72157624060408411   http://www.flickr.com/photos/exploratorium/4680503314/in/set-72157624060408411   http://www.flickr.com/photos/exploratorium/4689346802/in/set-72157624060408411




                                                                                             What’s Next?
Model Resolving        Scope Narrowing    Matching
                    Differencing           Post-Process

                                                                   100 %




                                                                  75 %

Time distribution
                                                                 50 %




                                                                 25 %




                     Small                                      0 %
                                      Nominal
                                                      Large
Index Cross-Resources Links




                              http://www.flickr.com/photos/manchesterlibrary/5425247171/
Porting Eclipse Papyrus support
                                  http://www.flickr.com/photos/manchesterlibrary/5425247171/
A




           G       B




                   C




               D



                                     To be loaded
               F

                                     Loaded


               E                     Unloaded




Protect the Integrity of the Model        When committing, updating...
A




           G       B




                   C




               D



                                     To be loaded
               F

                                     Loaded


               E                     Unloaded




Protect the Integrity of the Model        When committing, updating...
http://nn.wikipedia.org/wiki/Fil:Postcards_and_magnifying_glass.jpg




                                       Generic Content Based Match Engine   Decently Fast
http://cdn.memegenerator.net/instances/400x/20451927.jpg




                                                           Merge Wizard   Help to Resolve Conflict
http://www.space.com/17376-sharing-the-light-of-two-suns.html




                                                                EMF Compare 2.1   With Kepler (Eclipse 4.3), June 2013
What you should remember


    New UI



       Blazing Fast and
         Lightweight



              More to come ;)
http://www.eclipse.org/emf/compare/
http://www.slideshare.net/mikaelbarbero/

Contenu connexe

Plus de mikaelbarbero

Kubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating Systemmikaelbarbero
 
Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?mikaelbarbero
 
What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)mikaelbarbero
 
The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?mikaelbarbero
 
What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...mikaelbarbero
 
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)mikaelbarbero
 
Diff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF CompareDiff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF Comparemikaelbarbero
 
Eclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshellEclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshellmikaelbarbero
 
OSGi: Don't let me be Misunderstood
OSGi: Don't let me be MisunderstoodOSGi: Don't let me be Misunderstood
OSGi: Don't let me be Misunderstoodmikaelbarbero
 
EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!mikaelbarbero
 
3mf infinity-and-beyond
3mf infinity-and-beyond3mf infinity-and-beyond
3mf infinity-and-beyondmikaelbarbero
 
Eclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare ImprovementsEclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare Improvementsmikaelbarbero
 
Google Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG NantesGoogle Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG Nantesmikaelbarbero
 
5M lines of code migration
5M lines of code migration5M lines of code migration
5M lines of code migrationmikaelbarbero
 
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)mikaelbarbero
 

Plus de mikaelbarbero (16)

Kubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating SystemKubernetes 101 - A Cluster Operating System
Kubernetes 101 - A Cluster Operating System
 
Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?Language Server Protocol - Why the Hype?
Language Server Protocol - Why the Hype?
 
What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)What's new in Eclipse Oxygen (Devoxx France 2017)
What's new in Eclipse Oxygen (Devoxx France 2017)
 
The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?The Eclipse IDE: What's new in the 2017 release?
The Eclipse IDE: What's new in the 2017 release?
 
What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...What every Eclipse developer should know about progress reporting and job can...
What every Eclipse developer should know about progress reporting and job can...
 
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)The Eclipse IDE - The Force Awakens (Devoxx France 2016)
The Eclipse IDE - The Force Awakens (Devoxx France 2016)
 
Diff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF CompareDiff and Merge with Ease: EMF Compare
Diff and Merge with Ease: EMF Compare
 
Eclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshellEclipse simultaneous release in a nutshell
Eclipse simultaneous release in a nutshell
 
OSGi: Don't let me be Misunderstood
OSGi: Don't let me be MisunderstoodOSGi: Don't let me be Misunderstood
OSGi: Don't let me be Misunderstood
 
EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!EMF.Edit the Force Unleashed!
EMF.Edit the Force Unleashed!
 
3mf infinity-and-beyond
3mf infinity-and-beyond3mf infinity-and-beyond
3mf infinity-and-beyond
 
Eclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare ImprovementsEclipseconeurope 2011 - EMFCompare Improvements
Eclipseconeurope 2011 - EMFCompare Improvements
 
Google Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG NantesGoogle Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG Nantes
 
5M lines of code migration
5M lines of code migration5M lines of code migration
5M lines of code migration
 
EMFPath
EMFPathEMFPath
EMFPath
 
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
Generating an Android App with Acceleo (Eclipse Summit Europe 2010)
 

EMFCompare 2.0: Scaling to Millions

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. identity == id currently\ncontent based (heuristics) still to come\n
  7. detect differences between matched elements\n\nComputer History Museum The difference engine\nan automatic, mechanical calculator designed to tabulate polynomial functions) based upon the designs of Charles Babbage\n
  8. between differences => what has to be merged when the current diff is asked to be\n
  9. what differences has to be marked as merge if one is asked to be\neOpposite\n
  10. detecting conflict between differences when doing a three-way comparison (SCM)\n
  11. automatically (accept all changes) resolve conflicts... \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. references between EObject that cross the boundaries of resources\n
  17. let’s try to compare three resource set\n
  18. \n
  19. \n
  20. this is the basic idea to reduce memory consumption AND cpu\nonly few of the resources have to be really loaded and compared\nbut still, no idea of the graph of resources before the comparison\nif we load resource set one by one to detect graph of resources, still take a lot of time and memory\n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. this is the basic idea to reduce memory consumption AND cpu\nonly few of the resources have to be really loaded and compared\nbut still, no idea of the graph of resources before the comparison\nif we load resource set one by one to detect graph of resources, still take a lot of time and memory\n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. logarithmic scale, see, each sample is an order of magnitude bigger than the previous one.\ntwo metrics to see how we scale: several modifications in 1 fragments, 1 modifications in several fragments. \n
  47. \n
  48. \n
  49. 2GB with Medium in 1.3\n
  50. \n
  51. \n
  52. \n
  53. from 1.3\n
  54. \n
  55. A (fast) Generic one, you can plug in your own already\n
  56. and see the differences required to be merged when merging one\n
  57. milestones before, the performance presented here are from the master\n
  58. \n
  59. \n