From 50c4f2d4c08f45906f1575939fdcb47fb469647a Mon Sep 17 00:00:00 2001 From: hugui <254963746@qq.com> Date: Fri, 14 Aug 2015 10:02:04 +0800 Subject: [PATCH] benchmark --- .../lts/core/remoting/HeartBeatMonitor.java | 2 +- .../lts/example/benchmark/JobClientMain.java | 28 +++++++++++++------ .../com/lts/example/support/MemoryStatus.java | 19 +++++++++++++ .../lts/example/support/NoopJobRunner.java | 11 +++++++- 4 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 lts-example/src/main/java/com/lts/example/support/MemoryStatus.java diff --git a/lts-core/src/main/java/com/lts/core/remoting/HeartBeatMonitor.java b/lts-core/src/main/java/com/lts/core/remoting/HeartBeatMonitor.java index 4622786eb..0cd68b474 100644 --- a/lts-core/src/main/java/com/lts/core/remoting/HeartBeatMonitor.java +++ b/lts-core/src/main/java/com/lts/core/remoting/HeartBeatMonitor.java @@ -115,7 +115,7 @@ public void run() { ping(); } } - }, 1, 2, TimeUnit.MILLISECONDS); + }, 1, 1, TimeUnit.MILLISECONDS); } LOGGER.info("Start fast ping success."); } catch (Throwable t) { diff --git a/lts-example/src/main/java/com/lts/example/benchmark/JobClientMain.java b/lts-example/src/main/java/com/lts/example/benchmark/JobClientMain.java index 9810b110d..ed6d111c6 100644 --- a/lts-example/src/main/java/com/lts/example/benchmark/JobClientMain.java +++ b/lts-example/src/main/java/com/lts/example/benchmark/JobClientMain.java @@ -1,15 +1,16 @@ package com.lts.example.benchmark; +import com.lts.core.commons.utils.DateUtils; import com.lts.core.commons.utils.StringUtils; import com.lts.core.domain.Job; import com.lts.example.support.JobFinishedHandlerImpl; import com.lts.example.support.MasterChangeListenerImpl; +import com.lts.example.support.MemoryStatus; import com.lts.jobclient.JobClient; import com.lts.jobclient.RetryJobClient; import com.lts.jobclient.domain.Response; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; /** @@ -37,19 +38,24 @@ public static void main(String[] args) { try { // 休息1s 等待 连上JobTracker - Thread.sleep(1000); + Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } + MemoryStatus.print(); + final AtomicLong num = new AtomicLong(); - System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - // 假设分了 20 个 partition + final long start = System.currentTimeMillis(); + // 假设分了 100 个 partition final int partition = 100; - for (int i = 0; i < 100; i++) { + final int totalSize = 1000000; + + final AtomicInteger thread = new AtomicInteger(100); + for (int i = 0; i < thread.get(); i++) { new Thread(new Runnable() { @Override @@ -65,7 +71,13 @@ public void run() { if (!response.isSuccess()) { System.out.println(response.getMsg()); } else { - num.incrementAndGet(); + if (num.incrementAndGet() > totalSize) { + if (thread.decrementAndGet() == 0) { + MemoryStatus.print(); + System.out.println("totalSize : " + totalSize + " , time: " + (System.currentTimeMillis() - start) + "ms"); + break; + } + } } } } @@ -75,7 +87,7 @@ public void run() { new Thread(new Runnable() { @Override public void run() { - while(true){ + while (true) { try { Thread.sleep(5000); } catch (InterruptedException e) { diff --git a/lts-example/src/main/java/com/lts/example/support/MemoryStatus.java b/lts-example/src/main/java/com/lts/example/support/MemoryStatus.java new file mode 100644 index 000000000..dd41a065c --- /dev/null +++ b/lts-example/src/main/java/com/lts/example/support/MemoryStatus.java @@ -0,0 +1,19 @@ +package com.lts.example.support; + +/** + * Created by hugui on 8/14/15. + */ +public class MemoryStatus { + + public static void print() { + Runtime runtime = Runtime.getRuntime(); + long freeMemory = runtime.freeMemory(); + long totalMemory = runtime.totalMemory(); + long maxMemory = runtime.maxMemory(); + boolean ok = (maxMemory - (totalMemory - freeMemory) > 2048); // 剩余空间小于2M报警 + String msg = "Max:" + (maxMemory / 1024 / 1024) + "M, Total:" + + (totalMemory / 1024 / 1024) + "M, Free:" + (freeMemory / 1024 / 1024) + + "M, Use:" + ((totalMemory / 1024 / 1024) - (freeMemory / 1024 / 1024)) + "M"; + System.out.println(msg); + } +} diff --git a/lts-example/src/main/java/com/lts/example/support/NoopJobRunner.java b/lts-example/src/main/java/com/lts/example/support/NoopJobRunner.java index 7f3da3ea9..d77905453 100644 --- a/lts-example/src/main/java/com/lts/example/support/NoopJobRunner.java +++ b/lts-example/src/main/java/com/lts/example/support/NoopJobRunner.java @@ -2,6 +2,7 @@ import com.lts.core.domain.Action; import com.lts.core.domain.Job; +import com.lts.core.support.SystemClock; import com.lts.tasktracker.Result; import com.lts.tasktracker.runner.JobRunner; @@ -12,10 +13,18 @@ */ public class NoopJobRunner implements JobRunner { + static long start = 0; static AtomicInteger num = new AtomicInteger(0); + + public NoopJobRunner() { + if (start == 0) { + start = System.currentTimeMillis(); + } + } + @Override public Result run(Job job) throws Throwable { - System.out.println(num.incrementAndGet()); + System.out.println(num.incrementAndGet() + " time : " + (SystemClock.now() - start) + "ms"); return new Result(Action.EXECUTE_SUCCESS); } }