parent
aad6ecf1b6
commit
69282c4c87
@ -1,20 +0,0 @@ |
|||||||
// +build darwin
|
|
||||||
|
|
||||||
package cpu |
|
||||||
|
|
||||||
var su uint64 = 10 |
|
||||||
var tu uint64 = 10 |
|
||||||
|
|
||||||
func systemCPUUsage() (usage uint64, err error) { |
|
||||||
su += 1000 |
|
||||||
return su, nil |
|
||||||
} |
|
||||||
func totalCPUUsage() (usage uint64, err error) { |
|
||||||
tu += 500 |
|
||||||
return tu, nil |
|
||||||
} |
|
||||||
func perCPUUsage() (usage []uint64, err error) { return []uint64{10, 10, 10, 10}, nil } |
|
||||||
func cpuSets() (sets []uint64, err error) { return []uint64{0, 1, 2, 3}, nil } |
|
||||||
func cpuQuota() (quota int64, err error) { return 100, nil } |
|
||||||
func cpuPeriod() (peroid uint64, err error) { return 10, nil } |
|
||||||
func cpuMaxFreq() (feq uint64) { return 10 } |
|
@ -1,11 +0,0 @@ |
|||||||
// +build windows
|
|
||||||
|
|
||||||
package cpu |
|
||||||
|
|
||||||
func systemCPUUsage() (usage uint64, err error) { return 10, nil } |
|
||||||
func totalCPUUsage() (usage uint64, err error) { return 10, nil } |
|
||||||
func perCPUUsage() (usage []uint64, err error) { return []uint64{10, 10, 10, 10}, nil } |
|
||||||
func cpuSets() (sets []uint64, err error) { return []uint64{0, 1, 2, 3}, nil } |
|
||||||
func cpuQuota() (quota int64, err error) { return 100, nil } |
|
||||||
func cpuPeriod() (peroid uint64, err error) { return 10, nil } |
|
||||||
func cpuMaxFreq() (feq uint64) { return 10 } |
|
@ -0,0 +1,22 @@ |
|||||||
|
package cpu |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"testing" |
||||||
|
"time" |
||||||
|
) |
||||||
|
|
||||||
|
func Test_CPUUsage(t *testing.T) { |
||||||
|
var stat Stat |
||||||
|
ReadStat(&stat) |
||||||
|
fmt.Println(stat) |
||||||
|
time.Sleep(time.Millisecond * 600) |
||||||
|
for i := 0; i < 6; i++ { |
||||||
|
time.Sleep(time.Millisecond * 500) |
||||||
|
ReadStat(&stat) |
||||||
|
if stat.Usage == 0 { |
||||||
|
t.Fatalf("get cpu failed!cpu usage is zero!") |
||||||
|
} |
||||||
|
fmt.Println(stat) |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
package cpu |
||||||
|
|
||||||
|
import ( |
||||||
|
"time" |
||||||
|
|
||||||
|
"github.com/shirou/gopsutil/cpu" |
||||||
|
) |
||||||
|
|
||||||
|
type psutilCPU struct { |
||||||
|
interval time.Duration |
||||||
|
} |
||||||
|
|
||||||
|
func newPsutilCPU(interval time.Duration) (cpu *psutilCPU, err error) { |
||||||
|
cpu = &psutilCPU{interval: interval} |
||||||
|
_, err = cpu.Usage() |
||||||
|
if err != nil { |
||||||
|
return |
||||||
|
} |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
func (ps *psutilCPU) Usage() (u uint64, err error) { |
||||||
|
var percents []float64 |
||||||
|
percents, err = cpu.Percent(ps.interval, false) |
||||||
|
if err == nil { |
||||||
|
u = uint64(percents[0] * 10) |
||||||
|
} |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
func (ps *psutilCPU) Info() (info Info) { |
||||||
|
stats, err := cpu.Info() |
||||||
|
if err != nil { |
||||||
|
return |
||||||
|
} |
||||||
|
cores, err := cpu.Counts(true) |
||||||
|
if err != nil { |
||||||
|
return |
||||||
|
} |
||||||
|
info = Info{ |
||||||
|
Frequency: uint64(stats[0].Mhz), |
||||||
|
Quota: float64(cores), |
||||||
|
} |
||||||
|
return |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
package cpu |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"testing" |
||||||
|
"time" |
||||||
|
) |
||||||
|
|
||||||
|
func Test_PsutilCPU(t *testing.T) { |
||||||
|
cpu, err := newPsutilCPU(time.Millisecond * 500) |
||||||
|
if err != nil { |
||||||
|
t.Fatalf("newPsutilCPU failed!err:=%v", err) |
||||||
|
} |
||||||
|
for i := 0; i < 6; i++ { |
||||||
|
time.Sleep(time.Millisecond * 500) |
||||||
|
u, err := cpu.Usage() |
||||||
|
if u == 0 { |
||||||
|
t.Fatalf("get cpu from psutil failed!cpu usage is zero!err:=%v", err) |
||||||
|
} |
||||||
|
fmt.Println(u) |
||||||
|
} |
||||||
|
} |
@ -1,14 +0,0 @@ |
|||||||
package cpu |
|
||||||
|
|
||||||
//GetClockTicks get the OS's ticks per second
|
|
||||||
func GetClockTicks() int { |
|
||||||
// TODO figure out a better alternative for platforms where we're missing cgo
|
|
||||||
//
|
|
||||||
// TODO Windows. This could be implemented using Win32 QueryPerformanceFrequency().
|
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms644905(v=vs.85).aspx
|
|
||||||
//
|
|
||||||
// An example of its usage can be found here.
|
|
||||||
// https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx
|
|
||||||
|
|
||||||
return 100 |
|
||||||
} |
|
Loading…
Reference in new issue