You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

provider.go 1.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package algo
  2. import "math"
  3. type Provider struct {
  4. Pid int64
  5. CpuSum float64
  6. MemSum float64
  7. DiskSum float64
  8. CpuCost float64
  9. MemCost float64
  10. DiskCost float64
  11. CpuAvail float64
  12. MemAvail float64
  13. DiskAvail float64
  14. CurReplicas int
  15. MaxReplicas int
  16. MaxTaskCanRun int //记录该厂商针对当前可以接收的最大任务数
  17. TrustDegree float64 //信任度取值为0到1,默认初始为1
  18. LearnIndex float64 //云厂商生产成本的学习指数
  19. PartWill float64 //合作意愿
  20. ProfitSum float64
  21. ProfitPerTask map[int]float64
  22. }
  23. func NewProvider(Pid int64, CpuSum float64, MemSum float64, DiskSum float64, CpuCost float64, MemCost float64, DiskCost float64) *Provider {
  24. return &Provider{
  25. Pid: Pid,
  26. CpuSum: CpuSum,
  27. MemSum: MemSum,
  28. DiskSum: DiskSum,
  29. CpuCost: CpuCost,
  30. MemCost: MemCost,
  31. DiskCost: DiskCost,
  32. CpuAvail: CpuSum,
  33. MemAvail: MemSum,
  34. DiskAvail: DiskSum,
  35. LearnIndex: 0.9,
  36. PartWill: 1,
  37. }
  38. }
  39. func (p *Provider) GenMaxResourceNum(t *Task) {
  40. p.MaxReplicas = int(math.Floor(p.CpuAvail / t.Cpu))
  41. if p.MaxReplicas > int(math.Floor(p.MemAvail/t.Mem)) {
  42. p.MaxReplicas = int(math.Floor(p.MemAvail / t.Mem))
  43. }
  44. if p.MaxReplicas > int(math.Floor(p.DiskAvail/t.Disk)) {
  45. p.MaxReplicas = int(math.Floor(p.DiskAvail / t.Disk))
  46. }
  47. if p.MaxReplicas > 0 {
  48. p.MaxTaskCanRun = t.Replicas
  49. }
  50. }
  51. func (p Provider) name() {
  52. }

PCM is positioned as Software stack over Cloud, aiming to build the standards and ecology of heterogeneous cloud collaboration for JCC in a non intrusive and autonomous peer-to-peer manner.