Skip to content
This repository has been archived by the owner on Aug 13, 2019. It is now read-only.

[WIP] Add benchmarks #240

Closed
wants to merge 3 commits into from
Closed

Conversation

gouthamve
Copy link
Collaborator

@gouthamve gouthamve commented Dec 29, 2017

➜  tsdb git:(master) ✗ go test -run=XXX -bench=EQS 
goos: linux
goarch: amd64
pkg: github.com/prometheus/tsdb
BenchmarkInMemQueries_Series_1M_EQSelector_1_NoExpansion-8       	       5	 297650662 ns/op	 4653936 B/op	      34 allocs/op
BenchmarkInMemQueries_Series_1M_EQSelector_1_Expansion-8         	       3	 390691429 ns/op	76654000 B/op	 1000036 allocs/op
BenchmarkInMemQueries_Series_1M_EQSelector_2_NoExpansion-8       	     100	  19728340 ns/op	  386016 B/op	      27 allocs/op
BenchmarkInMemQueries_Series_1M_EQSelector_2_Expansion-8         	      50	  27937118 ns/op	 7586080 B/op	  100029 allocs/op
BenchmarkInMemQueries_Series_1M_EQSelector_3_NoExpansion-8       	    2000	   1089713 ns/op	   16240 B/op	      21 allocs/op
BenchmarkInMemQueries_Series_1M_EQSelector_3_Expansion-8         	    1000	   2383873 ns/op	  736304 B/op	   10023 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_1_NoExpansion-8   	  100000	     16793 ns/op	     560 B/op	       9 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_1_Expansion-8     	      10	 136797602 ns/op	92003316 B/op	 1300018 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_2_NoExpansion-8   	   50000	     31750 ns/op	     672 B/op	      12 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_2_Expansion-8     	     100	  15309107 ns/op	 9201015 B/op	  130014 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_3_NoExpansion-8   	   30000	     47446 ns/op	     816 B/op	      15 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_3_Expansion-8     	    1000	   1526049 ns/op	  920906 B/op	   13017 allocs/op
PASS
ok  	github.com/prometheus/tsdb	407.064s

This change is Reviewable

Signed-off-by: Goutham Veeramachaneni <cs14btech11014@iith.ac.in>
@gouthamve gouthamve changed the title Add benchmarks [WIP] Add benchmarks Dec 29, 2017
@gouthamve
Copy link
Collaborator Author

gouthamve commented Dec 30, 2017

Added benchmarks which stitch together the queries across blocks. Slowed down linearly with the number of blocks.

BenchmarkPersistedQueries_Series_1M_EQSelector_1_NoExpansion-8           	 3000000	     15836 ns/op	     400 B/op	       5 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_1_Expansion-8             	     300	 153037510 ns/op	92025183 B/op	 1300055 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_2_NoExpansion-8           	 1000000	     31488 ns/op	     512 B/op	       8 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_2_Expansion-8             	    3000	  16091378 ns/op	 9203150 B/op	  130014 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_3_NoExpansion-8           	 1000000	     46985 ns/op	     656 B/op	      11 allocs/op
BenchmarkPersistedQueries_Series_1M_EQSelector_3_Expansion-8             	   30000	   1736169 ns/op	  920970 B/op	   13013 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_EQSelector_1_NoExpansion-8   	 1000000	     55631 ns/op	    5036 B/op	      69 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_EQSelector_1_Expansion-8     	     100	 496277503 ns/op	255414319 B/op	 3800431 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_EQSelector_2_NoExpansion-8   	  500000	    110538 ns/op	    5372 B/op	      78 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_EQSelector_2_Expansion-8     	    1000	  51262058 ns/op	25542929 B/op	  380072 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_EQSelector_3_NoExpansion-8   	  300000	    168191 ns/op	    5803 B/op	      87 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_EQSelector_3_Expansion-8     	   10000	   5558311 ns/op	 2556426 B/op	   38045 allocs/op


BenchmarkPersistedQueries_Series_1M_RESelector_1_NoExpansion-8           	 1000000	     49407 ns/op	    3792 B/op	     136 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_1_Expansion-8             	     300	 135023707 ns/op	66422086 B/op	 1200173 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_NoExpansion-8           	  500000	     88186 ns/op	    7376 B/op	     272 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_Expansion-8             	    3000	  16260850 ns/op	 7313574 B/op	  132278 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_NoExpansion-8           	  300000	    171849 ns/op	   14400 B/op	     446 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_Expansion-8             	   10000	   6688048 ns/op	 2651988 B/op	   48101 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_NoExpansion-8   	  300000	    162830 ns/op	   13940 B/op	     457 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_Expansion-8     	     100	 424142649 ns/op	178564115 B/op	 3500708 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_NoExpansion-8   	  200000	    303785 ns/op	   24698 B/op	     865 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_Expansion-8     	    1000	  56539414 ns/op	19664063 B/op	  385857 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_NoExpansion-8   	  100000	    738669 ns/op	   45787 B/op	    1387 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_Expansion-8     	    2000	  24416681 ns/op	 7134001 B/op	  140342 allocs/op

Signed-off-by: Goutham Veeramachaneni <cs14btech11014@iith.ac.in>
@gouthamve
Copy link
Collaborator Author

Postings lazily expanded:

➜  tsdb git:(bench) ✗ go test -run=XXX -bench="Pers.*RES" -benchtime=30s -timeout 99999s
goos: linux
goarch: amd64
pkg: github.com/prometheus/tsdb
BenchmarkPersistedQueries_Series_1M_RESelector_1_NoExpansion-8           	 1000000	     66759 ns/op	    3792 B/op	     136 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_1_Expansion-8             	     300	 183677815 ns/op	66422514 B/op	 1200174 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_NoExpansion-8           	  500000	    126899 ns/op	    7376 B/op	     272 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_Expansion-8             	    2000	  23752705 ns/op	 7313527 B/op	  132277 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_NoExpansion-8           	  200000	    275691 ns/op	   14400 B/op	     446 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_Expansion-8             	    5000	   9983623 ns/op	 2652012 B/op	   48101 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_NoExpansion-8   	  200000	    231159 ns/op	   13938 B/op	     457 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_Expansion-8     	     100	 560997587 ns/op	178561927 B/op	 3500704 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_NoExpansion-8   	  100000	    444588 ns/op	   24698 B/op	     865 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_Expansion-8     	    1000	  70224747 ns/op	19663488 B/op	  385856 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_NoExpansion-8   	   50000	   1120270 ns/op	   45783 B/op	    1387 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_Expansion-8     	    2000	  24494249 ns/op	 7134136 B/op	  140343 allocs/op
PASS
ok  	github.com/prometheus/tsdb	1742.311s

Postings expanded initially:

➜  tsdb git:(bench) ✗ go test -run=XXX -bench="Pers.*RES" -benchtime=30s -timeout 99999s
goos: linux
goarch: amd64
pkg: github.com/prometheus/tsdb
BenchmarkPersistedQueries_Series_1M_RESelector_1_NoExpansion-8           	   10000	   4179558 ns/op	 4658167 B/op	     167 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_1_Expansion-8             	     300	 136080805 ns/op	71083896 B/op	 1200218 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_NoExpansion-8           	   20000	   2424173 ns/op	  393709 B/op	     293 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_Expansion-8             	    2000	  20570942 ns/op	 7700142 B/op	  132299 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_NoExpansion-8           	   20000	   2245289 ns/op	  130399 B/op	     463 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_Expansion-8             	    5000	   8806588 ns/op	 2768089 B/op	   48118 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_NoExpansion-8   	    3000	  15657315 ns/op	13980175 B/op	     556 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_Expansion-8     	     100	 468218545 ns/op	192545348 B/op	 3500836 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_NoExpansion-8   	    5000	   8052530 ns/op	 1184659 B/op	     929 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_Expansion-8     	    1000	  54333970 ns/op	20825928 B/op	  385926 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_NoExpansion-8   	    5000	   7432166 ns/op	  394029 B/op	    1438 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_Expansion-8     	    2000	  26195864 ns/op	 7482877 B/op	  140395 allocs/op
PASS
ok  	github.com/prometheus/tsdb	1442.792s

Sometimes it's better but in the last case it ended up being worse. @fabxc

Signed-off-by: Goutham Veeramachaneni <cs14btech11014@iith.ac.in>
@gouthamve
Copy link
Collaborator Author

Update with 10 blocks:

Lazy expansion:

➜  tsdb git:(bench) ✗ go test -run=XXX -bench="Pers.*RES" -benchtime=30s -timeout 99999s
goos: linux
goarch: amd64
pkg: github.com/prometheus/tsdb
BenchmarkPersistedQueries_Series_1M_RESelector_1_Expansion-8            	     300	 129686805 ns/op	66422880 B/op	 1200174 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_Expansion-8            	    3000	  16975375 ns/op	 7313547 B/op	  132278 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_Expansion-8            	   10000	   7607723 ns/op	 2651987 B/op	   48101 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_Expansion-8    	     100	 457491636 ns/op	178563726 B/op	 3500707 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_Expansion-8    	    1000	  56861207 ns/op	19663910 B/op	  385857 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_Expansion-8    	    2000	  26012945 ns/op	 7133918 B/op	  140342 allocs/op
BenchmarkPersistedQueries_10Blocks_Series_1M_RESelector_1_Expansion-8   	     100	 461633464 ns/op	178562803 B/op	 3500705 allocs/op
BenchmarkPersistedQueries_10Blocks_Series_1M_RESelector_2_Expansion-8   	    1000	  49650717 ns/op	19663409 B/op	  385856 allocs/op
BenchmarkPersistedQueries_10Blocks_Series_1M_RESelector_3_Expansion-8   	    2000	  21535328 ns/op	 7134296 B/op	  140343 allocs/op
PASS
ok  	github.com/prometheus/tsdb	1130.063s

Postings expanded initially:

➜  tsdb git:(bench) ✗ go test -run=XXX -bench="Pers.*RES" -benchtime=30s -timeout 99999s
goos: linux
goarch: amd64
pkg: github.com/prometheus/tsdb
BenchmarkPersistedQueries_Series_1M_RESelector_1_Expansion-8            	     300	 129024565 ns/op	71083153 B/op	 1200217 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_2_Expansion-8            	    3000	  16687652 ns/op	 7700121 B/op	  132299 allocs/op
BenchmarkPersistedQueries_Series_1M_RESelector_3_Expansion-8            	   10000	   6728670 ns/op	 2768045 B/op	   48118 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_1_Expansion-8    	     100	 419232545 ns/op	192542643 B/op	 3500830 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_2_Expansion-8    	    1000	  49837803 ns/op	20825317 B/op	  385925 allocs/op
BenchmarkPersistedQueries_3Blocks_Series_1M_RESelector_3_Expansion-8    	    2000	  20651045 ns/op	 7482882 B/op	  140395 allocs/op
BenchmarkPersistedQueries_10Blocks_Series_1M_RESelector_1_Expansion-8   	     100	 425725439 ns/op	192539824 B/op	 3500825 allocs/op
BenchmarkPersistedQueries_10Blocks_Series_1M_RESelector_2_Expansion-8   	    1000	  49175584 ns/op	20825426 B/op	  385925 allocs/op
BenchmarkPersistedQueries_10Blocks_Series_1M_RESelector_3_Expansion-8   	    2000	  20114671 ns/op	 7482500 B/op	  140394 allocs/op
PASS
ok  	github.com/prometheus/tsdb	1049.781s

There are mostly gains here, sometimes upto 24%!

@gouthamve
Copy link
Collaborator Author

@fabxc Your thoughts on how I can proceed with this PR?

@krasi-georgiev
Copy link
Contributor

superseded by #467

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants