github.com/songzhibin97/gkit@v1.2.13/internal/sys/cpu/psutilcpu.go (about)

     1  package cpu
     2  
     3  import (
     4  	"time"
     5  
     6  	c "github.com/shirou/gopsutil/cpu"
     7  )
     8  
     9  type psutilCPU struct {
    10  	interval time.Duration
    11  }
    12  
    13  func newPsutilCPU(interval time.Duration) (cpu *psutilCPU, err error) {
    14  	cpu = &psutilCPU{interval: interval}
    15  	_, err = cpu.Usage()
    16  	if err != nil {
    17  		return
    18  	}
    19  	return
    20  }
    21  
    22  func (ps *psutilCPU) Usage() (u uint64, err error) {
    23  	var percents []float64
    24  	percents, err = c.Percent(ps.interval, false)
    25  	if err == nil {
    26  		u = uint64(percents[0] * 10)
    27  	}
    28  	return
    29  }
    30  
    31  func (ps *psutilCPU) Info() (info Info) {
    32  	stats, err := c.Info()
    33  	if err != nil {
    34  		return
    35  	}
    36  	cores, err := c.Counts(true)
    37  	if err != nil {
    38  		return
    39  	}
    40  	info = Info{
    41  		Frequency: uint64(stats[0].Mhz),
    42  		Quota:     float64(cores),
    43  	}
    44  	return
    45  }