This patch series is built on top of cc/perf-run-config which recently
graduated to master.

It makes it possible to send perf results to a Codespeed server. See
https://github.com/tobami/codespeed/ and web sites like
http://speed.pypy.org/ which are using Codespeed.

The end goal would be to have such a server always available to track
how the different git commands perform over time on different kind of
repos (small, medium, large, ...) with different optimizations on and
off (split-index, libpcre2, BLK_SHA1, ...)

With this series and a config file like:

$ cat perf.conf
[perf]
        dirsOrRevs = v2.12.0 v2.13.0
        repeatCount = 10
        sendToCodespeed = http://localhost:8000
        repoName = Git repo
[perf "with libpcre"]
        makeOpts = "DEVELOPER=1 USE_LIBPCRE=YesPlease"
[perf "without libpcre"]
        makeOpts = "DEVELOPER=1"

One should be able to just launch:

$ ./run --config perf.conf p7810-grep.sh

and then get nice graphs in a Codespeed instance running on
http://localhost:8000.

Caveat
~~~~~~

For now one has to create the "Git repo" environment in the Codespeed
admin interface. (We send the perf.repoName config variable in the
"environment" Codespeed field.) This is because Codespeed requires the
environment fields to be created and does not provide a simple way to
create these fields programmatically.

There are discussions on a Codespeed issue
(https://github.com/tobami/codespeed/issues/232) about creating a
proper API for Codespeed that could address this problem in the
future.

Changes since previous version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  - Fixed the way the 'executable' field sent to Codespeed is set in
    `perf/aggregate.perl` in patch 3/7. We now use `uname -s -m` to
    which we concatenate the perf.repoName config value if it is set,
    as suggested by Junio and Eric.

  - Fixed the name of the GIT_PERF_REPO_NAME variable in patches 3/7
    and 7/7. It was GIT_TEST_REPO_NAME in some places.

  - Fixed how the conf_opt argument is added to the
    get_var_from_env_or_config() function in patch 4/7. It was added
    as the last, so fifth, argument, but it is simpler and makes more
    sense to keep the default value argument as the last argument, so
    now the conf_opt argument is added as the fourth argument.

  - What patch 4/7 did was previously done in 2 patches in the
    previous version (patches 4/8 and 5/8), but as we are not doing
    exactly the same thing (see the above item) it is simpler to do it
    in only one patch instead of two.

  - We now use the --int type specifier when getting the
    perf.repeatCount config variable in patch 4/7.

Links
~~~~~

This patch series:

https://github.com/chriscool/git/commits/codespeed

Previous version (v1):

https://github.com/chriscool/git/commits/codespeed1

Discussions about v1:

https://public-inbox.org/git/cap8ufd3q4h-aybdabspow948lqyvydwz1hlpad+kr9zpxvz...@mail.gmail.com/

Discussions about the cc/perf-run-config patch series:

v1: https://public-inbox.org/git/20170713065050.19215-1-chrisc...@tuxfamily.org/
v2: 
https://public-inbox.org/git/cap8ufd2j-ufh+9awz91gtz-jusq7euoexmguro59vpf29jx...@mail.gmail.com/

Christian Couder (7):
  perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}
  perf/aggregate: refactor printing results
  perf/aggregate: implement codespeed JSON output
  perf/run: add conf_opts argument to get_var_from_env_or_config()
  perf/run: learn about perf.codespeedOutput
  perf/run: learn to send output to codespeed server
  perf/run: read GIT_TEST_REPO_NAME from perf.repoName

 t/perf/aggregate.perl | 163 +++++++++++++++++++++++++++++++++++---------------
 t/perf/run            |  31 ++++++++--
 2 files changed, 140 insertions(+), 54 deletions(-)

-- 
2.15.1.361.g8b07d831d0

Reply via email to