Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Micro benchmark regularly and display benchmark result #25754

Closed
tiancaiamao opened this issue Jun 25, 2021 · 9 comments · Fixed by #25834
Closed

Micro benchmark regularly and display benchmark result #25754

tiancaiamao opened this issue Jun 25, 2021 · 9 comments · Fixed by #25834
Assignees
Labels
type/feature-request Categorizes issue or PR as related to a new feature.

Comments

@tiancaiamao
Copy link
Contributor

tiancaiamao commented Jun 25, 2021

Feature Request

Is your feature request related to a problem? Please describe:

We do not use the benchmark well.

Benchmarks can guide us the evaluation of the product performance.

  • We just cover the typical TPCH TPCC Sysbench test which is too high level.
  • We just run the benchmark tests before a new release.

But they are too high level.

Describe the feature you'd like:

I'd like to have some micro benchmarks and run them regularly.

For example, if we have a make bench command to run the micro benchmarks, and the result is collected,
and visualized, then we know the performance regression early.

Describe alternatives you've considered:

For example, there is a scheme benchmark website, https://ecraven.github.io/r7rs-benchmarks/
From which we can see the performance between different scheme compile implementation easily.

Another example is the rust pref https://perf.rust-lang.org/

I'd like TiDB to have something similar, there are may micro benchmarks and the result can be compared by day.

Teachability, Documentation, Adoption, Migration Strategy:

@tiancaiamao tiancaiamao added the type/feature-request Categorizes issue or PR as related to a new feature. label Jun 25, 2021
@tiancaiamao tiancaiamao self-assigned this Jun 25, 2021
@tiancaiamao
Copy link
Contributor Author

The performance regression by such kind of changes should be captured by the micro benchmark tikv/client-go#145

@tiancaiamao
Copy link
Contributor Author

And the point get query performance regression like this one #25573

@tiancaiamao
Copy link
Contributor Author

I manually run some regression tests and collect the data:

BenchmarkTableScan
BenchmarkStringIndexLookup

From this data, I can say apparently there are performance regression from 2021-06-08 to 2021-06-11

BenchmarkBasic

And from 2021-05-21 to 2021-05-26 BenchmarkBasic result become worse.

@tiancaiamao
Copy link
Contributor Author

The data is still generated manually, because I want to make sure it works, proof of concept

Later, I'll make it run automatically.

@tiancaiamao
Copy link
Contributor Author

B.T.W, golang also have a page about perf https://perf.golang.org/, but I dislike it. It's not visualized.

@tiancaiamao tiancaiamao changed the title Micro benchmarks and regularly display benchmark result Micro benchmark regularly and display benchmark result Jun 29, 2021
@tiancaiamao
Copy link
Contributor Author

The data of the last few months is now available here http://www.zenlife.tk:18081/
The final goal is to move it to perf page https://perf.pingcap.com/

@tiancaiamao
Copy link
Contributor Author

tiancaiamao commented Feb 14, 2022

2022-02-14

Performance regression of BenchmarkInsertIntoSelect

image

and BenchmarkIntegerIndexLookup

image

@bb7133
Copy link
Member

bb7133 commented Feb 15, 2022

BenchmarkInsertIntoSelect

@tiancaiamao Could you locate the PR/commit that introduces this regression?

@tiancaiamao
Copy link
Contributor Author

BenchmarkInsertIntoSelect

@tiancaiamao Could you locate the PR/commit that introduces this regression?

#32604 I create an issue for it. @bb7133

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/feature-request Categorizes issue or PR as related to a new feature.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants