From 9696c8997cb785c5f0d8f1a98d7da74b56a83e7c Mon Sep 17 00:00:00 2001 From: Angelo Capossele <angelocapossele@gmail.com> Date: Thu, 25 Jun 2020 12:12:28 +0100 Subject: [PATCH] Change worker count to use GOMAXPROCS (#549) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * âš¡ï¸ Reduce solidifier worker pool capacity * â™»ï¸ Use GOMAXPROCS * âš¡ï¸ Change worker count to use GOMAXPROCS * âš¡ï¸ Set DefaultRequestWorkerCount to GOMAXPROCS * 🚨 Fix linter warnings * â¬†ï¸ Update hive.go --- go.mod | 2 +- go.sum | 2 ++ packages/binary/messagelayer/messagerequester/constants.go | 4 ++-- .../messagelayer/messagerequester/messagerequester.go | 7 ++++++- packages/binary/messagelayer/tangle/tangle.go | 3 ++- packages/binary/messagelayer/test/data_payload_test.go | 2 +- packages/graph/graph.go | 2 +- plugins/analysis/client/metric_heartbeat.go | 2 +- plugins/analysis/dashboard/fpc_livefeed.go | 2 +- plugins/analysis/packet/metric_heartbeat_test.go | 2 +- plugins/remotelog/plugin.go | 2 +- tools/integration-tests/tester/go.mod | 2 +- tools/integration-tests/tester/go.sum | 2 ++ 13 files changed, 22 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 9124db72..ba78d62a 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/gobuffalo/packr/v2 v2.8.0 github.com/golang/protobuf v1.4.2 github.com/gorilla/websocket v1.4.2 - github.com/iotaledger/hive.go v0.0.0-20200622211038-2db5f8e0532d + github.com/iotaledger/hive.go v0.0.0-20200625105326-310ea88f1337 github.com/labstack/echo v3.3.10+incompatible github.com/labstack/gommon v0.3.0 github.com/magiconair/properties v1.8.1 diff --git a/go.sum b/go.sum index 18dfb3e4..de441943 100644 --- a/go.sum +++ b/go.sum @@ -231,6 +231,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/iotaledger/hive.go v0.0.0-20200622211038-2db5f8e0532d h1:cyxepG077Tg1wNfbhkRhXMK9WwaN4N0dDW7T8+d3oHA= github.com/iotaledger/hive.go v0.0.0-20200622211038-2db5f8e0532d/go.mod h1:42UvBc41QBsuM7z1P1fABMonTJb7kGqkzshRebClQvA= +github.com/iotaledger/hive.go v0.0.0-20200625105326-310ea88f1337 h1:F6PzAkymPcKr1vJVK3/80wiVovjkL47c9FMjUOesXGA= +github.com/iotaledger/hive.go v0.0.0-20200625105326-310ea88f1337/go.mod h1:42UvBc41QBsuM7z1P1fABMonTJb7kGqkzshRebClQvA= github.com/iotaledger/iota.go v1.0.0-beta.15 h1:HI8PqerEnO1CCIqmXHJ6zh1IaSFXU+S0qlUAEKshho8= github.com/iotaledger/iota.go v1.0.0-beta.15/go.mod h1:Rn6v5hLAn8YBaJlRu1ZQdPAgKlshJR1PTeLQaft2778= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= diff --git a/packages/binary/messagelayer/messagerequester/constants.go b/packages/binary/messagelayer/messagerequester/constants.go index 0378c9be..7d26d3e9 100644 --- a/packages/binary/messagelayer/messagerequester/constants.go +++ b/packages/binary/messagelayer/messagerequester/constants.go @@ -5,6 +5,6 @@ import ( ) const ( - DefaultRequestWorkerCount = 1024 - DefaultRetryInterval = 10 * time.Second + // DefaultRetryInterval defines the Default Retry Interval of the message requester. + DefaultRetryInterval = 10 * time.Second ) diff --git a/packages/binary/messagelayer/messagerequester/messagerequester.go b/packages/binary/messagelayer/messagerequester/messagerequester.go index 817a3f03..ce350f4b 100644 --- a/packages/binary/messagelayer/messagerequester/messagerequester.go +++ b/packages/binary/messagelayer/messagerequester/messagerequester.go @@ -1,13 +1,18 @@ package messagerequester import ( + "runtime" "sync" "time" + "github.com/iotaledger/goshimmer/packages/binary/messagelayer/message" "github.com/iotaledger/hive.go/async" "github.com/iotaledger/hive.go/events" +) - "github.com/iotaledger/goshimmer/packages/binary/messagelayer/message" +var ( + // DefaultRequestWorkerCount defines the Default Request Worker Count of the message reqeuster. + DefaultRequestWorkerCount = runtime.GOMAXPROCS(0) ) // MessageRequester takes care of requesting messages. diff --git a/packages/binary/messagelayer/tangle/tangle.go b/packages/binary/messagelayer/tangle/tangle.go index 1133c98a..24093509 100644 --- a/packages/binary/messagelayer/tangle/tangle.go +++ b/packages/binary/messagelayer/tangle/tangle.go @@ -2,6 +2,7 @@ package tangle import ( "container/list" + "runtime" "time" "github.com/iotaledger/hive.go/kvstore" @@ -65,7 +66,7 @@ func New(store kvstore.KVStore) (result *Tangle) { Events: *newEvents(), } - result.solidifierWorkerPool.Tune(1024) + result.solidifierWorkerPool.Tune(runtime.GOMAXPROCS(0)) return } diff --git a/packages/binary/messagelayer/test/data_payload_test.go b/packages/binary/messagelayer/test/data_payload_test.go index 30759328..03d30b27 100644 --- a/packages/binary/messagelayer/test/data_payload_test.go +++ b/packages/binary/messagelayer/test/data_payload_test.go @@ -19,7 +19,7 @@ import ( func BenchmarkVerifyDataMessages(b *testing.B) { var pool async.WorkerPool - pool.Tune(runtime.NumCPU() * 2) + pool.Tune(runtime.GOMAXPROCS(0)) factory := messagefactory.New(mapdb.NewMapDB(), []byte(messagelayer.DBSequenceNumber), identity.GenerateLocalIdentity(), messagefactory.TipSelectorFunc(func() (message.Id, message.Id) { return message.EmptyId, message.EmptyId })) diff --git a/packages/graph/graph.go b/packages/graph/graph.go index 3233b80b..3e354a77 100644 --- a/packages/graph/graph.go +++ b/packages/graph/graph.go @@ -78,7 +78,7 @@ func (nl nodes) AddEdge(a, b nodeID) { // Diameter is the maximum length of a shortest path in the network func (nl nodes) Diameter() int { - cpus := runtime.NumCPU() + cpus := runtime.GOMAXPROCS(0) numNodes := len(nl) nodesPerCPU := numNodes / cpus diff --git a/plugins/analysis/client/metric_heartbeat.go b/plugins/analysis/client/metric_heartbeat.go index eb23ddad..38d12f4e 100644 --- a/plugins/analysis/client/metric_heartbeat.go +++ b/plugins/analysis/client/metric_heartbeat.go @@ -37,7 +37,7 @@ func createMetricHeartbeat() *packet.MetricHeartbeat { OwnID: nodeID, OS: runtime.GOOS, Arch: runtime.GOARCH, - NumCPU: runtime.NumCPU(), + NumCPU: runtime.GOMAXPROCS(0), // TODO: replace this with only the CPU usage of the GoShimmer process. CPUUsage: func() (p float64) { percent, err := cpu.Percent(time.Second, false) diff --git a/plugins/analysis/dashboard/fpc_livefeed.go b/plugins/analysis/dashboard/fpc_livefeed.go index 00ee50a8..f99c0327 100644 --- a/plugins/analysis/dashboard/fpc_livefeed.go +++ b/plugins/analysis/dashboard/fpc_livefeed.go @@ -27,7 +27,7 @@ var ( fpcLiveFeedWorkerQueueSize = 300 fpcLiveFeedWorkerPool *workerpool.WorkerPool - fpcStoreFinalizedWorkerCount = runtime.NumCPU() + fpcStoreFinalizedWorkerCount = runtime.GOMAXPROCS(0) fpcStoreFinalizedWorkerQueueSize = 300 fpcStoreFinalizedWorkerPool *workerpool.WorkerPool diff --git a/plugins/analysis/packet/metric_heartbeat_test.go b/plugins/analysis/packet/metric_heartbeat_test.go index 2401da2a..c32d9320 100644 --- a/plugins/analysis/packet/metric_heartbeat_test.go +++ b/plugins/analysis/packet/metric_heartbeat_test.go @@ -19,7 +19,7 @@ func testMetricHeartbeat() *MetricHeartbeat { OwnID: nodeID[:], OS: runtime.GOOS, Arch: runtime.GOARCH, - NumCPU: runtime.NumCPU(), + NumCPU: runtime.GOMAXPROCS(0), CPUUsage: func() (p float64) { percent, err := cpu.Percent(time.Second, false) if err == nil { diff --git a/plugins/remotelog/plugin.go b/plugins/remotelog/plugin.go index 6d4e6f9a..fee33233 100644 --- a/plugins/remotelog/plugin.go +++ b/plugins/remotelog/plugin.go @@ -82,7 +82,7 @@ func configure(plugin *node.Plugin) { sendLogMsg(task.Param(0).(logger.Level), task.Param(1).(string), task.Param(2).(string)) task.Return(nil) - }, workerpool.WorkerCount(runtime.NumCPU()), workerpool.QueueSize(1000)) + }, workerpool.WorkerCount(runtime.GOMAXPROCS(0)), workerpool.QueueSize(1000)) } func run(plugin *node.Plugin) { diff --git a/tools/integration-tests/tester/go.mod b/tools/integration-tests/tester/go.mod index 0291136f..bf7684da 100644 --- a/tools/integration-tests/tester/go.mod +++ b/tools/integration-tests/tester/go.mod @@ -10,7 +10,7 @@ require ( github.com/docker/go-units v0.4.0 // indirect github.com/drand/drand v0.9.1 github.com/iotaledger/goshimmer v0.1.3 - github.com/iotaledger/hive.go v0.0.0-20200622211038-2db5f8e0532d + github.com/iotaledger/hive.go v0.0.0-20200625105326-310ea88f1337 github.com/mr-tron/base58 v1.2.0 github.com/opencontainers/go-digest v1.0.0 // indirect github.com/stretchr/testify v1.6.1 diff --git a/tools/integration-tests/tester/go.sum b/tools/integration-tests/tester/go.sum index b1ad3064..820b66d5 100644 --- a/tools/integration-tests/tester/go.sum +++ b/tools/integration-tests/tester/go.sum @@ -262,6 +262,8 @@ github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/iotaledger/hive.go v0.0.0-20200622211038-2db5f8e0532d h1:cyxepG077Tg1wNfbhkRhXMK9WwaN4N0dDW7T8+d3oHA= github.com/iotaledger/hive.go v0.0.0-20200622211038-2db5f8e0532d/go.mod h1:42UvBc41QBsuM7z1P1fABMonTJb7kGqkzshRebClQvA= +github.com/iotaledger/hive.go v0.0.0-20200625105326-310ea88f1337 h1:F6PzAkymPcKr1vJVK3/80wiVovjkL47c9FMjUOesXGA= +github.com/iotaledger/hive.go v0.0.0-20200625105326-310ea88f1337/go.mod h1:42UvBc41QBsuM7z1P1fABMonTJb7kGqkzshRebClQvA= github.com/iotaledger/iota.go v1.0.0-beta.15/go.mod h1:Rn6v5hLAn8YBaJlRu1ZQdPAgKlshJR1PTeLQaft2778= github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -- GitLab