Skip to content

MADlib Benchmark Requirements

agorajek edited this page Aug 17, 2011 · 38 revisions

Intro

In order to well understand and be able to improve the performance of MADlib modules we need a proper benchmark framework. The purpose of this document is to lay out requirements for such a solution.

The main goals for MADlib benchmarks are:

  • Competitive comparison

    Our initial comparison targets should be R and Mahout. The following algorithms should be tested:

  • Regression tests

    We should keep a log book of current run-times and rerun the appropriate tests after any substantial modifications to existing modules.

  • Profiling & optimization

    MADlib benchmarks could potentially be very useful during ad-hoc profiling and optimization. Although it does not need to reinvent the performance metrics collection, as there are already tools for that.

General Requirements

In order to fulfill the above goals the MADlib benchmark tool should possess the following characteristics:

  • Portability

    It must run on all OS and DB platforms supported by MADlib.

  • Scalability

    It should be easy to scale the data size for a predefined test.

  • Repetitiveness

    It should be possible to rerun the performance test with identical starting conditions. This applies to both the data generation as well as the execution phase.

  • Modularity

    It should be easy to add new performance tests for new or existing modules.

  • Automation

    Execution of the benchmark (full or per module) should be easy to automate. Ideally this utility should be controlled from by single executable.

API Requirements

For each MADlib module performance test one should be able to define (possibly in a common config file):

  • Input Definition
  • Run-time call arguments

Both data generation and test execution should be timed and all information should be saved in a database table located in MADlib schema, e.g.:

TABLE madlib.benchmark (
    module          TEXT
    (runtime_args)
    (input_defintion) 
    dgen_start      TIMESTAMP
    dgen_end        TIMESTAMP
    exec_start      TIMESTAMP
    exec_end        TIMESTAMP 
)        

Comments:

  1. Because the benchmark tool requires connection to a database with MADlib extensions installed it is possible to think of it as an extension to madpack - the MADlib installer.

    madpack benchmark

Clone this wiki locally