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
|
|
@ -196,10 +196,10 @@ func (sq *servingQueue) threadController() {
|
||||||
type (
|
type (
|
||||||
// peerTasks lists the tasks received from a given peer when selecting peers to freeze
|
// peerTasks lists the tasks received from a given peer when selecting peers to freeze
|
||||||
peerTasks struct {
|
peerTasks struct {
|
||||||
peer *peer
|
peer *peer
|
||||||
list []*servingTask
|
list []*servingTask
|
||||||
sumTime uint64
|
sumTime uint64
|
||||||
worstPriority int64
|
priority float64
|
||||||
}
|
}
|
||||||
// peerList is a sortable list of peerTasks
|
// peerList is a sortable list of peerTasks
|
||||||
peerList []*peerTasks
|
peerList []*peerTasks
|
||||||
|
|
@ -210,7 +210,7 @@ func (l peerList) Len() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l peerList) Less(i, j int) bool {
|
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) {
|
func (l peerList) Swap(i, j int) {
|
||||||
|
|
@ -230,16 +230,16 @@ func (sq *servingQueue) freezePeers() {
|
||||||
task := sq.queue.PopItem().(*servingTask)
|
task := sq.queue.PopItem().(*servingTask)
|
||||||
tasks := peerMap[task.peer]
|
tasks := peerMap[task.peer]
|
||||||
if tasks == nil {
|
if tasks == nil {
|
||||||
|
bufValue, bufLimit := task.peer.fcClient.BufferStatus()
|
||||||
|
if bufLimit < 1 {
|
||||||
|
bufLimit = 1
|
||||||
|
}
|
||||||
tasks = &peerTasks{
|
tasks = &peerTasks{
|
||||||
peer: task.peer,
|
peer: task.peer,
|
||||||
worstPriority: task.priority,
|
priority: float64(bufValue) / float64(bufLimit), // lower value comes first
|
||||||
}
|
}
|
||||||
peerMap[task.peer] = tasks
|
peerMap[task.peer] = tasks
|
||||||
peerList = append(peerList, tasks)
|
peerList = append(peerList, tasks)
|
||||||
} else {
|
|
||||||
if tasks.worstPriority-task.priority > 0 {
|
|
||||||
tasks.worstPriority = task.priority
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
tasks.list = append(tasks.list, task)
|
tasks.list = append(tasks.list, task)
|
||||||
tasks.sumTime += task.expTime
|
tasks.sumTime += task.expTime
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue