Skip to content

Commit

Permalink
p2p: reduce buffering on channels (#6609)
Browse files Browse the repository at this point in the history
Having smaller buffers in each reactor/channel will mean that there will be fewer stale messages.
  • Loading branch information
tychoish committed Jun 24, 2021
1 parent 10d174a commit 917180d
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 43 deletions.
5 changes: 2 additions & 3 deletions internal/blockchain/v0/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,9 @@ var (
ID: byte(BlockchainChannel),
Priority: 5,
SendQueueCapacity: 1000,
RecvBufferCapacity: 50 * 4096,
RecvBufferCapacity: 1024,
RecvMessageCapacity: bc.MaxMsgSize,

MaxSendBytes: 100,
MaxSendBytes: 100,
},
},
}
Expand Down
2 changes: 1 addition & 1 deletion internal/blockchain/v2/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ func (r *BlockchainReactor) GetChannels() []*p2p.ChannelDescriptor {
ID: BlockchainChannel,
Priority: 5,
SendQueueCapacity: 2000,
RecvBufferCapacity: 50 * 4096,
RecvBufferCapacity: 1024,
RecvMessageCapacity: bc.MaxMsgSize,
},
}
Expand Down
35 changes: 16 additions & 19 deletions internal/consensus/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ var (
MsgType: new(tmcons.Message),
Descriptor: &p2p.ChannelDescriptor{
ID: byte(StateChannel),
Priority: 6,
SendQueueCapacity: 100,
Priority: 8,
SendQueueCapacity: 64,
RecvMessageCapacity: maxMsgSize,

MaxSendBytes: 12000,
RecvBufferCapacity: 128,
MaxSendBytes: 12000,
},
},
DataChannel: {
Expand All @@ -47,36 +47,33 @@ var (
// stuff. Once we gossip the whole block there is nothing left to send
// until next height or round.
ID: byte(DataChannel),
Priority: 10,
SendQueueCapacity: 100,
RecvBufferCapacity: 50 * 4096,
Priority: 12,
SendQueueCapacity: 64,
RecvBufferCapacity: 512,
RecvMessageCapacity: maxMsgSize,

MaxSendBytes: 40000,
MaxSendBytes: 40000,
},
},
VoteChannel: {
MsgType: new(tmcons.Message),
Descriptor: &p2p.ChannelDescriptor{
ID: byte(VoteChannel),
Priority: 7,
SendQueueCapacity: 100,
RecvBufferCapacity: 100 * 100,
Priority: 10,
SendQueueCapacity: 64,
RecvBufferCapacity: 128,
RecvMessageCapacity: maxMsgSize,

MaxSendBytes: 150,
MaxSendBytes: 150,
},
},
VoteSetBitsChannel: {
MsgType: new(tmcons.Message),
Descriptor: &p2p.ChannelDescriptor{
ID: byte(VoteSetBitsChannel),
Priority: 1,
SendQueueCapacity: 2,
RecvBufferCapacity: 1024,
Priority: 5,
SendQueueCapacity: 8,
RecvBufferCapacity: 128,
RecvMessageCapacity: maxMsgSize,

MaxSendBytes: 50,
MaxSendBytes: 50,
},
},
}
Expand Down
4 changes: 2 additions & 2 deletions internal/evidence/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ var (
ID: byte(EvidenceChannel),
Priority: 6,
RecvMessageCapacity: maxMsgSize,

MaxSendBytes: 400,
RecvBufferCapacity: 32,
MaxSendBytes: 400,
},
},
}
Expand Down
4 changes: 2 additions & 2 deletions internal/mempool/v0/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,8 @@ func GetChannelShims(config *cfg.MempoolConfig) map[p2p.ChannelID]*p2p.ChannelDe
ID: byte(mempool.MempoolChannel),
Priority: 5,
RecvMessageCapacity: batchMsg.Size(),

MaxSendBytes: 5000,
RecvBufferCapacity: 128,
MaxSendBytes: 5000,
},
},
}
Expand Down
4 changes: 2 additions & 2 deletions internal/mempool/v1/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ func GetChannelShims(config *cfg.MempoolConfig) map[p2p.ChannelID]*p2p.ChannelDe
ID: byte(mempool.MempoolChannel),
Priority: 5,
RecvMessageCapacity: batchMsg.Size(),

MaxSendBytes: 5000,
RecvBufferCapacity: 128,
MaxSendBytes: 5000,
},
},
}
Expand Down
5 changes: 3 additions & 2 deletions internal/p2p/pex/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ func ChannelDescriptor() conn.ChannelDescriptor {
Priority: 1,
SendQueueCapacity: 10,
RecvMessageCapacity: maxMsgSize,

MaxSendBytes: 200,
RecvBufferCapacity: 32,
MaxSendBytes: 200,
}
}

Expand Down Expand Up @@ -417,6 +417,7 @@ func (r *ReactorV2) sendRequestForPeers() {
// no peers are available
r.Logger.Debug("no available peers to send request to, waiting...")
r.nextRequestTime = time.Now().Add(noAvailablePeersWaitPeriod)

return
}
var peerID types.NodeID
Expand Down
6 changes: 1 addition & 5 deletions internal/p2p/router.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
"github.com/tendermint/tendermint/types"
)

const queueBufferDefault = 4096
const queueBufferDefault = 32

// ChannelID is an arbitrary channel ID.
type ChannelID uint16
Expand Down Expand Up @@ -365,10 +365,6 @@ func (r *Router) createQueueFactory() (func(int) queue, error) {
// wrapper message. The caller may provide a size to make the channel buffered,
// which internally makes the inbound, outbound, and error channel buffered.
func (r *Router) OpenChannel(chDesc ChannelDescriptor, messageType proto.Message, size int) (*Channel, error) {
if size == 0 {
size = queueBufferDefault
}

r.channelMtx.Lock()
defer r.channelMtx.Unlock()

Expand Down
12 changes: 6 additions & 6 deletions internal/statesync/reactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ var (
Priority: 6,
SendQueueCapacity: 10,
RecvMessageCapacity: snapshotMsgSize,

MaxSendBytes: 400,
RecvBufferCapacity: 128,
MaxSendBytes: 400,
},
},
ChunkChannel: {
Expand All @@ -52,8 +52,8 @@ var (
Priority: 3,
SendQueueCapacity: 4,
RecvMessageCapacity: chunkMsgSize,

MaxSendBytes: 400,
RecvBufferCapacity: 128,
MaxSendBytes: 400,
},
},
LightBlockChannel: {
Expand All @@ -63,8 +63,8 @@ var (
Priority: 2,
SendQueueCapacity: 10,
RecvMessageCapacity: lightBlockMsgSize,

MaxSendBytes: 400,
RecvBufferCapacity: 128,
MaxSendBytes: 400,
},
},
}
Expand Down
2 changes: 1 addition & 1 deletion node/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -698,7 +698,7 @@ func createPEXReactorV2(
router *p2p.Router,
) (*pex.ReactorV2, error) {

channel, err := router.OpenChannel(pex.ChannelDescriptor(), &protop2p.PexMessage{}, 4096)
channel, err := router.OpenChannel(pex.ChannelDescriptor(), &protop2p.PexMessage{}, 128)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 917180d

Please sign in to comment.