io.ray.runtime.util.SystemConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ray-runtime Show documentation
Show all versions of ray-runtime Show documentation
ray runtime implementation
The newest version!
package io.ray.runtime.util;
import com.google.common.base.Preconditions;
import com.google.gson.Gson;
import io.ray.runtime.config.RayConfig;
import io.ray.runtime.config.RunMode;
import java.util.HashMap;
/** The utility class to read system config from native code. */
public class SystemConfig {
private static RayConfig rayConfig = null;
private static Gson gson = new Gson();
/// A cache to avoid duplicated reading via JNI.
private static HashMap cachedConfigs = new HashMap<>();
/**
* The string key to use for getting the largest size passed by value. If the the size of an
* argument's serialized data is smaller than this number, the argument will be passed by value.
* Otherwise it'll be passed by reference.
*/
public static final String KEY_TO_LARGEST_SIZE_PASS_BY_VALUE = "max_direct_call_object_size";
public static synchronized void setup(RayConfig config) {
rayConfig = config;
}
public static synchronized Object get(String key) {
Preconditions.checkNotNull(rayConfig);
if (rayConfig.runMode == RunMode.LOCAL) {
// Code path of local mode.
return getInLocalMode(key);
}
// Code path of cluster mode.
if (cachedConfigs.containsKey(key)) {
return cachedConfigs.get(key);
}
Object val = gson.fromJson(nativeGetSystemConfig(key), Object.class);
Preconditions.checkNotNull(val);
cachedConfigs.put(key, val);
return val;
}
public static synchronized long getLargestSizePassedByValue() {
return ((Double) SystemConfig.get(KEY_TO_LARGEST_SIZE_PASS_BY_VALUE)).longValue();
}
private static Object getInLocalMode(String key) {
if (KEY_TO_LARGEST_SIZE_PASS_BY_VALUE.equals(key)) {
// Hard code 10K in local mode.
return 100.0 * 1024;
}
throw new RuntimeException(String.format("Unsupported key: %s", key));
}
private static native String nativeGetSystemConfig(String key);
}