SlideShare a Scribd company logo
1 of 55
Download to read offline
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




               Benchmark::Perl::Formance for the masses

                              Steen renormalist Schwigon

                                      Dresden Perl Mongers

                                       16 August 2011
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




      Abstract

      Motivation

      Measuring

      Workloads

      Perl::Formance

      Challenges

      Infrastructure

      Summary
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                           Abstract




            Abstract
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                           Abstract



            Perl lacks benchmarking
            I work on a full-coverage solution
                   benchmark implementation
                   complete build - execute - evaluate lifecycle
                   benchmark result database
                   graphically present numbers and details
            Present the vision and state
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                         Motivation




            Motivation
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                        Perl standard benchmark suite?
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                        Perl standard benchmark suite?
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                        Perl standard benchmark suite?
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                         Measuring




            Measuring
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                The most important benchmark question


            What do you want to measure?

            Primary goal: perl5, the interpreter
                   real world workloads
                   micro benchmarks
                   usethreads vs. no usethreads
                   use64bitall vs. no use64bitall
            Secondary goal: misc Perl5 topics
                   subs vs. methods
                   Moose
                   regex engines
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                         Workloads




            Workloads
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                      Where is Perl?




            Everywhere and nowhere
            Benchmarks are a corporate topic
            Perl's usual corporate visibility problem
Abstract   Motivation   Measuring    Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    The One Workload



            No dedicated single heavy applications
            Except SpamAssassin
                   important app
                   heavy for a reason
                   hit by 5.12 deprecations
                   handholding on new CPAN release
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                          Self-referential - Perl for Perl




            Refer to Perl itself
                   CPAN.pm
                   Perl::Critic
                   Perl6 STD.pm (gimme5, viv)
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                       Nothing else!




            Not much more
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                        Writing my own benchmark suite



            Goals
                   Have benchmark workloads
                         server workloads (MEM! + TIME!)
                         desktop workloads (small + fast)
                         micro benchmarks (language features)
                         multi purpose workloads (average, not tting in others)

                   Provide general benchmarking umbrella
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                     Perl::Formance




            Perl::Formance
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                    The Perl::Formance benchmark suite



            Collect existing heavy code
            Collect existing benchmark snippets
            Write new benchmark code from scratch
            Measure execution time (smaller is better)
            http://xrl.us/cpanperlformance
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                           Perl::Formance features (1)




            Heavy workloads
                   The one: SpamAssassin
                         Type: server
                         Example corpus from spamassassin.org
                         Run sa-learn
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                           Perl::Formance features (2)
            Wrap existing benchmarks
                   Language Shootout on alioth.debian.org
                         Type: multi purpose
                         binarytrees
                         fasta
                         nbody
                         pidigits
                         regexdna
                         revcomp
                         spectralnorm
                         fannkuch (!)
                         knucleotide (!)
                         mandelbrot (!)

                   Mostly copy'n'paste into Perl::Formance plugins
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                           Perl::Formance features (3)


            Known heavy code from CPAN
                   Heavy test suites
                         Type: desktop
                         Moose test suite
                         Regexp::Common

                   Perl6 STD.pm
                         Type: desktop
                         gimme5 STD.pm6
                         viv STD.pm6

                   Data::DPath
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                           Perl::Formance features (4)



            Stress of language features
                   Stress recursion (use Fibonacci numbers as vehicle)
                         Type: micro
                         subs - plain Perl
                         methods - plain Perl
                         methods - Moose
                         methods - MooseX::Declare
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                           Perl::Formance features (5)



            Pathological Regular Expressions
                   Type: micro
                   Known pathological issues
                   my $re = (a? x $n) . (a x $n);
                   See
                          http://swtch.com/~rsc/regexp/regexp1.html
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                           Perl::Formance features (6)

            Compare dierent regex engines
                   Pluggable regex engines since Perl 5.10
                   Again pathological regular expressions
                   Type: micro
            Regex engines
                   native
                   POSIX::Regex
                   re::engine::Plan9
                   re::engine::PCRE
                   re::engine::Lua
                   re::engine::LPeg (confusion bonus)
                   re::engine::Oniguruma
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                            Dierent output styles (1)


            Human readable
                   $ benchmark-perlformance --fastmode [...]
                   Rx.regexes.fieldsplit1 : 1.267907
                   Rx.regexes.fieldsplit2 : 2.106220
                   Rx.regexes.pathological : 1.000129
                   Shootout.binarytrees    : 1.046751
                   Shootout.fasta          : 2.270553
                   Shootout.nbody          : 1.685537
                   Shootout.spectralnorm   : 1.855935
Abstract   Motivation     Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                              Dierent output styles (2)
            Evaluation friendly (outstyle=yaml)
                        ---
                        perlformance:
                          config:
                            fastmode: 1
                        results:
                          Shootout:
                            fasta:
                              Benchmark:
                                - 0.263123989105225
                                - 0.25
                                - 0
                                - 0
                                - 1
                              count: 1
                              goal: 5000
                        ...
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                       Output style

            Augment YAML with surrounding TAP
                   --tapdescription=some description

            Additional Codespeed data structure
                   --codespeed

            Why TAP?
                   TAP is my hammer
                   Later embed into Tapper infrastructure
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                         Plugin API


            Very lax, just namespace + sub main()

              Benchmark::Perl::Formance::Plugin::Skeleton
              Benchmark::Perl::Formance::Plugin::*
              sub main($options) {
                                   ...
                                   return { Benchmark = $t,
                                            ...
                                          };
                                 }
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                         Challenges




            Challenges
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Automatic building
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Automatic building




            sigh
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Automatic building
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Automatic building



            Working throughout Perl's git history (5.8..blead)
            Cherry-pick xes from the future (5.8.x)
            Inconsistent version tags
            perlbrew?
                   No git
                   No bootstrapping CPAN, distroprefs (ANDK++), etc.
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                          The Art of Benchmarking (1)
            Stable benchmark environment
                   Perl - OS interaction
                         Flush Caches
                         Address Space Layout Randomisation (ASLR)
                         Disable Core Performance Boost
                   Provide stable set of CPAN dependencies
                         Own CPAN mirror
                         Only sync once in a time

                   Stable execution environment
                         Machine, Memory, Harddisk
                         Operating System
                         Compile toolchain

                   Lazily load benchmark plugins+dependencies after fork
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                          The Art of Benchmarking (2)




            I/O everywhere
                   depends on the workload
                   SPECcpu 2006 (Perl 5.8.7) avoids I/O
                   I do not ght that battle
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                       Infrastructure




            CPAN module obviously not enough
            I should solve all other challenges, too
            Set up complete infrastructure
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                       Infrastructure




            Infrastructure
Abstract   Motivation   Measuring   Workloads    Perl::Formance   Challenges   Infrastructure   Summary




                                       Infrastructure



            perl64.org -    Benchmark           machine
                   Rent dedicated machine
                   6-core AMD Opteron 4180
                   Without any running services
                   No private data, for relaxed access
            perlformance.net - Tapper application
            speed.perlformance.net - Codespeed application
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                         Single Run
            Builds Perl
                   from git
                   inject CPAN toolchain
                   Perl 5.8 .. blead
            Installs Benchmark::Perl::Formance
            Installs Tapper::TestSuite::Benchmark::Perl::Formance
            Runs tapper-testsuite-benchmark-perl-formance
                   runs benchmark-perlformance
                         outstyle=yaml
                         tapdescription=perlformance
                         codespeed

                   adds meta information for Tapper
                   sends report to Tapper server
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                       Multiple runs




            Tapper
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                            Tapper


            Test infrastructure, open sourced by AMD in 2011
                   Overview:
                         http://developer.amd.com/zones/opensource/AMDTapper

                   Source:
                         http://github.com/amd

                   Productized:
                         Starterkit/Deployment, Docs, Wiki
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                            Tapper



            Why Tapper?
                   Tapper == TAP database + automation + scheduler
                   Query API for detailed data forensics
                         see my YAPC::EU 2009 presentation
                         Cinderella 'TAP - The lazy evaluation sisters of TAP::Parser
                         http://xrl.us/lazytap (PDF)
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                            Tapper
            Why Tapper?
                   Schedule / intermix dierent use-cases
                         auto-rerun for blead/threads
                         auto-rerun for blead/nothreads
                         specic commits
                         completely dierent stu I add later (Perl6 benchmarks?,
                         smoke tests?)

                   Have bandwidth ratio for each,
                         eg. more non-threaded than threaded

                   Advanced automation support, timeout handling, etc.
                   Frontends to start single runs
                         cmdline + webGUI
                         with requested options (commitid, threads, 64bit)

                   Pass-through data chunks to Codespeed application
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                Codespeed application



            http://github.com/tobami/codespeed
            Web application
            Render benchmark graphs
            Show commit/meta information
            Comparison graphs, baselines, etc.
            Can handle git repos
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Own CPAN mirror




            http://perlformance.net/CPAN
            To guarantee no unexpected changes
                   slower/faster/break
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                          Summary




            Summary
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                          Summary


            I have benchmarks
            I have automatic Perl + CPAN setup
            I have applications for complete infrastructure
            I have dedicated benchmarking server
            I have dedicated CPAN mirror
            Polished in many details
            TODO        :
                   1. Re-setup after server went mental
                   2. Allow users to request benchmark runs
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Bonus Screenshots




            Bonus Screenshots
Abstract   Motivation    Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                        Tapper at http://perlformance.net
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                               Tapper - Overview lists
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Tapper - Metainfo
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                    Tapper - Metainfo
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                Tapper - Tracked data
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




             Codespeed at http://speed.perlformance.net
Abstract   Motivation   Measuring   Workloads   Perl::Formance   Challenges   Infrastructure   Summary




                                           Thanks.




            Thanks.

More Related Content

What's hot

JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
Vladimir Ivanov
 
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
Jason Hearne-McGuiness
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
ZeroTurnaround
 
Open Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVMOpen Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVM
Tom Lee
 

What's hot (19)

JVM: A Platform for Multiple Languages
JVM: A Platform for Multiple LanguagesJVM: A Platform for Multiple Languages
JVM: A Platform for Multiple Languages
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylight
 
Java SE 8 best practices
Java SE 8 best practicesJava SE 8 best practices
Java SE 8 best practices
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
 
2CPP02 - C++ Primer
2CPP02 - C++ Primer2CPP02 - C++ Primer
2CPP02 - C++ Primer
 
Encode, tag, realize high precision text editing
Encode, tag, realize high precision text editingEncode, tag, realize high precision text editing
Encode, tag, realize high precision text editing
 
A Domain-Specific Embedded Language for Programming Parallel Architectures.
A Domain-Specific Embedded Language for Programming Parallel Architectures.A Domain-Specific Embedded Language for Programming Parallel Architectures.
A Domain-Specific Embedded Language for Programming Parallel Architectures.
 
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
C++ Data-flow Parallelism sounds great! But how practical is it? Let’s see ho...
 
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
 
In Vogue Dynamic
In Vogue DynamicIn Vogue Dynamic
In Vogue Dynamic
 
Open Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVMOpen Source Compiler Construction for the JVM
Open Source Compiler Construction for the JVM
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real World
 
55 New Features in Java SE 8
55 New Features in Java SE 855 New Features in Java SE 8
55 New Features in Java SE 8
 
Static analysis for perl
Static analysis for perlStatic analysis for perl
Static analysis for perl
 
Java 8 Features
Java 8 FeaturesJava 8 Features
Java 8 Features
 
Introduction to new features in java 8
Introduction to new features in java 8Introduction to new features in java 8
Introduction to new features in java 8
 
What's Expected in Java 7
What's Expected in Java 7What's Expected in Java 7
What's Expected in Java 7
 
The Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compilerThe Parenscript Common Lisp to JavaScript compiler
The Parenscript Common Lisp to JavaScript compiler
 

Similar to Yapc eu 2011_perlformance-net

Overview Of .Net 4.0 Sanjay Vyas
Overview Of .Net 4.0   Sanjay VyasOverview Of .Net 4.0   Sanjay Vyas
Overview Of .Net 4.0 Sanjay Vyas
rsnarayanan
 
Perl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20PerlPerl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20Perl
tutorialsruby
 
Perl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20PerlPerl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20Perl
tutorialsruby
 
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Development
Me3D: A Model-driven Methodology  Expediting Embedded Device  Driver DevelopmentMe3D: A Model-driven Methodology  Expediting Embedded Device  Driver Development
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Development
huichenphd
 
Benchmarking the Efficiency of Your Tools
Benchmarking the Efficiency of Your ToolsBenchmarking the Efficiency of Your Tools
Benchmarking the Efficiency of Your Tools
Marian Marinov
 
Rails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & ToolsRails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & Tools
guest05c09d
 

Similar to Yapc eu 2011_perlformance-net (20)

Enterprise Perl
Enterprise PerlEnterprise Perl
Enterprise Perl
 
Overview Of .Net 4.0 Sanjay Vyas
Overview Of .Net 4.0   Sanjay VyasOverview Of .Net 4.0   Sanjay Vyas
Overview Of .Net 4.0 Sanjay Vyas
 
Pugs: A Perl 6 Implementation
Pugs: A Perl 6 ImplementationPugs: A Perl 6 Implementation
Pugs: A Perl 6 Implementation
 
Perl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20PerlPerl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20Perl
 
Perl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20PerlPerl%20Tutorial.!Picking%20Up%20Perl
Perl%20Tutorial.!Picking%20Up%20Perl
 
Propel Your PHP Applications
Propel Your PHP ApplicationsPropel Your PHP Applications
Propel Your PHP Applications
 
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code baseSingle Sourcing RAP and RCP - Desktop and web clients from a single code base
Single Sourcing RAP and RCP - Desktop and web clients from a single code base
 
Spark r under the hood with Hossein Falaki
Spark r under the hood with Hossein FalakiSpark r under the hood with Hossein Falaki
Spark r under the hood with Hossein Falaki
 
perl
perlperl
perl
 
perl
perlperl
perl
 
Thnad's Revenge
Thnad's RevengeThnad's Revenge
Thnad's Revenge
 
Linaro Connect 2016 (BKK16) - Introduction to LISA
Linaro Connect 2016 (BKK16) - Introduction to LISALinaro Connect 2016 (BKK16) - Introduction to LISA
Linaro Connect 2016 (BKK16) - Introduction to LISA
 
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Development
Me3D: A Model-driven Methodology  Expediting Embedded Device  Driver DevelopmentMe3D: A Model-driven Methodology  Expediting Embedded Device  Driver Development
Me3D: A Model-driven Methodology Expediting Embedded Device Driver Development
 
How CPAN Testers helped me improve my module
How CPAN Testers helped me improve my moduleHow CPAN Testers helped me improve my module
How CPAN Testers helped me improve my module
 
Benchmarking the Efficiency of Your Tools
Benchmarking the Efficiency of Your ToolsBenchmarking the Efficiency of Your Tools
Benchmarking the Efficiency of Your Tools
 
Do it Yourself Testing
Do it Yourself TestingDo it Yourself Testing
Do it Yourself Testing
 
Enhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyEnhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through Ontology
 
Perl 20tips
Perl 20tipsPerl 20tips
Perl 20tips
 
Rails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & ToolsRails Application Optimization Techniques & Tools
Rails Application Optimization Techniques & Tools
 
Mastering Regex in Perl
Mastering Regex in PerlMastering Regex in Perl
Mastering Regex in Perl
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Yapc eu 2011_perlformance-net

  • 1. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Benchmark::Perl::Formance for the masses Steen renormalist Schwigon Dresden Perl Mongers 16 August 2011
  • 2. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary
  • 3. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Abstract Abstract
  • 4. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Abstract Perl lacks benchmarking I work on a full-coverage solution benchmark implementation complete build - execute - evaluate lifecycle benchmark result database graphically present numbers and details Present the vision and state
  • 5. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Motivation Motivation
  • 6. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl standard benchmark suite?
  • 7. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl standard benchmark suite?
  • 8. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl standard benchmark suite?
  • 9. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Measuring Measuring
  • 10. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary The most important benchmark question What do you want to measure? Primary goal: perl5, the interpreter real world workloads micro benchmarks usethreads vs. no usethreads use64bitall vs. no use64bitall Secondary goal: misc Perl5 topics subs vs. methods Moose regex engines
  • 11. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Workloads Workloads
  • 12. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Where is Perl? Everywhere and nowhere Benchmarks are a corporate topic Perl's usual corporate visibility problem
  • 13. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary The One Workload No dedicated single heavy applications Except SpamAssassin important app heavy for a reason hit by 5.12 deprecations handholding on new CPAN release
  • 14. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Self-referential - Perl for Perl Refer to Perl itself CPAN.pm Perl::Critic Perl6 STD.pm (gimme5, viv)
  • 15. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Nothing else! Not much more
  • 16. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Writing my own benchmark suite Goals Have benchmark workloads server workloads (MEM! + TIME!) desktop workloads (small + fast) micro benchmarks (language features) multi purpose workloads (average, not tting in others) Provide general benchmarking umbrella
  • 17. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl::Formance Perl::Formance
  • 18. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary The Perl::Formance benchmark suite Collect existing heavy code Collect existing benchmark snippets Write new benchmark code from scratch Measure execution time (smaller is better) http://xrl.us/cpanperlformance
  • 19. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl::Formance features (1) Heavy workloads The one: SpamAssassin Type: server Example corpus from spamassassin.org Run sa-learn
  • 20. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl::Formance features (2) Wrap existing benchmarks Language Shootout on alioth.debian.org Type: multi purpose binarytrees fasta nbody pidigits regexdna revcomp spectralnorm fannkuch (!) knucleotide (!) mandelbrot (!) Mostly copy'n'paste into Perl::Formance plugins
  • 21. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl::Formance features (3) Known heavy code from CPAN Heavy test suites Type: desktop Moose test suite Regexp::Common Perl6 STD.pm Type: desktop gimme5 STD.pm6 viv STD.pm6 Data::DPath
  • 22. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl::Formance features (4) Stress of language features Stress recursion (use Fibonacci numbers as vehicle) Type: micro subs - plain Perl methods - plain Perl methods - Moose methods - MooseX::Declare
  • 23. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl::Formance features (5) Pathological Regular Expressions Type: micro Known pathological issues my $re = (a? x $n) . (a x $n); See http://swtch.com/~rsc/regexp/regexp1.html
  • 24. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Perl::Formance features (6) Compare dierent regex engines Pluggable regex engines since Perl 5.10 Again pathological regular expressions Type: micro Regex engines native POSIX::Regex re::engine::Plan9 re::engine::PCRE re::engine::Lua re::engine::LPeg (confusion bonus) re::engine::Oniguruma
  • 25. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Dierent output styles (1) Human readable $ benchmark-perlformance --fastmode [...] Rx.regexes.fieldsplit1 : 1.267907 Rx.regexes.fieldsplit2 : 2.106220 Rx.regexes.pathological : 1.000129 Shootout.binarytrees : 1.046751 Shootout.fasta : 2.270553 Shootout.nbody : 1.685537 Shootout.spectralnorm : 1.855935
  • 26. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Dierent output styles (2) Evaluation friendly (outstyle=yaml) --- perlformance: config: fastmode: 1 results: Shootout: fasta: Benchmark: - 0.263123989105225 - 0.25 - 0 - 0 - 1 count: 1 goal: 5000 ...
  • 27. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Output style Augment YAML with surrounding TAP --tapdescription=some description Additional Codespeed data structure --codespeed Why TAP? TAP is my hammer Later embed into Tapper infrastructure
  • 28. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Plugin API Very lax, just namespace + sub main() Benchmark::Perl::Formance::Plugin::Skeleton Benchmark::Perl::Formance::Plugin::* sub main($options) { ... return { Benchmark = $t, ... }; }
  • 29. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Challenges Challenges
  • 30. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Automatic building
  • 31. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Automatic building sigh
  • 32. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Automatic building
  • 33. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Automatic building Working throughout Perl's git history (5.8..blead) Cherry-pick xes from the future (5.8.x) Inconsistent version tags perlbrew? No git No bootstrapping CPAN, distroprefs (ANDK++), etc.
  • 34. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary The Art of Benchmarking (1) Stable benchmark environment Perl - OS interaction Flush Caches Address Space Layout Randomisation (ASLR) Disable Core Performance Boost Provide stable set of CPAN dependencies Own CPAN mirror Only sync once in a time Stable execution environment Machine, Memory, Harddisk Operating System Compile toolchain Lazily load benchmark plugins+dependencies after fork
  • 35. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary The Art of Benchmarking (2) I/O everywhere depends on the workload SPECcpu 2006 (Perl 5.8.7) avoids I/O I do not ght that battle
  • 36. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Infrastructure CPAN module obviously not enough I should solve all other challenges, too Set up complete infrastructure
  • 37. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Infrastructure Infrastructure
  • 38. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Infrastructure perl64.org - Benchmark machine Rent dedicated machine 6-core AMD Opteron 4180 Without any running services No private data, for relaxed access perlformance.net - Tapper application speed.perlformance.net - Codespeed application
  • 39. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Single Run Builds Perl from git inject CPAN toolchain Perl 5.8 .. blead Installs Benchmark::Perl::Formance Installs Tapper::TestSuite::Benchmark::Perl::Formance Runs tapper-testsuite-benchmark-perl-formance runs benchmark-perlformance outstyle=yaml tapdescription=perlformance codespeed adds meta information for Tapper sends report to Tapper server
  • 40. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Multiple runs Tapper
  • 41. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper Test infrastructure, open sourced by AMD in 2011 Overview: http://developer.amd.com/zones/opensource/AMDTapper Source: http://github.com/amd Productized: Starterkit/Deployment, Docs, Wiki
  • 42. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper Why Tapper? Tapper == TAP database + automation + scheduler Query API for detailed data forensics see my YAPC::EU 2009 presentation Cinderella 'TAP - The lazy evaluation sisters of TAP::Parser http://xrl.us/lazytap (PDF)
  • 43. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper Why Tapper? Schedule / intermix dierent use-cases auto-rerun for blead/threads auto-rerun for blead/nothreads specic commits completely dierent stu I add later (Perl6 benchmarks?, smoke tests?) Have bandwidth ratio for each, eg. more non-threaded than threaded Advanced automation support, timeout handling, etc. Frontends to start single runs cmdline + webGUI with requested options (commitid, threads, 64bit) Pass-through data chunks to Codespeed application
  • 44. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Codespeed application http://github.com/tobami/codespeed Web application Render benchmark graphs Show commit/meta information Comparison graphs, baselines, etc. Can handle git repos
  • 45. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Own CPAN mirror http://perlformance.net/CPAN To guarantee no unexpected changes slower/faster/break
  • 46. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Summary Summary
  • 47. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Summary I have benchmarks I have automatic Perl + CPAN setup I have applications for complete infrastructure I have dedicated benchmarking server I have dedicated CPAN mirror Polished in many details TODO : 1. Re-setup after server went mental 2. Allow users to request benchmark runs
  • 48. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Bonus Screenshots Bonus Screenshots
  • 49. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper at http://perlformance.net
  • 50. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper - Overview lists
  • 51. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper - Metainfo
  • 52. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper - Metainfo
  • 53. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Tapper - Tracked data
  • 54. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Codespeed at http://speed.perlformance.net
  • 55. Abstract Motivation Measuring Workloads Perl::Formance Challenges Infrastructure Summary Thanks. Thanks.