mirror of
https://github.com/golang/go
synced 2024-09-30 02:34:40 -06:00
sync: add PoolStarvation benchmark
This benchmark simulates object starvation in order to force Ps to steal objects from other Ps. Extracted from CL 314229. Change-Id: Iee31df355ba04d80fbd91c4414e397a375e6d6d7 Reviewed-on: https://go-review.googlesource.com/c/go/+/360256 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Trust: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
b5a5b7bfb1
commit
5f1bcd1bc2
@ -270,6 +270,26 @@ func BenchmarkPoolOverflow(b *testing.B) {
|
||||
})
|
||||
}
|
||||
|
||||
// Simulate object starvation in order to force Ps to steal objects
|
||||
// from other Ps.
|
||||
func BenchmarkPoolStarvation(b *testing.B) {
|
||||
var p Pool
|
||||
count := 100
|
||||
// Reduce number of putted objects by 33 %. It creates objects starvation
|
||||
// that force P-local storage to steal objects from other Ps.
|
||||
countStarved := count - int(float32(count)*0.33)
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
for b := 0; b < countStarved; b++ {
|
||||
p.Put(1)
|
||||
}
|
||||
for b := 0; b < count; b++ {
|
||||
p.Get()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
var globalSink interface{}
|
||||
|
||||
func BenchmarkPoolSTW(b *testing.B) {
|
||||
|
Loading…
Reference in New Issue
Block a user