Skip to content

Commit 9146dbb

Browse files
committed
Improved Redis connection pool setup. Further logging on keyrange in core pkg
1 parent 45a7991 commit 9146dbb

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

db/redis/db.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ const (
264264
redisReadTimeout = "redis.read_timeout"
265265
redisWriteTimeout = "redis.write_timeout"
266266
redisPoolSize = "redis.pool_size"
267+
redisPoolSizeDefault = 0
267268
redisMinIdleConns = "redis.min_idle_conns"
268269
redisMaxConnAge = "redis.max_conn_age"
269270
redisPoolTimeout = "redis.pool_timeout"
@@ -292,23 +293,28 @@ func parseTLS(p *properties.Properties) *tls.Config {
292293

293294
func getOptionsSingle(p *properties.Properties) *goredis.Options {
294295
opts := &goredis.Options{}
295-
opts.Network = p.GetString(redisNetwork, redisNetworkDefault)
296+
296297
opts.Addr = p.GetString(redisAddr, redisAddrDefault)
297-
opts.Password, _ = p.Get(redisPassword)
298298
opts.DB = p.GetInt(redisDB, 0)
299+
opts.Network = p.GetString(redisNetwork, redisNetworkDefault)
300+
opts.Password, _ = p.Get(redisPassword)
299301
opts.MaxRetries = p.GetInt(redisMaxRetries, 0)
300302
opts.MinRetryBackoff = p.GetDuration(redisMinRetryBackoff, time.Millisecond*8)
301303
opts.MaxRetryBackoff = p.GetDuration(redisMaxRetryBackoff, time.Millisecond*512)
302304
opts.DialTimeout = p.GetDuration(redisDialTimeout, time.Second*5)
303305
opts.ReadTimeout = p.GetDuration(redisReadTimeout, time.Second*3)
304306
opts.WriteTimeout = p.GetDuration(redisWriteTimeout, opts.ReadTimeout)
305-
opts.PoolSize = p.GetInt(redisPoolSize, 10)
307+
opts.PoolSize = p.GetInt(redisPoolSize, redisPoolSizeDefault)
308+
threadCount := p.MustGetInt("threadcount")
309+
if opts.PoolSize == 0 {
310+
opts.PoolSize = threadCount
311+
fmt.Println(fmt.Sprintf("Setting %s=%d (from <threadcount>) given you haven't specified a value.", redisPoolSize, opts.PoolSize))
312+
}
306313
opts.MinIdleConns = p.GetInt(redisMinIdleConns, 0)
307314
opts.MaxConnAge = p.GetDuration(redisMaxConnAge, 0)
308315
opts.PoolTimeout = p.GetDuration(redisPoolTimeout, time.Second+opts.ReadTimeout)
309316
opts.IdleTimeout = p.GetDuration(redisIdleTimeout, time.Minute*5)
310317
opts.IdleCheckFrequency = p.GetDuration(redisIdleCheckFreq, time.Minute)
311-
312318
opts.TLSConfig = parseTLS(p)
313319

314320
return opts
@@ -330,7 +336,12 @@ func getOptionsCluster(p *properties.Properties) *goredis.ClusterOptions {
330336
opts.DialTimeout = p.GetDuration(redisDialTimeout, time.Second*5)
331337
opts.ReadTimeout = p.GetDuration(redisReadTimeout, time.Second*3)
332338
opts.WriteTimeout = p.GetDuration(redisWriteTimeout, opts.ReadTimeout)
333-
opts.PoolSize = p.GetInt(redisPoolSize, 10)
339+
opts.PoolSize = p.GetInt(redisPoolSize, redisPoolSizeDefault)
340+
threadCount := p.MustGetInt("threadcount")
341+
if opts.PoolSize == 0 {
342+
opts.PoolSize = threadCount
343+
fmt.Println(fmt.Sprintf("Setting %s=%d (from <threadcount>) given you haven't specified a value.", redisPoolSize, opts.PoolSize))
344+
}
334345
opts.MinIdleConns = p.GetInt(redisMinIdleConns, 0)
335346
opts.MaxConnAge = p.GetDuration(redisMaxConnAge, 0)
336347
opts.PoolTimeout = p.GetDuration(redisPoolTimeout, time.Second+opts.ReadTimeout)

pkg/workload/core.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -408,10 +408,7 @@ func (c *core) nextKeyNum(state *coreState) int64 {
408408
keyNum = c.transactionInsertKeySequence.Last() - c.keyChooser.Next(r)
409409
}
410410
} else {
411-
keyNum = math.MaxInt64
412-
for keyNum > c.transactionInsertKeySequence.Last() {
413-
keyNum = c.keyChooser.Next(r)
414-
}
411+
keyNum = c.keyChooser.Next(r)
415412
}
416413
return keyNum
417414
}
@@ -650,31 +647,35 @@ func (coreCreator) Create(p *properties.Properties) (ycsb.Workload, error) {
650647

651648
c.keySequence = generator.NewCounter(insertStart)
652649
c.operationChooser = createOperationGenerator(p)
650+
var keyrangeLowerBound int64 = insertStart
651+
var keyrangeUpperBound int64 = insertStart + insertCount - 1
653652

654653
c.transactionInsertKeySequence = generator.NewAcknowledgedCounter(c.recordCount)
655654
switch requestDistrib {
656655
case "uniform":
657-
c.keyChooser = generator.NewUniform(insertStart, insertStart+insertCount-1)
656+
c.keyChooser = generator.NewUniform(keyrangeLowerBound, keyrangeUpperBound)
658657
case "sequential":
659-
c.keyChooser = generator.NewSequential(insertStart, insertStart+insertCount-1)
658+
c.keyChooser = generator.NewSequential(keyrangeLowerBound, keyrangeUpperBound)
660659
case "zipfian":
661660
insertProportion := p.GetFloat64(prop.InsertProportion, prop.InsertProportionDefault)
662661
opCount := p.GetInt64(prop.OperationCount, 0)
663662
expectedNewKeys := int64(float64(opCount) * insertProportion * 2.0)
664-
c.keyChooser = generator.NewScrambledZipfian(insertStart, insertStart+insertCount+expectedNewKeys, generator.ZipfianConstant)
663+
keyrangeUpperBound = insertStart + insertCount + expectedNewKeys
664+
c.keyChooser = generator.NewScrambledZipfian(keyrangeLowerBound, keyrangeUpperBound, generator.ZipfianConstant)
665665
case "latest":
666666
c.keyChooser = generator.NewSkewedLatest(c.transactionInsertKeySequence)
667667
case "hotspot":
668668
hotsetFraction := p.GetFloat64(prop.HotspotDataFraction, prop.HotspotDataFractionDefault)
669669
hotopnFraction := p.GetFloat64(prop.HotspotOpnFraction, prop.HotspotOpnFractionDefault)
670-
c.keyChooser = generator.NewHotspot(insertStart, insertStart+insertCount-1, hotsetFraction, hotopnFraction)
670+
c.keyChooser = generator.NewHotspot(keyrangeLowerBound, keyrangeUpperBound, hotsetFraction, hotopnFraction)
671671
case "exponential":
672672
percentile := p.GetFloat64(prop.ExponentialPercentile, prop.ExponentialPercentileDefault)
673673
frac := p.GetFloat64(prop.ExponentialFrac, prop.ExponentialFracDefault)
674674
c.keyChooser = generator.NewExponential(percentile, float64(c.recordCount)*frac)
675675
default:
676676
util.Fatalf("unknown request distribution %s", requestDistrib)
677677
}
678+
fmt.Println(fmt.Sprintf("Using request distribution '%s' a keyrange of [%d %d]", requestDistrib, keyrangeLowerBound, keyrangeUpperBound))
678679

679680
c.fieldChooser = generator.NewUniform(0, c.fieldCount-1)
680681
switch scanLengthDistrib {

0 commit comments

Comments
 (0)