Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
use MSG_task_get_flops_amount() when we don't want a ratio
[simgrid.git] / examples / msg / cloud-capping / cloud-capping.c
index c3b0f7d..4471034 100644 (file)
@@ -1,5 +1,4 @@
-/* Copyright (c) 2007-2015. The SimGrid Team.
- * All rights reserved.                                                     */
+/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -55,53 +54,50 @@ static int worker_busy_loop_main(int argc, char *argv[])
 {
   msg_task_t *task = MSG_process_get_data(MSG_process_self());
   MSG_task_execute(*task);
+  MSG_task_destroy(*task);
 
   return 0;
 }
 
-/* FIXME: */
 #define DOUBLE_MAX 1e11
 
 static void test_dynamic_change(void)
 {
-  xbt_dynar_t hosts_dynar = MSG_hosts_as_dynar();
-  msg_host_t pm0 = xbt_dynar_get_as(hosts_dynar, 0, msg_host_t);
+  msg_host_t pm0 = MSG_host_by_name("Fafard");
 
-  msg_host_t vm0 = MSG_vm_create_core(pm0, "VM0");
-  msg_host_t vm1 = MSG_vm_create_core(pm0, "VM1");
+  msg_vm_t vm0 = MSG_vm_create_core(pm0, "VM0");
+  msg_vm_t vm1 = MSG_vm_create_core(pm0, "VM1");
   MSG_vm_start(vm0);
   MSG_vm_start(vm1);
 
   msg_task_t task0 = MSG_task_create("Task0", DOUBLE_MAX, 0, NULL);
   msg_task_t task1 = MSG_task_create("Task1", DOUBLE_MAX, 0, NULL);
-  MSG_process_create("worker0", worker_busy_loop_main, &task0, vm0);
-  MSG_process_create("worker1", worker_busy_loop_main, &task1, vm1);
+  MSG_process_create("worker0", worker_busy_loop_main, &task0, (msg_host_t)vm0);
+  MSG_process_create("worker1", worker_busy_loop_main, &task1, (msg_host_t)vm1);
 
   double task0_remain_prev = MSG_task_get_flops_amount(task0);
   double task1_remain_prev = MSG_task_get_flops_amount(task1);
 
-  {
-    const double cpu_speed = MSG_host_get_speed(pm0);
-    int i = 0;
-    for (i = 0; i < 10; i++) {
-      double new_bound = (cpu_speed / 10) * i;
-      XBT_INFO("set bound of VM1 to %f", new_bound);
-      MSG_vm_set_bound(vm1, new_bound);
-      MSG_process_sleep(100);
+  const double cpu_speed = MSG_host_get_speed(pm0);
+  for (int i = 0; i < 10; i++) {
+    double new_bound = (cpu_speed / 10) * i;
+    XBT_INFO("set bound of VM1 to %f", new_bound);
+    MSG_vm_set_bound(vm1, new_bound);
+    MSG_process_sleep(100);
 
-      double task0_remain_now = MSG_task_get_flops_amount(task0);
-      double task1_remain_now = MSG_task_get_flops_amount(task1);
+    double task0_remain_now = MSG_task_get_flops_amount(task0);
+    double task1_remain_now = MSG_task_get_flops_amount(task1);
 
-      double task0_flops_per_sec = task0_remain_prev - task0_remain_now;
-      double task1_flops_per_sec = task1_remain_prev - task1_remain_now;
+    double task0_flops_per_sec = task0_remain_prev - task0_remain_now;
+    double task1_flops_per_sec = task1_remain_prev - task1_remain_now;
 
-      XBT_INFO("Task0@VM0: %f flops/s", task0_flops_per_sec / 100);
-      XBT_INFO("Task1@VM1: %f flops/s", task1_flops_per_sec / 100);
+    XBT_INFO("Task0@VM0: %f flops/s", task0_flops_per_sec / 100);
+    XBT_INFO("Task1@VM1: %f flops/s", task1_flops_per_sec / 100);
 
-      task0_remain_prev = task0_remain_now;
-      task1_remain_prev = task1_remain_now;
-    }
+    task0_remain_prev = task0_remain_now;
+    task1_remain_prev = task1_remain_now;
   }
+
   MSG_process_sleep(2000); // let the tasks end
 
   MSG_vm_destroy(vm0);
@@ -195,10 +191,8 @@ static void test_two_tasks(msg_host_t hostA, msg_host_t hostB)
 
 static int master_main(int argc, char *argv[])
 {
-  xbt_dynar_t hosts_dynar = MSG_hosts_as_dynar();
-  msg_host_t pm0 = xbt_dynar_get_as(hosts_dynar, 0, msg_host_t);
-  msg_host_t pm1 = xbt_dynar_get_as(hosts_dynar, 0, msg_host_t);
-  xbt_dynar_free(&hosts_dynar);
+  msg_host_t pm0 = MSG_host_by_name("Fafard");
+  msg_host_t pm1 = MSG_host_by_name("Fafard");
 
   XBT_INFO("# 1. Put a single task on a PM. ");
   test_one_task(pm0);
@@ -208,15 +202,15 @@ static int master_main(int argc, char *argv[])
   test_two_tasks(pm0, pm0);
   XBT_INFO(" ");
 
-  msg_host_t vm0 = MSG_vm_create_core(pm0, "VM0");
+  msg_vm_t vm0 = MSG_vm_create_core(pm0, "VM0");
   MSG_vm_start(vm0);
 
   XBT_INFO("# 3. Put a single task on a VM. ");
-  test_one_task(vm0);
+  test_one_task((msg_host_t)vm0);
   XBT_INFO(" ");
 
   XBT_INFO("# 4. Put two tasks on a VM.");
-  test_two_tasks(vm0, vm0);
+  test_two_tasks((msg_host_t)vm0, (msg_host_t)vm0);
   XBT_INFO(" ");
 
   MSG_vm_destroy(vm0);
@@ -225,7 +219,7 @@ static int master_main(int argc, char *argv[])
   MSG_vm_start(vm0);
 
   XBT_INFO("# 6. Put a task on a PM and a task on a VM.");
-  test_two_tasks(pm0, vm0);
+  test_two_tasks(pm0, (msg_host_t)vm0);
   XBT_INFO(" ");
 
   MSG_vm_destroy(vm0);
@@ -236,25 +230,22 @@ static int master_main(int argc, char *argv[])
   MSG_vm_start(vm0);
 
   XBT_INFO("# 7. Put a single task on the VM capped by 10%%.");
-  test_one_task(vm0);
+  test_one_task((msg_host_t)vm0);
   XBT_INFO(" ");
 
   XBT_INFO("# 8. Put two tasks on the VM capped by 10%%.");
-  test_two_tasks(vm0, vm0);
+  test_two_tasks((msg_host_t)vm0, (msg_host_t)vm0);
   XBT_INFO(" ");
 
   XBT_INFO("# 9. Put a task on a PM and a task on the VM capped by 10%%.");
-  test_two_tasks(pm0, vm0);
+  test_two_tasks(pm0, (msg_host_t)vm0);
   XBT_INFO(" ");
 
   MSG_vm_destroy(vm0);
 
   vm0 = MSG_vm_create_core(pm0, "VM0");
 
-  s_vm_params_t params;
-  memset(&params, 0, sizeof(params));
-  params.ramsize = 1L * 1000 * 1000 * 1000; // 1Gbytes
-  MSG_host_set_params(vm0, &params);
+  MSG_vm_set_ramsize(vm0, 1e9); // 1GB
   MSG_vm_start(vm0);
 
   cpu_speed = MSG_host_get_speed(pm0);
@@ -264,13 +255,13 @@ static int master_main(int argc, char *argv[])
   const double computation_amount = cpu_speed * 10;
 
   XBT_INFO("# 10. (a) Put a task on a VM without any bound.");
-  launch_worker(vm0, "worker0", computation_amount, 0, 0);
+  launch_worker((msg_host_t)vm0, "worker0", computation_amount, 0, 0);
   MSG_process_sleep(1000);
   XBT_INFO(" ");
 
   XBT_INFO("# 10. (b) set 10%% bound to the VM, and then put a task on the VM.");
   MSG_vm_set_bound(vm0, cpu_speed / 10);
-  launch_worker(vm0, "worker0", computation_amount, 0, 0);
+  launch_worker((msg_host_t)vm0, "worker0", computation_amount, 0, 0);
   MSG_process_sleep(1000);
   XBT_INFO(" ");
 
@@ -279,7 +270,7 @@ static int master_main(int argc, char *argv[])
   XBT_INFO(" ");
 
   XBT_INFO("# 10. (d) Put a task again on the VM.");
-  launch_worker(vm0, "worker0", computation_amount, 0, 0);
+  launch_worker((msg_host_t)vm0, "worker0", computation_amount, 0, 0);
   MSG_process_sleep(1000);
   XBT_INFO(" ");
 
@@ -311,8 +302,7 @@ int main(int argc, char *argv[])
 
   MSG_create_environment(argv[1]);
 
-  xbt_dynar_t hosts_dynar = MSG_hosts_as_dynar();
-  msg_host_t pm0 = xbt_dynar_get_as(hosts_dynar, 0, msg_host_t);
+  msg_host_t pm0 = MSG_host_by_name("Fafard");
   launch_master(pm0);
 
   int res = MSG_main();