diff --git a/workspace-gateway/src/main/java/com/aliware/tianchi/CallbackListenerImpl.java b/workspace-gateway/src/main/java/com/aliware/tianchi/CallbackListenerImpl.java index 8e1a70fe8830bedd401555750977ae05bb0b2d06..03888939d3d8ad45e45f8eba8bfb48a32f34881d 100644 --- a/workspace-gateway/src/main/java/com/aliware/tianchi/CallbackListenerImpl.java +++ b/workspace-gateway/src/main/java/com/aliware/tianchi/CallbackListenerImpl.java @@ -14,6 +14,9 @@ public class CallbackListenerImpl implements CallbackListener { static long memory_large = 3; static long memory_medium = 2; static long memory_small = 1; + static double cpu_large = 3.0; + static double cpu_medium = 2.0; + static double cpu_small = 1.0; static short mask = 0; @Override @@ -21,25 +24,24 @@ public class CallbackListenerImpl implements CallbackListener { //System.out.println("receive msg from server :" + msg); String[] rcvmsglist = msg.split(","); if (rcvmsglist[0].equals("small")) { - memory_small = Long.parseLong(rcvmsglist[1]); + cpu_small = 100-Double.parseDouble(rcvmsglist[1]); mask |= 0x001; } else if (rcvmsglist[0].equals("medium")) { - memory_medium = Long.parseLong(rcvmsglist[1]); + cpu_medium = 100-Double.parseDouble(rcvmsglist[1]); mask |= 0x010; } else { - memory_large = Long.parseLong(rcvmsglist[1]); + cpu_large = 100-Double.parseDouble(rcvmsglist[1]); mask |= 0x100; } if (mask == 0x111) { - long memory_sum = memory_large + memory_medium + memory_small; + double cpu_sum = cpu_large*6.5 + cpu_medium*4.5 + cpu_small*2.0; //System.out.println(msg + " : " + memory_large + ',' + memory_medium + ',' + memory_small + " | " + memory_sum); - UserLoadBalance.weight_large = 6.0 * memory_large / memory_sum; - UserLoadBalance.weight_medium = 6.0 * memory_medium / memory_sum; - UserLoadBalance.weight_small = 6.0 * memory_small / memory_sum; - int a=0; + UserLoadBalance.weight_large = cpu_large*6.5 / cpu_sum; + UserLoadBalance.weight_medium = cpu_medium*4.5 / cpu_sum; + UserLoadBalance.weight_small = cpu_small*2.0 / cpu_sum; //System.out.println( UserLoadBalance.weight_large +" "+ UserLoadBalance.weight_medium+" "+ UserLoadBalance.weight_small); mask = 0x0; } diff --git a/workspace-gateway/src/main/java/com/aliware/tianchi/UserLoadBalance.java b/workspace-gateway/src/main/java/com/aliware/tianchi/UserLoadBalance.java index f783b5d051fe82efb58d2c4bfac650c71377a3ca..a05ac7f5e65825fdf8111627a79f95c1bd3b9250 100644 --- a/workspace-gateway/src/main/java/com/aliware/tianchi/UserLoadBalance.java +++ b/workspace-gateway/src/main/java/com/aliware/tianchi/UserLoadBalance.java @@ -19,13 +19,13 @@ import java.util.concurrent.ThreadLocalRandom; */ public class UserLoadBalance implements LoadBalance { - static double weight_large = 3.0; - static double weight_medium = 2.0; - static double weight_small = 1.0; + static double weight_large = 6.5/13; + static double weight_medium = 4.5/13; + static double weight_small = 2.0/13; @Override public <T> Invoker<T> select(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException { - double thread = ThreadLocalRandom.current().nextDouble(6.0); + double thread = ThreadLocalRandom.current().nextDouble(1.0); int id = 2; if (thread < weight_small) id = 0; else if (thread < weight_small + weight_medium) id = 1; diff --git a/workspace-provider/src/main/java/com/aliware/tianchi/CallbackServiceImpl.java b/workspace-provider/src/main/java/com/aliware/tianchi/CallbackServiceImpl.java index e54b5abd3b950f16dbef204ae6aa5ce6d23d6858..bf115303a4f9efba82807d021dd9e78e6ecb21f6 100644 --- a/workspace-provider/src/main/java/com/aliware/tianchi/CallbackServiceImpl.java +++ b/workspace-provider/src/main/java/com/aliware/tianchi/CallbackServiceImpl.java @@ -29,8 +29,8 @@ public class CallbackServiceImpl implements CallbackService { //System.out.println("Server push " +generateStatusMessage() + " Mem="+Runtime.getRuntime().freeMemory()); for (Map.Entry<String, CallbackListener> entry : listeners.entrySet()) { try { - //entry.getValue().receiveServerMsg(System.getProperty("quota") + " " + new Date().toString()); - entry.getValue().receiveServerMsg(System.getProperty("quota") + "," + Runtime.getRuntime().freeMemory()); + //entry.getValue().receiveServerMsg(System.getProperty("quota") + " " + new Date().toString());Runtime.getRuntime().freeMemory() + entry.getValue().receiveServerMsg(System.getProperty("quota") + "," + generateStatusMessage()); } catch (Throwable t1) { listeners.remove(entry.getKey()); } @@ -45,8 +45,8 @@ public class CallbackServiceImpl implements CallbackService { private String generateStatusMessage() { try { List<String> cpuLoadList = getProcessCpuLoad().stream().map(Object::toString).collect(Collectors.toList()); - String cpuLoadString = String.join(",", cpuLoadList); - return "cpu=" + cpuLoadString; + //String cpuLoadString = String.join(",", cpuLoadList); + return "cpu=" + cpuLoadList[0] ; } catch(Exception ex) { return "error"; diff --git a/workspace-provider/src/main/java/com/aliware/tianchi/TestRequestLimiter.java b/workspace-provider/src/main/java/com/aliware/tianchi/TestRequestLimiter.java index 1117dd5e449dafafb914799d41acf641216bc993..a62358738bb65988b29db5f6e0b9ce5e4bee63cc 100644 --- a/workspace-provider/src/main/java/com/aliware/tianchi/TestRequestLimiter.java +++ b/workspace-provider/src/main/java/com/aliware/tianchi/TestRequestLimiter.java @@ -20,14 +20,14 @@ public class TestRequestLimiter implements RequestLimiter { */ @Override public boolean tryAcquire(Request request, int activeTaskCount) { - // - if("small".equals(System.getProperty("quota"))){ - if (activeTaskCount > 195) return false; - } else if("medium".equals(System.getProperty("quota"))){ - if (activeTaskCount > 445) return false; - } else if("large".equals(System.getProperty("quota"))){ - if (activeTaskCount > 645) return false; - } +// // +// if("small".equals(System.getProperty("quota"))){ +// if (activeTaskCount > 198) return false; +// } else if("medium".equals(System.getProperty("quota"))){ +// if (activeTaskCount > 448) return false; +// } else if("large".equals(System.getProperty("quota"))){ +// if (activeTaskCount > 648) return false; +// } return true; }