From a8eff6e8bb13daf8140ddfc17e45017a8ff2151b Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Wed, 28 Nov 2018 14:04:38 +0800 Subject: [PATCH 1/2] Add stress test for Java worker --- .../java/org/ray/api/test/StressTest.java | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 java/test/src/main/java/org/ray/api/test/StressTest.java diff --git a/java/test/src/main/java/org/ray/api/test/StressTest.java b/java/test/src/main/java/org/ray/api/test/StressTest.java new file mode 100644 index 000000000000..4fab74aed199 --- /dev/null +++ b/java/test/src/main/java/org/ray/api/test/StressTest.java @@ -0,0 +1,98 @@ +package org.ray.api.test; + +import com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.List; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.ray.api.Ray; +import org.ray.api.RayActor; +import org.ray.api.RayObject; +import org.ray.api.id.UniqueId; + +@RunWith(MyRunner.class) +public class StressTest { + + public static int echo(int x) { + return x; + } + + @Test + public void testSubmittingTasks() { + for (int numIterations : ImmutableList.of(1, 10, 100, 1000)) { + int numTasks = 1000 / numIterations; + for (int i = 0; i < numIterations; i++) { + List resultIds = new ArrayList<>(); + for (int j = 0; j < numTasks; j++) { + resultIds.add(Ray.call(StressTest::echo, 1).getId()); + } + for (Integer result : Ray.get(resultIds)) { + Assert.assertEquals(result, Integer.valueOf(1)); + } + } + } + } + + @Test + public void testDependency() { + RayObject x = Ray.call(StressTest::echo, 1); + for (int i = 0; i < 1000; i++) { + x = Ray.call(StressTest::echo, x); + } + Assert.assertEquals(x.get(), Integer.valueOf(1)); + } + + public static class Actor { + + public int ping() { + return 1; + } + } + + public static class Worker { + + private RayActor actor; + + public Worker(RayActor actor) { + this.actor = actor; + } + + public int ping(int n) { + List objectIds = new ArrayList<>(); + for (int i = 0; i < n; i++) { + objectIds.add(Ray.call(Actor::ping, actor).getId()); + } + int sum = 0; + for (Integer result : Ray.get(objectIds)) { + sum += result; + } + return sum; + } + } + + @Test + public void testSubmittingManyTasksToOneActor() { + RayActor actor = Ray.createActor(Actor::new); + List objectIds = new ArrayList<>(); + for (int i = 0; i < 10; i++) { + RayActor worker = Ray.createActor(Worker::new, actor); + objectIds.add(Ray.call(Worker::ping, worker, 100).getId()); + } + for (Integer result : Ray.get(objectIds)) { + Assert.assertEquals(result, Integer.valueOf(100)); + } + } + + @Test + public void testPuttingAndGettingManyObjects() { + Integer objectToPut = 1; + List> objects = new ArrayList<>(); + for (int i = 0; i < 100_000; i++) { + objects.add(Ray.put(objectToPut)); + } + for (RayObject object : objects) { + Assert.assertEquals(object.get(), objectToPut); + } + } +} From 372cc4fc9448778494347f6a8dc76d7ae110a08c Mon Sep 17 00:00:00 2001 From: Hao Chen Date: Wed, 28 Nov 2018 19:51:46 +0800 Subject: [PATCH 2/2] avoid verbose logs --- .../src/main/java/org/ray/runtime/AbstractRayRuntime.java | 2 +- .../main/java/org/ray/runtime/raylet/RayletClientImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/java/runtime/src/main/java/org/ray/runtime/AbstractRayRuntime.java b/java/runtime/src/main/java/org/ray/runtime/AbstractRayRuntime.java index d8de9a086407..10dc172fd4d9 100644 --- a/java/runtime/src/main/java/org/ray/runtime/AbstractRayRuntime.java +++ b/java/runtime/src/main/java/org/ray/runtime/AbstractRayRuntime.java @@ -75,7 +75,7 @@ public RayObject put(T obj) { public void put(UniqueId objectId, T obj) { UniqueId taskId = workerContext.getCurrentTask().taskId; - RayLog.core.info("Putting object {}, for task {} ", objectId, taskId); + RayLog.core.debug("Putting object {}, for task {} ", objectId, taskId); objectStoreProxy.put(objectId, obj, null); } diff --git a/java/runtime/src/main/java/org/ray/runtime/raylet/RayletClientImpl.java b/java/runtime/src/main/java/org/ray/runtime/raylet/RayletClientImpl.java index 9cf70c348209..894780a0d443 100644 --- a/java/runtime/src/main/java/org/ray/runtime/raylet/RayletClientImpl.java +++ b/java/runtime/src/main/java/org/ray/runtime/raylet/RayletClientImpl.java @@ -90,8 +90,8 @@ public TaskSpec getTask() { @Override public void fetchOrReconstruct(List objectIds, boolean fetchOnly, UniqueId currentTaskId) { - if (RayLog.core.isInfoEnabled()) { - RayLog.core.info("Blocked on objects for task {}, object IDs are {}", + if (RayLog.core.isDebugEnabled()) { + RayLog.core.debug("Blocked on objects for task {}, object IDs are {}", UniqueIdUtil.computeTaskId(objectIds.get(0)), objectIds); } nativeFetchOrReconstruct(client, UniqueIdUtil.getIdBytes(objectIds),