|
|
@ -44,13 +44,6 @@ func (p *ProcScheduler) Stop() {
|
|
|
|
close(p.Quit)
|
|
|
|
close(p.Quit)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
|
|
|
rBytes map[int]uint64
|
|
|
|
|
|
|
|
wBytes map[int]uint64
|
|
|
|
|
|
|
|
procJiffy map[int]uint64
|
|
|
|
|
|
|
|
jiffy uint64
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func ProcCollect(p *models.ProcCollect) {
|
|
|
|
func ProcCollect(p *models.ProcCollect) {
|
|
|
|
ps, err := AllProcs()
|
|
|
|
ps, err := AllProcs()
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
@ -84,24 +77,24 @@ func ProcCollect(p *models.ProcCollect) {
|
|
|
|
cnt++
|
|
|
|
cnt++
|
|
|
|
memory += proc.Mem
|
|
|
|
memory += proc.Mem
|
|
|
|
fdNum += proc.FdCount
|
|
|
|
fdNum += proc.FdCount
|
|
|
|
rOld := rBytes[proc.Pid]
|
|
|
|
rOld := p.RBytes[proc.Pid]
|
|
|
|
if rOld != 0 && rOld <= proc.RBytes {
|
|
|
|
if rOld != 0 && rOld <= proc.RBytes {
|
|
|
|
ioRead += proc.RBytes - rOld
|
|
|
|
ioRead += proc.RBytes - rOld
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
wOld := wBytes[proc.Pid]
|
|
|
|
wOld := p.WBytes[proc.Pid]
|
|
|
|
if wOld != 0 && wOld <= proc.WBytes {
|
|
|
|
if wOld != 0 && wOld <= proc.WBytes {
|
|
|
|
ioWrite += proc.WBytes - wOld
|
|
|
|
ioWrite += proc.WBytes - wOld
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
uptime = readUptime(proc.Pid)
|
|
|
|
uptime = readUptime(proc.Pid)
|
|
|
|
|
|
|
|
|
|
|
|
// jiffy 为零,表示第一次采集信息,不做cpu计算
|
|
|
|
// p.Jiffy 为零,表示第一次采集信息,不做cpu计算
|
|
|
|
if jiffy == 0 {
|
|
|
|
if p.Jiffy == 0 {
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
cpu += float64(newProcJiffy[proc.Pid] - procJiffy[proc.Pid])
|
|
|
|
cpu += float64(newProcJiffy[proc.Pid] - p.ProcJiffy[proc.Pid])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -114,8 +107,8 @@ func ProcCollect(p *models.ProcCollect) {
|
|
|
|
ioWriteItem := core.GaugeValue("proc.io.write.bytes", ioWrite, p.Tags)
|
|
|
|
ioWriteItem := core.GaugeValue("proc.io.write.bytes", ioWrite, p.Tags)
|
|
|
|
items = []*dataobj.MetricValue{procNumItem, memUsedItem, procFdItem, procUptimeItem, ioReadItem, ioWriteItem}
|
|
|
|
items = []*dataobj.MetricValue{procNumItem, memUsedItem, procFdItem, procUptimeItem, ioReadItem, ioWriteItem}
|
|
|
|
|
|
|
|
|
|
|
|
if jiffy != 0 {
|
|
|
|
if p.Jiffy != 0 {
|
|
|
|
cpuUtil := cpu / float64(newJiffy-jiffy) * 100
|
|
|
|
cpuUtil := cpu / float64(newJiffy-p.Jiffy) * 100
|
|
|
|
if cpuUtil > 100 {
|
|
|
|
if cpuUtil > 100 {
|
|
|
|
cpuUtil = 100
|
|
|
|
cpuUtil = 100
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -144,10 +137,10 @@ func ProcCollect(p *models.ProcCollect) {
|
|
|
|
|
|
|
|
|
|
|
|
core.Push(items)
|
|
|
|
core.Push(items)
|
|
|
|
|
|
|
|
|
|
|
|
rBytes = newRBytes
|
|
|
|
p.RBytes = newRBytes
|
|
|
|
wBytes = newWBytes
|
|
|
|
p.WBytes = newWBytes
|
|
|
|
procJiffy = newProcJiffy
|
|
|
|
p.ProcJiffy = newProcJiffy
|
|
|
|
jiffy = readJiffy()
|
|
|
|
p.Jiffy = readJiffy()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func isProc(p *Proc, method, target string) bool {
|
|
|
|
func isProc(p *Proc, method, target string) bool {
|
|
|
|