|
- package algo
-
- import "math"
-
- type Provider struct {
- Pid int64
- CpuSum float64
- MemSum float64
- DiskSum float64
- CpuCost float64
- MemCost float64
- DiskCost float64
- CpuAvail float64
- MemAvail float64
- DiskAvail float64
- CurReplicas int
- MaxReplicas int
- MaxTaskCanRun int //记录该厂商针对当前可以接收的最大任务数
- TrustDegree float64 //信任度取值为0到1,默认初始为1
- LearnIndex float64 //云厂商生产成本的学习指数
- PartWill float64 //合作意愿
- ProfitSum float64
- ProfitPerTask map[int]float64
- }
-
- func NewProvider(Pid int64, CpuSum float64, MemSum float64, DiskSum float64, CpuCost float64, MemCost float64, DiskCost float64) *Provider {
- return &Provider{
- Pid: Pid,
- CpuSum: CpuSum,
- MemSum: MemSum,
- DiskSum: DiskSum,
- CpuCost: CpuCost,
- MemCost: MemCost,
- DiskCost: DiskCost,
- CpuAvail: CpuSum,
- MemAvail: MemSum,
- DiskAvail: DiskSum,
- LearnIndex: 0.9,
- PartWill: 1,
- }
- }
-
- func (p *Provider) GenMaxResourceNum(t *Task) {
- p.MaxReplicas = int(math.Floor(p.CpuAvail / t.Cpu))
-
- if p.MaxReplicas > int(math.Floor(p.MemAvail/t.Mem)) {
- p.MaxReplicas = int(math.Floor(p.MemAvail / t.Mem))
- }
- if p.MaxReplicas > int(math.Floor(p.DiskAvail/t.Disk)) {
- p.MaxReplicas = int(math.Floor(p.DiskAvail / t.Disk))
- }
-
- if p.MaxReplicas > 0 {
- p.MaxTaskCanRun = t.Replicas
- }
- }
-
- func (p Provider) name() {
-
- }
|