Files
cloudpods/vendor/github.com/anacrolix/sync/lockstats.go
Qiu Jian 2e587bd6ab glance重构 update 1
Conflicts:
	Gopkg.lock
	pkg/appsrv/appsrv.go
	pkg/cloudcommon/options.go
	pkg/compute/models/hosts.go
	pkg/compute/models/quotas.go
	pkg/compute/service/service.go
	pkg/mcclient/mcclient.go
2018-12-26 22:52:13 +08:00

38 lines
633 B
Go

package sync
import (
"sort"
"sync"
"github.com/anacrolix/missinggo/perf"
)
var (
// Stats on lock usage by call graph.
lockStatsMu sync.Mutex
lockStatsByStack map[lockStackKey]lockStats
)
type (
lockStats = perf.Event
lockStackKey = [32]uintptr
lockCount = int64
)
type stackLockStats struct {
stack lockStackKey
lockStats
}
func sortedLockTimes() (ret []stackLockStats) {
lockStatsMu.Lock()
for stack, stats := range lockStatsByStack {
ret = append(ret, stackLockStats{stack, stats})
}
lockStatsMu.Unlock()
sort.Slice(ret, func(i, j int) bool {
return ret[i].Total > ret[j].Total
})
return
}