mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
les: freeze peers based of relative buffer status
This commit is contained in:
parent
f39c7a5d12
commit
94e1d9c739
1 changed files with 11 additions and 11 deletions
|
|
@ -199,7 +199,7 @@ type (
|
|||
peer *peer
|
||||
list []*servingTask
|
||||
sumTime uint64
|
||||
worstPriority int64
|
||||
priority float64
|
||||
}
|
||||
// peerList is a sortable list of peerTasks
|
||||
peerList []*peerTasks
|
||||
|
|
@ -210,7 +210,7 @@ func (l peerList) Len() int {
|
|||
}
|
||||
|
||||
func (l peerList) Less(i, j int) bool {
|
||||
return (l[i].worstPriority - l[j].worstPriority) < 0
|
||||
return l[i].priority < l[j].priority
|
||||
}
|
||||
|
||||
func (l peerList) Swap(i, j int) {
|
||||
|
|
@ -230,16 +230,16 @@ func (sq *servingQueue) freezePeers() {
|
|||
task := sq.queue.PopItem().(*servingTask)
|
||||
tasks := peerMap[task.peer]
|
||||
if tasks == nil {
|
||||
bufValue, bufLimit := task.peer.fcClient.BufferStatus()
|
||||
if bufLimit < 1 {
|
||||
bufLimit = 1
|
||||
}
|
||||
tasks = &peerTasks{
|
||||
peer: task.peer,
|
||||
worstPriority: task.priority,
|
||||
priority: float64(bufValue) / float64(bufLimit), // lower value comes first
|
||||
}
|
||||
peerMap[task.peer] = tasks
|
||||
peerList = append(peerList, tasks)
|
||||
} else {
|
||||
if tasks.worstPriority-task.priority > 0 {
|
||||
tasks.worstPriority = task.priority
|
||||
}
|
||||
}
|
||||
tasks.list = append(tasks.list, task)
|
||||
tasks.sumTime += task.expTime
|
||||
|
|
|
|||
Loading…
Reference in a new issue