Input: Cpu& Memory Usages Set (CpuUsage& MemoryUsage) //Actual And Predicted Datasets Cpu& Memory Provisioning Set (Cpuprovisioning& Memoryprovisioning) |
Constant Input: Cpu& Memory Executioncost (Cpuexecutioncost&Memoryexecutioncost) |
Fixed Penalty Cost |
Principal // Principal is the Rework Cost of VM |
Output: Actual Utility/Predicted Utility Of VM |
Utility (CpuUsage, MemoryUsage, Cpuprovisioning, Memoryprovisioning) |
1. Initialize: Interest =0 |
2. Penalty =0 |
3. For (Each Time Stamp) |
4. Cpucost = Cpuusage * Cpuexecutioncost |
5. Memorycost = Memoryusage* Memoryexecutioncost |
6. Current Utility = Cpucost + Memorycost //Calculating VM Running Cost |
7. Debtmemory = (Current Memoryprovisioning - Memoryusage) * Memoryexecutioncost |
8. Debtcpu = (Current Cpuprovisioning - Cpuusage) * Cpuexecutioncost |
9. If ((Cpuprovisioning + Memoryprovisioning) > (CpuUsage+ MemoryUsage)) // Over-Provisioning |
10. Interest =Debtcpu + Debtmemory |
11. Else // Under-Provisioning |
12. % of Penalty =100 – ((CpuUsage / Cpuprovisioning) + (Memory Usage / Memory Provisioning))*50 |
13. Penalty = Fixed Penalty Cost * (% Of Penalty) |
14. End If |
15. Total Debt = Interest + Penalty + Principal // For Actual/Predicted Datasets |
16. Actual Utility = Current Utility - Penalty // Generates Actual Utility |
17. Predicted Utility = Current Utility - Technical Debt // Generates Predicted Utility |
18. End For |