JNIEXPORT void JNICALL Java_org_simgrid_msg_VM_create(JNIEnv* env, jobject jvm, jobject jhost, jstring jname, jint jramsize, jint jmig_netspeed, jint jdp_intensity) { msg_host_t host = jhost_get_native(env, jhost); const char* name = env->GetStringUTFChars(jname, 0); name = xbt_strdup(name); msg_vm_t vm = MSG_vm_create(host, name, static_cast<int>(jramsize), static_cast<int>(jmig_netspeed), static_cast<int>(jdp_intensity)); jvm_bind(env, jvm, vm); }
static int dvfs(int argc, char *argv[]) { msg_host_t host1 = MSG_host_by_name("MyHost1"); msg_host_t host2 = MSG_host_by_name("MyHost2"); msg_host_t host3 = MSG_host_by_name("MyHost3"); /* Host 1 */ XBT_INFO("Creating and starting two VMs"); msg_vm_t vm_host1 = MSG_vm_create(host1, "vm_host1", 4, 2048, 100, NULL, 1024 * 20, 10,50); MSG_vm_start(vm_host1); msg_vm_t vm_host3 = MSG_vm_create(host3, "vm_host3", 4, 2048, 100, NULL, 1024 * 20, 10,50); MSG_vm_start(vm_host3); XBT_INFO("Create two tasks on Host1: one inside a VM, the other directly on the host"); MSG_process_create("p11", worker_func, NULL, vm_host1); MSG_process_create("p12", worker_func, NULL, host1); XBT_INFO("Create two tasks on Host2: both directly on the host"); MSG_process_create("p21", worker_func, NULL, host2); MSG_process_create("p22", worker_func, NULL, host2); XBT_INFO("Create two tasks on Host3: both inside a VM"); MSG_process_create("p31", worker_func, NULL, vm_host3); MSG_process_create("p32", worker_func, NULL, vm_host3); XBT_INFO("Wait 5 seconds. The tasks are still running (they run for 3 seconds, but 2 tasks are co-located, " "so they run for 6 seconds)"); MSG_process_sleep(5); XBT_INFO("Wait another 5 seconds. The tasks stop at some point in between"); MSG_process_sleep(5); MSG_vm_shutdown(vm_host1); MSG_vm_shutdown(vm_host3); MSG_vm_destroy(vm_host1); MSG_vm_destroy(vm_host3); return 0; }
JNIEXPORT void JNICALL Java_org_simgrid_msg_VM_create(JNIEnv *env, jobject jvm, jobject jhost, jstring jname, jint jncore, jint jramsize, jint jnetcap, jstring jdiskpath, jint jdisksize, jint jmig_netspeed, jint jdp_intensity) { msg_host_t host = jhost_get_native(env, jhost); const char *name; name = env->GetStringUTFChars(jname, 0); name = xbt_strdup(name); // TODO disk concerns are not taken into account yet // const char *diskpath; // disk_path = (*env)->GetStringUTFChars(env, jdiskpath, 0); // disk_path = xbt_strdup(disk_path); msg_vm_t vm = MSG_vm_create(host, name, (int) jncore, (int) jramsize, (int) jnetcap, nullptr, (int) jdisksize, (int) jmig_netspeed, (int) jdp_intensity); jvm_bind(env,jvm,vm); }