Track time in relation to request size
Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
This commit is contained in:
parent
043e62ab63
commit
93176c91f4
@ -385,7 +385,7 @@ func (client *BlockSync) sendRequestToPeer(
|
|||||||
_ = stream.SetWriteDeadline(time.Now().Add(WRITE_REQ_DEADLINE))
|
_ = stream.SetWriteDeadline(time.Now().Add(WRITE_REQ_DEADLINE))
|
||||||
if err := cborutil.WriteCborRPC(stream, req); err != nil {
|
if err := cborutil.WriteCborRPC(stream, req); err != nil {
|
||||||
_ = stream.SetWriteDeadline(time.Time{})
|
_ = stream.SetWriteDeadline(time.Time{})
|
||||||
client.peerTracker.logFailure(peer, build.Clock.Since(connectionStart))
|
client.peerTracker.logFailure(peer, build.Clock.Since(connectionStart), req.Length)
|
||||||
// FIXME: Should we also remove peer here?
|
// FIXME: Should we also remove peer here?
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -398,7 +398,7 @@ func (client *BlockSync) sendRequestToPeer(
|
|||||||
bufio.NewReader(incrt.New(stream, READ_RES_MIN_SPEED, READ_RES_DEADLINE)),
|
bufio.NewReader(incrt.New(stream, READ_RES_MIN_SPEED, READ_RES_DEADLINE)),
|
||||||
&res)
|
&res)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
client.peerTracker.logFailure(peer, build.Clock.Since(connectionStart))
|
client.peerTracker.logFailure(peer, build.Clock.Since(connectionStart), req.Length)
|
||||||
return nil, xerrors.Errorf("failed to read blocksync response: %w", err)
|
return nil, xerrors.Errorf("failed to read blocksync response: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,7 +412,7 @@ func (client *BlockSync) sendRequestToPeer(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
client.peerTracker.logSuccess(peer, build.Clock.Since(connectionStart))
|
client.peerTracker.logSuccess(peer, build.Clock.Since(connectionStart), uint64(len(res.Chain)))
|
||||||
// FIXME: We should really log a success only after we validate the response.
|
// FIXME: We should really log a success only after we validate the response.
|
||||||
// It might be a bit hard to do.
|
// It might be a bit hard to do.
|
||||||
return &res, nil
|
return &res, nil
|
||||||
|
@ -98,8 +98,8 @@ func (bpt *bsPeerTracker) prefSortedPeers() []peer.ID {
|
|||||||
const (
|
const (
|
||||||
// xInvAlpha = (N+1)/2
|
// xInvAlpha = (N+1)/2
|
||||||
|
|
||||||
localInvAlpha = 5 // 86% of the value is the last 9
|
localInvAlpha = 10 // 86% of the value is the last 19
|
||||||
globalInvAlpha = 20 // 86% of the value is the last 39
|
globalInvAlpha = 25 // 86% of the value is the last 49
|
||||||
)
|
)
|
||||||
|
|
||||||
func (bpt *bsPeerTracker) logGlobalSuccess(dur time.Duration) {
|
func (bpt *bsPeerTracker) logGlobalSuccess(dur time.Duration) {
|
||||||
@ -124,7 +124,7 @@ func logTime(pi *peerStats, dur time.Duration) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bpt *bsPeerTracker) logSuccess(p peer.ID, dur time.Duration) {
|
func (bpt *bsPeerTracker) logSuccess(p peer.ID, dur time.Duration, reqSize uint64) {
|
||||||
bpt.lk.Lock()
|
bpt.lk.Lock()
|
||||||
defer bpt.lk.Unlock()
|
defer bpt.lk.Unlock()
|
||||||
|
|
||||||
@ -136,10 +136,10 @@ func (bpt *bsPeerTracker) logSuccess(p peer.ID, dur time.Duration) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pi.successes++
|
pi.successes++
|
||||||
logTime(pi, dur)
|
logTime(pi, dur/time.Duration(reqSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bpt *bsPeerTracker) logFailure(p peer.ID, dur time.Duration) {
|
func (bpt *bsPeerTracker) logFailure(p peer.ID, dur time.Duration, reqSize uint64) {
|
||||||
bpt.lk.Lock()
|
bpt.lk.Lock()
|
||||||
defer bpt.lk.Unlock()
|
defer bpt.lk.Unlock()
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ func (bpt *bsPeerTracker) logFailure(p peer.ID, dur time.Duration) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pi.failures++
|
pi.failures++
|
||||||
logTime(pi, dur)
|
logTime(pi, dur/time.Duration(reqSize))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (bpt *bsPeerTracker) removePeer(p peer.ID) {
|
func (bpt *bsPeerTracker) removePeer(p peer.ID) {
|
||||||
|
Loading…
Reference in New Issue
Block a user