proc: optimize FindGoroutine by checking the cache first (#2118)
This commit is contained in:
parent
46731820df
commit
7a8316b52f
@ -388,6 +388,10 @@ func FindGoroutine(dbp *Target, gid int) (*G, error) {
|
|||||||
return nil, fmt.Errorf("unknown goroutine %d", gid)
|
return nil, fmt.Errorf("unknown goroutine %d", gid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if g := dbp.gcache.partialGCache[gid]; g != nil {
|
||||||
|
return g, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Calling GoroutinesInfo could be slow if there are many goroutines
|
// Calling GoroutinesInfo could be slow if there are many goroutines
|
||||||
// running, check if a running goroutine has been requested first.
|
// running, check if a running goroutine has been requested first.
|
||||||
for _, thread := range dbp.ThreadList() {
|
for _, thread := range dbp.ThreadList() {
|
||||||
@ -397,10 +401,6 @@ func FindGoroutine(dbp *Target, gid int) (*G, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if g := dbp.gcache.partialGCache[gid]; g != nil {
|
|
||||||
return g, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
const goroutinesInfoLimit = 10
|
const goroutinesInfoLimit = 10
|
||||||
nextg := 0
|
nextg := 0
|
||||||
for nextg >= 0 {
|
for nextg >= 0 {
|
||||||
|
Loading…
Reference in New Issue
Block a user