e3a6de1554
Now that the write pool no longer executes blocking i/o operations, it is safe to reduce this number considerably. The write pool now only handles encoding and encryption of messages, making problem computationally bound and thus dependent on available CPUs. The descriptions of the workers configs is also updated to explain how users should set these on their on machines.
53 lines
1.7 KiB
Go
53 lines
1.7 KiB
Go
package lncfg
|
|
|
|
import "fmt"
|
|
|
|
const (
|
|
// DefaultReadWorkers is the default maximum number of concurrent
|
|
// workers used by the daemon's read pool.
|
|
DefaultReadWorkers = 100
|
|
|
|
// DefaultWriteWorkers is the default maximum number of concurrent
|
|
// workers used by the daemon's write pool.
|
|
DefaultWriteWorkers = 8
|
|
|
|
// DefaultSigWorkers is the default maximum number of concurrent workers
|
|
// used by the daemon's sig pool.
|
|
DefaultSigWorkers = 8
|
|
)
|
|
|
|
// Workers exposes CLI configuration for turning resources consumed by worker
|
|
// pools.
|
|
type Workers struct {
|
|
// Read is the maximum number of concurrent read pool workers.
|
|
Read int `long:"read" description:"Maximum number of concurrent read pool workers. This number should be proportional to the number of peers."`
|
|
|
|
// Write is the maximum number of concurrent write pool workers.
|
|
Write int `long:"write" description:"Maximum number of concurrent write pool workers. This number should be proportional to the number of CPUs on the host. "`
|
|
|
|
// Sig is the maximum number of concurrent sig pool workers.
|
|
Sig int `long:"sig" description:"Maximum number of concurrent sig pool workers. This number should be proportional to the number of CPUs on the host."`
|
|
}
|
|
|
|
// Validate checks the Workers configuration to ensure that the input values are
|
|
// sane.
|
|
func (w *Workers) Validate() error {
|
|
if w.Read <= 0 {
|
|
return fmt.Errorf("number of read workers (%d) must be "+
|
|
"positive", w.Read)
|
|
}
|
|
if w.Write <= 0 {
|
|
return fmt.Errorf("number of write workers (%d) must be "+
|
|
"positive", w.Write)
|
|
}
|
|
if w.Sig <= 0 {
|
|
return fmt.Errorf("number of sig workers (%d) must be "+
|
|
"positive", w.Sig)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// Compile-time constraint to ensure Workers implements the Validator interface.
|
|
var _ Validator = (*Workers)(nil)
|