source: DCWoRMS/branches/coolemall/src/test/testSOP/algorithms/multicloud/ComparatorRankingMetasched.java @ 1606

Revision 1606, 3.0 KB checked in by wojtekp, 8 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package test.testSOP.algorithms.multicloud;
2
3import java.util.Comparator;
4
5import schedframe.resources.computing.ComputingResource;
6import schedframe.resources.computing.Node;
7import schedframe.scheduling.Scheduler;
8import schedframe.scheduling.manager.resources.ManagedComputingResources;
9import schedframe.scheduling.manager.tasks.JobRegistry;
10import schedframe.scheduling.manager.tasks.JobRegistryImpl;
11import test.testSOP.Utility;
12
13//Copie de lowest load first
14public class ComparatorRankingMetasched implements Comparator<Scheduler>{
15        @Override
16        public int compare(Scheduler sched1, Scheduler sched2) {
17                ManagedComputingResources c1 = sched1.getCompResources();
18                ManagedComputingResources c2 = sched2.getCompResources();
19                float mean_load_cpu_c1 = 0;
20                float mean_load_mem_c1 = 0;
21                float vm_number_c1 = 0;
22                float nb=0;
23                for (ComputingResource cr : c1) {
24                        Node node = (Node)cr;
25                        mean_load_cpu_c1 += node.getLoadInterface().getRecentUtilization().getValue();
26                        try {
27                                mean_load_mem_c1 += ((float)node.getTotalMemory() - (float)node.getFreeMemory()) / (float)node.getTotalMemory();
28                        } catch (NoSuchFieldException e) {
29                                // TODO Auto-generated catch block
30                                e.printStackTrace();
31                        }
32                       
33                        JobRegistry nodeJR = new JobRegistryImpl(node.getFullName());
34                        synchronized(nodeJR) {
35                                vm_number_c1 += Utility.getAllRunningTasks(nodeJR);
36                        }
37                        nb++;
38                }
39                mean_load_cpu_c1 = mean_load_cpu_c1 / nb;
40                mean_load_mem_c1 = mean_load_mem_c1 / nb;
41               
42                float mean_load_cpu_c2 = 0;
43                float mean_load_mem_c2 = 0;
44                float vm_number_c2 = 0;
45                nb=0;
46                for (ComputingResource cr : c1) {
47                        Node node = (Node)cr;
48                        mean_load_cpu_c2 += node.getLoadInterface().getRecentUtilization().getValue();
49                        try {
50                                mean_load_mem_c2 += ((float)node.getTotalMemory() - (float)node.getFreeMemory()) / (float)node.getTotalMemory();
51                        } catch (NoSuchFieldException e) {
52                                // TODO Auto-generated catch block
53                                e.printStackTrace();
54                        }
55                        JobRegistry nodeJR = new JobRegistryImpl(node.getFullName());
56                        synchronized(nodeJR) {
57                                vm_number_c2 += Utility.getAllRunningTasks(nodeJR);
58                        }
59                        nb++;
60                }
61                mean_load_cpu_c2 = mean_load_cpu_c2 / nb;
62                mean_load_mem_c2 = mean_load_mem_c2 / nb;
63               
64                float z1, z2;
65                if (vm_number_c1 == 0) {
66                        z1 = 1;
67                }
68                else {
69                        z1 = Math.max(mean_load_cpu_c1 / vm_number_c1, mean_load_mem_c1 / vm_number_c1);
70                }
71                if (vm_number_c2 == 0) {
72                        z2 = 1;
73                }
74                else {
75                        z2 = Math.max(mean_load_cpu_c2 / vm_number_c2, mean_load_mem_c2 / vm_number_c2);
76                }
77               
78                if (z1 > z2)
79                        return 1;
80                else if (z1 > z2)
81                        return -1;
82                else
83                        return 0;
84        }
85}
86//static bool ranking_clouds(metasched_cloud_t c1, metasched_cloud_t c2) {
87//float z1 = std::max((float)c1.load_cpu / (float)c1.vm_number
88//                  , (float)c1.load_memory/(float)c1.vm_number);
89//float z2 = std::max((float)c2.load_cpu / (float)c2.vm_number
90//                  , (float)c2.load_memory/(float)c2.vm_number);
91//return (z1 <= z2);
92//}
Note: See TracBrowser for help on using the repository browser.