examples/java/cloud/java_cloud_compiled
examples/java/cloud/migration/java_cloud_migration_compiled
examples/java/commTime/java_commTime_compiled
+examples/java/energy/java_energy_compiled
examples/java/io/java_io_compiled
examples/java/kademlia/java_kademlia_compiled
examples/java/master_slave_bypass/java_master_slave_bypass_compiled
--- /dev/null
+set(example java_energy)
+set(sources
+ ${CMAKE_CURRENT_SOURCE_DIR}/EnergyConsumer.java
+ ${CMAKE_CURRENT_SOURCE_DIR}/Energy.java
+ )
+
+if(enable_java)
+ add_custom_command(
+ COMMENT "Building ${example}..."
+ OUTPUT ${example}_compiled
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
+ -d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
+ COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
+ COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
+ )
+ add_custom_target(${example} ALL DEPENDS ${example}_compiled)
+endif()
+
+set(tesh_files
+ ${tesh_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/energy.tesh
+ PARENT_SCOPE
+ )
+set(xml_files
+ ${xml_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/energyDeployment.xml
+ PARENT_SCOPE
+ )
+set(examples_src
+ ${examples_src}
+ ${sources}
+ PARENT_SCOPE
+ )
+set(bin_files
+ ${bin_files}
+ PARENT_SCOPE
+ )
+set(txt_files
+ ${txt_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/README
+ PARENT_SCOPE
+ )
--- /dev/null
+/* Copyright (c) 2012-2014. 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. */
+
+package energy;
+
+import org.simgrid.msg.Host;
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.MsgException;
+/**
+ * Example showing the use of the new experimental Cloud API.
+ */
+public class Energy {
+ public static final double task_comp_size = 10;
+ public static final double task_comm_size = 10;
+ public static final int hostNB = 2 ;
+ public static void main(String[] args) throws MsgException {
+ Msg.energyInit();
+ Msg.init(args);
+
+ if (args.length < 1) {
+ Msg.info("Usage : Cloud platform_file");
+ Msg.info("Usage : Cloud platform.xml");
+ System.exit(1);
+ }
+ /* Construct the platform */
+ Msg.createEnvironment(args[0]);
+ Host[] hosts = Host.all();
+ if (hosts.length < 1) {
+ Msg.info("I need at least one host in the platform file, but " + args[0] + " contains only " + hosts.length + " hosts");
+ System.exit(42);
+ }
+ /* Instanciate a process */
+ new EnergyConsumer(hosts[0],"energyConsumer",null).start();
+ /* Execute the simulation */
+ Msg.run();
+
+ }
+}
--- /dev/null
+/* Copyright (c) 2006-2014. 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. */
+
+package energy;
+
+import org.simgrid.msg.Comm;
+import org.simgrid.msg.Host;
+import org.simgrid.msg.Msg;
+import org.simgrid.msg.MsgException;
+import org.simgrid.msg.Process;
+import org.simgrid.msg.Task;
+import org.simgrid.msg.TimeoutException;
+
+public class EnergyConsumer extends Process {
+ public EnergyConsumer(Host host, String name, String[] args) {
+ super(host,name,args);
+ }
+ @Override
+ public void main(String[] args) throws MsgException {
+ Msg.info("Currently consumed energy: "+getHost().getConsumedEnergy());
+ this.waitFor(10);
+ Msg.info("Currently consumed energy after sleeping 10 sec: "+getHost().getConsumedEnergy());
+ new Task(null, 1E9, 0).execute();
+ Msg.info("Currently consumed energy after executing 1E9 flops: "+getHost().getConsumedEnergy());
+ }
+}
--- /dev/null
+#! tesh
+
+! timeout 15
+
+$ java -classpath ${classpath:=.} energy/Energy ${srcdir:=.}/../platforms/energy_platform.xml
+> [0.000000] [jmsg/INFO] Using regular java threads.
+> [MyHost1:energyConsumer:(1) 0.000000] [jmsg/INFO] Currently consumed energy: 0.0
+> [MyHost1:energyConsumer:(1) 10.000000] [jmsg/INFO] Currently consumed energy after sleeping 10 sec: 1000.0
+> [MyHost1:energyConsumer:(1) 20.000000] [jmsg/INFO] Currently consumed energy after executing 1E9 flops: 3000.0
+> [20.000000] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
+> [20.000000] [surf_energy/INFO] Total energy of host MyHost1: 3000.000000 Joules
+> [20.000000] [surf_energy/INFO] Total energy of host MyHost2: 2000.000000 Joules
+> [20.000000] [surf_energy/INFO] Total energy of host MyHost3: 2000.000000 Joules
+
/* Schedule them all on the first workstation */
XBT_INFO("------------------- Schedule tasks ---------------------------");
const SD_workstation_t *ws_list = SD_workstation_get_list();
- int totalHosts = SD_workstation_get_number();
+ int totalHosts = SD_workstation_get_count();
qsort((void *) ws_list, totalHosts, sizeof(SD_workstation_t),
name_compare_hosts);
- int count = SD_workstation_get_number();
+ int count = SD_workstation_get_count();
xbt_dynar_foreach(dax, cursor, task) {
if (SD_task_get_kind(task) == SD_TASK_COMP_SEQ) {
if (!strcmp(SD_task_get_name(task), "end"))
XBT_INFO("------------------- Schedule tasks ---------------------------");
const SD_workstation_t *ws_list = SD_workstation_get_list();
- int count = SD_workstation_get_number();
+ int count = SD_workstation_get_count();
xbt_dynar_foreach(dot, cursor, task) {
if (SD_task_get_kind(task) == SD_TASK_COMP_SEQ) {
if (!strcmp(SD_task_get_name(task), "end"))
/* Schedule them all on all the first workstation */
XBT_INFO("------------------- Schedule tasks ---------------------------");
const SD_workstation_t *ws_list = SD_workstation_get_list();
- int count = SD_workstation_get_number();
+ int count = SD_workstation_get_count();
xbt_dynar_foreach(dot, cursor, task) {
if (SD_task_get_kind(task) == SD_TASK_COMP_PAR_AMDAHL) {
SD_task_schedulev(task, count, ws_list);
xbt_dynar_t done = NULL;
xbt_os_cputimer_start(timer);
- send_one(0,SD_workstation_get_number());
+ send_one(0,SD_workstation_get_count());
do {
if (done != NULL && !xbt_dynar_is_empty(done)) {
unsigned int cursor;
SD_config("host/model", "default");
SD_create_environment(argv[1]);
workstations = SD_workstation_get_list();
- total_nworkstations = SD_workstation_get_number();
+ total_nworkstations = SD_workstation_get_count();
for (ctr=0; ctr<total_nworkstations;ctr++){
current_storage_list = SD_workstation_get_mounted_storage_list(workstations[ctr]);
/* test the estimation functions */
workstations = SD_workstation_get_list();
- ws_nr = SD_workstation_get_number();
+ ws_nr = SD_workstation_get_count();
/* Show routes between all workstation */
route_size = SD_route_get_size(w1, w2);
for (k = 0; k < route_size; k++) {
XBT_INFO("\tLink %s: latency = %f, bandwidth = %f",
- SD_link_get_name(route[k]),
- SD_link_get_current_latency(route[k]),
- SD_link_get_current_bandwidth(route[k]));
+ sg_link_name(route[k]),
+ sg_link_latency(route[k]),
+ sg_link_bandwidth(route[k]));
}
}
}
> [0.000000] [test/INFO] Property: Hdd old value: 120
> [0.000000] [test/INFO] Property: Hdd new value: 250
> [0.000000] [sd_workstation/INFO] Displaying workstation host2
-> [0.000000] [sd_workstation/INFO] - power: 1000000000
-> [0.000000] [sd_workstation/INFO] - available power: 1.00
+> [0.000000] [sd_workstation/INFO] - speed: 1000000000
+> [0.000000] [sd_workstation/INFO] - available speed: 1.00
> [0.000000] [sd_workstation/INFO] - access mode: Exclusive
> [0.000000] [sd_workstation/INFO] no task running
> [0.000000] [sd_workstation/INFO] - properties:
int i;
double EFT, min_EFT = -1.0;
const SD_workstation_t *workstations = SD_workstation_get_list();
- int nworkstations = SD_workstation_get_number();
+ int nworkstations = SD_workstation_get_count();
SD_workstation_t best_workstation;
best_workstation = workstations[0];
{
unsigned int i, j, k;
int current_nworkstations;
- const int nworkstations = SD_workstation_get_number();
+ const int nworkstations = SD_workstation_get_count();
const SD_workstation_t *workstations = SD_workstation_get_list();
SD_task_t task;
SD_workstation_t *list;
SD_create_environment(argv[1]);
/* Allocating the workstation attribute */
- total_nworkstations = SD_workstation_get_number();
+ total_nworkstations = SD_workstation_get_count();
workstations = SD_workstation_get_list();
for (cursor = 0; cursor < total_nworkstations; cursor++)
while (!xbt_dynar_is_empty((changed_tasks = SD_simulate(-1.0)))) {
XBT_INFO("link1: bw=%.0f, lat=%f",
- SD_route_get_current_bandwidth(workstations[0], workstations[1]),
- SD_route_get_current_latency(workstations[0], workstations[1]));
- XBT_INFO("Jupiter: power=%.0f",
- SD_workstation_get_power(workstations[0])*
- SD_workstation_get_available_power(workstations[0]));
- XBT_INFO("Tremblay: power=%.0f",
- SD_workstation_get_power(workstations[1])*
- SD_workstation_get_available_power(workstations[1]));
+ SD_route_get_bandwidth(workstations[0], workstations[1]),
+ SD_route_get_latency(workstations[0], workstations[1]));
+ XBT_INFO("Jupiter: speed=%.0f",
+ SD_workstation_get_speed(workstations[0])*
+ SD_workstation_get_available_speed(workstations[0]));
+ XBT_INFO("Tremblay: speed=%.0f",
+ SD_workstation_get_speed(workstations[1])*
+ SD_workstation_get_available_speed(workstations[1]));
xbt_dynar_foreach(changed_tasks, ctr, task) {
XBT_INFO("Task '%s' start time: %f, finish time: %f",
SD_task_get_name(task),
route_size = SD_route_get_size(w1, w2);
for (i = 0; i < route_size; i++) {
XBT_INFO(" Link %s: latency = %f, bandwidth = %f",
- SD_link_get_name(route[i]),
- SD_link_get_current_latency(route[i]),
- SD_link_get_current_bandwidth(route[i]));
+ sg_link_name(route[i]),
+ sg_link_latency(route[i]),
+ sg_link_bandwidth(route[i]));
}
XBT_INFO("Route latency = %f, route bandwidth = %f",
- SD_route_get_current_latency(w1, w2),
- SD_route_get_current_bandwidth(w1, w2));
+ SD_route_get_latency(w1, w2),
+ SD_route_get_bandwidth(w1, w2));
XBT_INFO("Communication time for %f bytes between %s and %s: %f",
communication_amount12, name1, name2,
SD_route_get_communication_time(w1, w2, communication_amount12));
argv[1]);
/* getting platform infos */
- n_hosts = SD_workstation_get_number();
+ n_hosts = SD_workstation_get_count();
hosts = SD_workstation_get_list();
/* sorting hosts by hostname */
> [0.000000] [sd_test/INFO] Route latency = 0.070615, route bandwidth = 472125.000000
> [0.000000] [sd_test/INFO] Communication time for 2000000.000000 bytes between Jacquelin and Intel: 4.306781
> [0.000000] [sd_test/INFO] Communication time for 3000000.000000 bytes between Intel and Jacquelin: 6.424864
-> [0.000000] [sd_test/INFO] Estimated time for 'Task D': 6.502761
+> [0.000000] [sd_test/INFO] Estimated time for 'Task D': 6.432146
> [21.322061] [sd_test/INFO] Task 'Task D' start time: 0.000000, finish time: 10.661030
> [21.322061] [sd_test/INFO] Task 'Task B' start time: 10.661030, finish time: 21.322061
$ $SG_TEST_EXENV ${bindir:=.}/sd_avail two_hosts.xml
> [0.000000] [surf_host/INFO] Switching to the L07 model to handle parallel tasks.
> [1.000000] [sd_avail/INFO] link1: bw=125000000, lat=0.000100
-> [1.000000] [sd_avail/INFO] Jupiter: power=12500000
-> [1.000000] [sd_avail/INFO] Tremblay: power=12500000
+> [1.000000] [sd_avail/INFO] Jupiter: speed=12500000
+> [1.000000] [sd_avail/INFO] Tremblay: speed=12500000
> [1.000000] [sd_avail/INFO] Task 't1' start time: 0.000000, finish time: 1.000000
> [2.000200] [sd_avail/INFO] link1: bw=62500000, lat=0.000100
-> [2.000200] [sd_avail/INFO] Jupiter: power=12500000
-> [2.000200] [sd_avail/INFO] Tremblay: power=25000000
+> [2.000200] [sd_avail/INFO] Jupiter: speed=12500000
+> [2.000200] [sd_avail/INFO] Tremblay: speed=25000000
> [2.000200] [sd_avail/INFO] Task 'c1' start time: 1.000000, finish time: 2.000200
> [3.000200] [sd_avail/INFO] link1: bw=62500000, lat=0.000100
-> [3.000200] [sd_avail/INFO] Jupiter: power=12500000
-> [3.000200] [sd_avail/INFO] Tremblay: power=25000000
+> [3.000200] [sd_avail/INFO] Jupiter: speed=12500000
+> [3.000200] [sd_avail/INFO] Tremblay: speed=25000000
> [3.000200] [sd_avail/INFO] Task 't2' start time: 2.000200, finish time: 3.000200
> [4.000600] [sd_avail/INFO] link1: bw=31250000, lat=0.000100
-> [4.000600] [sd_avail/INFO] Jupiter: power=25000000
-> [4.000600] [sd_avail/INFO] Tremblay: power=25000000
+> [4.000600] [sd_avail/INFO] Jupiter: speed=25000000
+> [4.000600] [sd_avail/INFO] Tremblay: speed=25000000
> [4.000600] [sd_avail/INFO] Task 'c2' start time: 3.000200, finish time: 4.000600
> [5.000600] [sd_avail/INFO] link1: bw=31250000, lat=0.000100
-> [5.000600] [sd_avail/INFO] Jupiter: power=25000000
-> [5.000600] [sd_avail/INFO] Tremblay: power=25000000
+> [5.000600] [sd_avail/INFO] Jupiter: speed=25000000
+> [5.000600] [sd_avail/INFO] Tremblay: speed=25000000
> [5.000600] [sd_avail/INFO] Task 't3' start time: 4.000600, finish time: 5.000600
> [6.000700] [sd_avail/INFO] link1: bw=31250000, lat=0.000100
-> [6.000700] [sd_avail/INFO] Jupiter: power=25000000
-> [6.000700] [sd_avail/INFO] Tremblay: power=25000000
+> [6.000700] [sd_avail/INFO] Jupiter: speed=25000000
+> [6.000700] [sd_avail/INFO] Tremblay: speed=25000000
> [6.000700] [sd_avail/INFO] Task 'c3' start time: 5.000600, finish time: 6.000700
> [7.000700] [sd_avail/INFO] link1: bw=31250000, lat=0.000100
-> [7.000700] [sd_avail/INFO] Jupiter: power=25000000
-> [7.000700] [sd_avail/INFO] Tremblay: power=25000000
+> [7.000700] [sd_avail/INFO] Jupiter: speed=25000000
+> [7.000700] [sd_avail/INFO] Tremblay: speed=25000000
> [7.000700] [sd_avail/INFO] Task 't4' start time: 6.000700, finish time: 7.000700
\ No newline at end of file
$ $SG_TEST_EXENV ./sd_seq_access ${srcdir:=.}/2clusters.xml
> [0.000000] [surf_host/INFO] Switching to the L07 model to handle parallel tasks.
> [0.000000] [sd_workstation/INFO] Displaying workstation C2-05
-> [0.000000] [sd_workstation/INFO] - power: 5000000000
-> [0.000000] [sd_workstation/INFO] - available power: 1.00
+> [0.000000] [sd_workstation/INFO] - speed: 5000000000
+> [0.000000] [sd_workstation/INFO] - available speed: 1.00
> [0.000000] [sd_workstation/INFO] - access mode: Space shared
> [0.000000] [sd_seq_access/INFO] Change access mode of C2-05 to sequential
> [0.000000] [sd_workstation/INFO] Displaying workstation C2-06
-> [0.000000] [sd_workstation/INFO] - power: 5000000000
-> [0.000000] [sd_workstation/INFO] - available power: 1.00
+> [0.000000] [sd_workstation/INFO] - speed: 5000000000
+> [0.000000] [sd_workstation/INFO] - available speed: 1.00
> [0.000000] [sd_workstation/INFO] - access mode: Space shared
> [0.000000] [sd_seq_access/INFO] Change access mode of C2-06 to sequential
> [0.000000] [sd_seq_access/INFO] Change access mode of C2-06 to shared
> [0.000000] [sd_seq_access/INFO] Simulation was suspended, check workstation states
> [0.000000] [sd_workstation/INFO] Displaying workstation C2-05
-> [0.000000] [sd_workstation/INFO] - power: 5000000000
-> [0.000000] [sd_workstation/INFO] - available power: 1.00
+> [0.000000] [sd_workstation/INFO] - speed: 5000000000
+> [0.000000] [sd_workstation/INFO] - available speed: 1.00
> [0.000000] [sd_workstation/INFO] - access mode: Exclusive
> [0.000000] [sd_workstation/INFO] current running task: Task A
> [0.000000] [sd_workstation/INFO] Displaying workstation C2-06
-> [0.000000] [sd_workstation/INFO] - power: 5000000000
-> [0.000000] [sd_workstation/INFO] - available power: 1.00
+> [0.000000] [sd_workstation/INFO] - speed: 5000000000
+> [0.000000] [sd_workstation/INFO] - available speed: 1.00
> [0.000000] [sd_workstation/INFO] - access mode: Space shared
> [4.000000] [sd_seq_access/INFO] Simulation was suspended, check workstation states
> [4.000000] [sd_workstation/INFO] Displaying workstation C2-05
-> [4.000000] [sd_workstation/INFO] - power: 5000000000
-> [4.000000] [sd_workstation/INFO] - available power: 1.00
+> [4.000000] [sd_workstation/INFO] - speed: 5000000000
+> [4.000000] [sd_workstation/INFO] - available speed: 1.00
> [4.000000] [sd_workstation/INFO] - access mode: Exclusive
> [4.000000] [sd_workstation/INFO] current running task: Task B
> [4.000000] [sd_workstation/INFO] Displaying workstation C2-06
-> [4.000000] [sd_workstation/INFO] - power: 5000000000
-> [4.000000] [sd_workstation/INFO] - available power: 1.00
+> [4.000000] [sd_workstation/INFO] - speed: 5000000000
+> [4.000000] [sd_workstation/INFO] - available speed: 1.00
> [4.000000] [sd_workstation/INFO] - access mode: Space shared
> [5.600300] [sd_seq_access/INFO] Simulation was suspended, check workstation states
> [5.600300] [sd_workstation/INFO] Displaying workstation C2-05
-> [5.600300] [sd_workstation/INFO] - power: 5000000000
-> [5.600300] [sd_workstation/INFO] - available power: 1.00
+> [5.600300] [sd_workstation/INFO] - speed: 5000000000
+> [5.600300] [sd_workstation/INFO] - available speed: 1.00
> [5.600300] [sd_workstation/INFO] - access mode: Exclusive
> [5.600300] [sd_workstation/INFO] no task running
> [5.600300] [sd_workstation/INFO] Displaying workstation C2-06
-> [5.600300] [sd_workstation/INFO] - power: 5000000000
-> [5.600300] [sd_workstation/INFO] - available power: 1.00
+> [5.600300] [sd_workstation/INFO] - speed: 5000000000
+> [5.600300] [sd_workstation/INFO] - available speed: 1.00
> [5.600300] [sd_workstation/INFO] - access mode: Space shared
> [9.600300] [sd_seq_access/INFO] Simulation was suspended, check workstation states
> [9.600300] [sd_workstation/INFO] Displaying workstation C2-05
-> [9.600300] [sd_workstation/INFO] - power: 5000000000
-> [9.600300] [sd_workstation/INFO] - available power: 1.00
+> [9.600300] [sd_workstation/INFO] - speed: 5000000000
+> [9.600300] [sd_workstation/INFO] - available speed: 1.00
> [9.600300] [sd_workstation/INFO] - access mode: Exclusive
> [9.600300] [sd_workstation/INFO] no task running
> [9.600300] [sd_workstation/INFO] Displaying workstation C2-06
-> [9.600300] [sd_workstation/INFO] - power: 5000000000
-> [9.600300] [sd_workstation/INFO] - available power: 1.00
+> [9.600300] [sd_workstation/INFO] - speed: 5000000000
+> [9.600300] [sd_workstation/INFO] - available speed: 1.00
> [9.600300] [sd_workstation/INFO] - access mode: Space shared
> [22.000000] [sd_seq_access/INFO] Simulation was suspended, check workstation states
> [22.000000] [sd_workstation/INFO] Displaying workstation C2-05
-> [22.000000] [sd_workstation/INFO] - power: 5000000000
-> [22.000000] [sd_workstation/INFO] - available power: 1.00
+> [22.000000] [sd_workstation/INFO] - speed: 5000000000
+> [22.000000] [sd_workstation/INFO] - available speed: 1.00
> [22.000000] [sd_workstation/INFO] - access mode: Exclusive
> [22.000000] [sd_workstation/INFO] no task running
> [22.000000] [sd_workstation/INFO] Displaying workstation C2-06
-> [22.000000] [sd_workstation/INFO] - power: 5000000000
-> [22.000000] [sd_workstation/INFO] - available power: 1.00
+> [22.000000] [sd_workstation/INFO] - speed: 5000000000
+> [22.000000] [sd_workstation/INFO] - available speed: 1.00
> [22.000000] [sd_workstation/INFO] - access mode: Space shared
@see SD_task_management */
typedef enum {
SD_NOT_SCHEDULED = 0, /**< @brief Initial state (not valid for SD_watch and SD_unwatch). */
- SD_SCHEDULABLE = 0x0001, /**< @brief A task becomes SD_SCHEDULABLE as soon as its dependencies are satisfied */
+ SD_SCHEDULABLE = 0x0001, /**< @brief A task becomes SD_SCHEDULABLE as soon as its dependencies are satisfied */
SD_SCHEDULED = 0x0002, /**< @brief A task becomes SD_SCHEDULED when you call function
SD_task_schedule. SD_simulate will execute it when it becomes SD_RUNNABLE. */
SD_RUNNABLE = 0x0004, /**< @brief A scheduled task becomes runnable is SD_simulate as soon as its dependencies are satisfied. */
* @{
*/
XBT_PUBLIC(const SD_link_t *) SD_link_get_list(void);
-/** @brief Returns the number of links in the whole platform */
-static inline int SD_link_get_number(void) {
- return sg_link_count();
-}
-/** @brief Returns the user data of a link */
-static inline void *SD_link_get_data(SD_link_t link) {
- return sg_link_data(link);
-}
-
-/** @brief Sets the user data of a link
- *
- * The new data can be \c NULL. The old data should have been freed first
- * if it was not \c NULL.
- */
-static inline void SD_link_set_data(SD_link_t link, void *data) {
- sg_link_data_set(link, data);
-}
-/** @brief Returns the name of a link */
-static inline const char *SD_link_get_name(SD_link_t link) {
- return sg_link_name(link);
-}
-/** @brief Returns the current bandwidth of a link (in bytes per second) */
-static inline double SD_link_get_current_bandwidth(SD_link_t link) {
- return sg_link_bandwidth(link);
-}
-/** @brief Returns the current latency of a link (in seconds) */
-static inline double SD_link_get_current_latency(SD_link_t link){
- return sg_link_latency(link);
-}
-/** @brief Returns the sharing policy of this workstation.
- * @return true if the link is shared, and false if it's a fatpipe
- */
-static inline int SD_link_is_shared(SD_link_t link) {
- return sg_link_is_shared(link);
-}
/** @} */
/************************** Workstation handling ****************************/
*/
XBT_PUBLIC(SD_workstation_t) SD_workstation_get_by_name(const char *name);
XBT_PUBLIC(const SD_workstation_t *) SD_workstation_get_list(void);
-XBT_PUBLIC(int) SD_workstation_get_number(void);
+XBT_PUBLIC(int) SD_workstation_get_count(void);
XBT_PUBLIC(void) SD_workstation_set_data(SD_workstation_t workstation,
void *data);
XBT_PUBLIC(void *) SD_workstation_get_data(SD_workstation_t workstation);
SD_workstation_t dst);
XBT_PUBLIC(int) SD_route_get_size(SD_workstation_t src,
SD_workstation_t dst);
-XBT_PUBLIC(double) SD_workstation_get_power(SD_workstation_t workstation);
-XBT_PUBLIC(double) SD_workstation_get_available_power(SD_workstation_t
+XBT_PUBLIC(double) SD_workstation_get_speed(SD_workstation_t workstation);
+XBT_PUBLIC(double) SD_workstation_get_available_speed(SD_workstation_t
workstation);
XBT_PUBLIC(int) SD_workstation_get_cores(SD_workstation_t workstation);
XBT_PUBLIC(e_SD_workstation_access_mode_t)
XBT_PUBLIC(double) SD_workstation_get_computation_time(SD_workstation_t workstation,
double flops_amount);
-XBT_PUBLIC(double) SD_route_get_current_latency(SD_workstation_t src,
+XBT_PUBLIC(double) SD_route_get_latency(SD_workstation_t src,
SD_workstation_t dst);
-XBT_PUBLIC(double) SD_route_get_current_bandwidth(SD_workstation_t src,
+XBT_PUBLIC(double) SD_route_get_bandwidth(SD_workstation_t src,
SD_workstation_t dst);
XBT_PUBLIC(double) SD_route_get_communication_time(SD_workstation_t src,
SD_workstation_t dst,
}
}
+
+
+#include "simgrid/plugins/energy.h"
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_Msg_energyInit(void) {
+ sg_energy_plugin_init();
+}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs);
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_Msg_energyInit(void);
+
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_debug(JNIEnv *, jclass,
jstring);
env->ReleaseStringUTFChars((jstring) jname, name);
}
+
+#include "simgrid/plugins/energy.h"
+JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Host_getConsumedEnergy (JNIEnv *env, jobject jhost) {
+ msg_host_t host = jhost_get_native(env, jhost);
+
+ if (!host) {
+ jxbt_throw_notbound(env, "host", jhost);
+ return 0;
+ }
+
+ return MSG_host_get_consumed_energy(host);
+
+}
+
JNIEXPORT void JNICALL
Java_org_simgrid_msg_Host_setAsyncMailbox(JNIEnv * env, jclass cls_arg, jobject jname);
+JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Host_getConsumedEnergy
+ (JNIEnv *, jobject);
#endif /*!MSG_JHOST_H */
*/
public native String[] getAttachedStorage();
+ /** Returns the amount of Joules consumed by that host so far */
+ public native double getConsumedEnergy();
/**
* Class initializer, to initialize various JNI stuff
* @param args The arguments of the command line of the simulation.
*/
public final static native void init(String[]args);
+
+ /** Tell the kernel that you want to use the energy plugin */
+ public final static native void energyInit();
/**
* Run the MSG simulation.
XBT_DEBUG("Workstation number: %d, link number: %d",
- SD_workstation_get_number(), SD_link_get_number());
+ SD_workstation_get_count(), sg_link_count());
#ifdef HAVE_JEDULE
jedule_setup_platform();
#endif
* \see SD_workstation_get_number()
*/
const SD_workstation_t *SD_workstation_get_list(void) {
- xbt_assert(SD_workstation_get_number() > 0, "There is no workstation!");
+ xbt_assert(SD_workstation_get_count() > 0, "There is no workstation!");
if (sd_global->workstation_list == NULL) /* this is the first time the function is called */
sd_global->workstation_list = (SD_workstation_t*)xbt_dynar_to_array(sg_hosts_as_dynar());
* \return the number of existing workstations
* \see SD_workstation_get_list()
*/
-int SD_workstation_get_number(void)
+int SD_workstation_get_count(void)
{
return sg_host_count();
}
SD_task_t task = NULL;
XBT_INFO("Displaying workstation %s", SD_workstation_get_name(ws));
- XBT_INFO(" - power: %.0f", SD_workstation_get_power(ws));
- XBT_INFO(" - available power: %.2f", SD_workstation_get_available_power(ws));
+ XBT_INFO(" - speed: %.0f", SD_workstation_get_speed(ws));
+ XBT_INFO(" - available speed: %.2f", SD_workstation_get_available_speed(ws));
switch (sg_host_sd(ws)->access_mode){
case SD_WORKSTATION_SHARED_ACCESS:
XBT_INFO(" - access mode: Space shared");
if (sd_global->recyclable_route == NULL) {
/* first run */
- sd_global->recyclable_route = xbt_new(SD_link_t, SD_link_get_number());
+ sd_global->recyclable_route = xbt_new(SD_link_t, sg_link_count());
}
surf_route = surf_host_model_get_route((surf_host_model_t)surf_host_model, src, dst);
}
/**
- * \brief Returns the total power of a workstation
+ * \brief Returns the total speed of a workstation
*
* \param workstation a workstation
- * \return the total power of this workstation
- * \see SD_workstation_get_available_power()
+ * \return the total speed of this workstation
+ * \see SD_workstation_get_available_speed()
*/
-double SD_workstation_get_power(SD_workstation_t workstation)
+double SD_workstation_get_speed(SD_workstation_t workstation)
{
return workstation->speed();
}
}
/**
- * \brief Returns the proportion of available power in a workstation
+ * \brief Returns the proportion of available speed in a workstation
*
* \param workstation a workstation
- * \return the proportion of power currently available in this workstation (normally a number between 0 and 1)
- * \see SD_workstation_get_power()
+ * \return the proportion of speed currently available in this workstation (normally a number between 0 and 1)
+ * \see SD_workstation_get_speed()
*/
-double SD_workstation_get_available_power(SD_workstation_t workstation)
+double SD_workstation_get_available_speed(SD_workstation_t workstation)
{
return surf_host_get_available_speed(workstation);
}
{
xbt_assert(flops_amount >= 0,
"flops_amount must be greater than or equal to zero");
- return flops_amount / SD_workstation_get_power(workstation);
+ return flops_amount / SD_workstation_get_speed(workstation);
}
/**
* \param src the first workstation
* \param dst the second workstation
* \return the latency of the route between the two workstations (in seconds)
- * \see SD_route_get_current_bandwidth()
+ * \see SD_route_get_bandwidth()
*/
-double SD_route_get_current_latency(SD_workstation_t src, SD_workstation_t dst)
+double SD_route_get_latency(SD_workstation_t src, SD_workstation_t dst)
{
xbt_dynar_t route = NULL;
- double latency;
+ double latency = 0;
routing_platf->getRouteAndLatency(src->pimpl_netcard, dst->pimpl_netcard,
&route, &latency);
}
/**
- * \brief Returns the bandwidth of the route between two workstations, i.e. the minimum link bandwidth of all
- * between the workstations.
+ * \brief Returns the bandwidth of the route between two workstations,
+ * i.e. the minimum link bandwidth of all between the workstations.
*
* \param src the first workstation
* \param dst the second workstation
- * \return the bandwidth of the route between the two workstations (in bytes/second)
- * \see SD_route_get_current_latency()
+ * \return the bandwidth of the route between the two workstations
+ * (in bytes/second)
+ * \see SD_route_get_latency()
*/
-double SD_route_get_current_bandwidth(SD_workstation_t src,
- SD_workstation_t dst)
+double SD_route_get_bandwidth(SD_workstation_t src, SD_workstation_t dst)
{
const SD_link_t *links;
min_bandwidth = -1.0;
for (i = 0; i < nb_links; i++) {
- bandwidth = SD_link_get_current_bandwidth(links[i]);
+ bandwidth = sg_link_bandwidth(links[i]);
if (bandwidth < min_bandwidth || min_bandwidth == -1.0)
min_bandwidth = bandwidth;
}
xbt_dynar_t route = NULL;
int nb_links;
double bandwidth, min_bandwidth;
- double latency;
+ double latency = 0;
int i;
xbt_assert(bytes_amount >= 0, "bytes_amount must be greater than or equal to zero");
min_bandwidth = -1.0;
for (i = 0; i < nb_links; i++) {
- bandwidth = SD_link_get_current_bandwidth(links[i]);
+ bandwidth = sg_link_bandwidth(links[i]);
if (bandwidth < min_bandwidth || min_bandwidth == -1.0)
min_bandwidth = bandwidth;
}
SD_task_t task;
const SD_workstation_t *ws_list = SD_workstation_get_list();
- int totalHosts = SD_workstation_get_number();
+ int totalHosts = SD_workstation_get_count();
qsort((void *) ws_list, totalHosts, sizeof(SD_workstation_t),
name_compare_hosts);
- int count = SD_workstation_get_number();
- //fprintf(stdout, "No. workstations: %d, %d\n", count, (dax != NULL));
+ //fprintf(stdout, "No. workstations: %d, %d\n", totalHosts, (dax != NULL));
xbt_dynar_foreach(dax, cursor, task) {
if (SD_task_get_kind(task) == SD_TASK_COMP_SEQ) {
SD_task_schedulel(task, 1, ws_list[0]);
} else {
fprintf(stdout, "Scheduling %s to node: %s\n", SD_task_get_name(task),
- SD_workstation_get_name(ws_list[(cursor) % count]));
- SD_task_schedulel(task, 1, ws_list[(cursor) % count]);
+ SD_workstation_get_name(ws_list[(cursor) % totalHosts]));
+ SD_task_schedulel(task, 1, ws_list[(cursor) % totalHosts]);
}
}
}
SD_create_environment(argv[1]);
workstations = SD_workstation_get_list();
- list_size = SD_workstation_get_number();
+ list_size = SD_workstation_get_count();
/* Random number initialization */
srand( (int) (xbt_os_time()*1000) );
/* Display the result and exit after cleanup */
printf( "%f\n", xbt_os_timer_elapsed(timer) );
printf("Workstation number: %d, link number: %d\n",
- SD_workstation_get_number(), SD_link_get_number());
+ SD_workstation_get_count(), sg_link_count());
if(argv[2]){
printf("Wait for %ss\n",argv[2]);
sleep(atoi(argv[2]));
"SimDag test basic_link_test");
static int cmp_link(const void*a, const void*b) {
- const char *nameA = SD_link_get_name(*(SD_link_t*)a);
- const char *nameB = SD_link_get_name(*(SD_link_t*)b);
+ const char *nameA = sg_link_name(*(SD_link_t*)a);
+ const char *nameB = sg_link_name(*(SD_link_t*)b);
return strcmp( nameA, nameB );
}
/* creation of the environment */
SD_create_environment(argv[1]);
links = SD_link_get_list();
- int count = SD_link_get_number();
+ int count = sg_link_count();
XBT_INFO("Link count: %d", count);
qsort((void *)links, count, sizeof(SD_link_t), cmp_link);
- for(i=0; i<SD_link_get_number();i++){
+ for(i=0; i < count; i++){
XBT_INFO("%s: latency = %.5f, bandwidth = %f",
- SD_link_get_name(links[i]),
- SD_link_get_current_latency(links[i]),
- SD_link_get_current_bandwidth(links[i]));
- SD_link_set_data(links[i], (void*) user_data);
- if(strcmp(user_data, (const char*)SD_link_get_data(links[i]))){
+ sg_link_name(links[i]),
+ sg_link_latency(links[i]),
+ sg_link_bandwidth(links[i]));
+ sg_link_data_set(links[i], (void*) user_data);
+ if(strcmp(user_data, (const char*)sg_link_data(links[i]))){
XBT_ERROR("User data was corrupted.");
}
}
/* creation of the environment */
SD_create_environment(argv[1]);
printf("Workstation number: %d, link number: %d\n",
- SD_workstation_get_number(), SD_link_get_number());
+ SD_workstation_get_count(), sg_link_count());
if (argc >= 3) {
if (!strcmp(argv[2], "ONE_LINK")) {
printf("Route size %d\n", route_size);
for (i = 0; i < route_size; i++) {
printf(" Link %s: latency = %f, bandwidth = %f\n",
- SD_link_get_name(route[i]),
- SD_link_get_current_latency(route[i]),
- SD_link_get_current_bandwidth(route[i]));
+ sg_link_name(route[i]),
+ sg_link_latency(route[i]),
+ sg_link_bandwidth(route[i]));
}
printf("Route latency = %f, route bandwidth = %f\n",
- SD_route_get_current_latency(w1, w2),
- SD_route_get_current_bandwidth(w1, w2));
+ SD_route_get_latency(w1, w2),
+ SD_route_get_bandwidth(w1, w2));
}
if (!strcmp(argv[2], "FULL_LINK")) {
workstations = SD_workstation_get_list();
- list_size = SD_workstation_get_number();
+ list_size = SD_workstation_get_count();
for (i = 0; i < list_size; i++) {
w1 = workstations[i];
name1 = SD_workstation_get_name(w1);
printf(" Route size %d\n", route_size);
for (k = 0; k < route_size; k++) {
printf(" Link %s: latency = %f, bandwidth = %f\n",
- SD_link_get_name(route[k]),
- SD_link_get_current_latency(route[k]),
- SD_link_get_current_bandwidth(route[k]));
+ sg_link_name(route[k]),
+ sg_link_latency(route[k]),
+ sg_link_bandwidth(route[k]));
}
printf(" Route latency = %f, route bandwidth = %f\n",
- SD_route_get_current_latency(w1, w2),
- SD_route_get_current_bandwidth(w1, w2));
+ SD_route_get_latency(w1, w2),
+ SD_route_get_bandwidth(w1, w2));
}
}
}
static int name_compare_links(const void *n1, const void *n2)
{
char name1[80], name2[80];
- strcpy(name1, SD_link_get_name(*((SD_link_t *) n1)));
- strcpy(name2, SD_link_get_name(*((SD_link_t *) n2)));
+ strcpy(name1, sg_link_name(*((SD_link_t *) n1)));
+ strcpy(name2, sg_link_name(*((SD_link_t *) n2)));
return strcmp(name1, name2);
}
if (timings) {
XBT_INFO("Parsing time: %fs (%d hosts, %d links)",
- xbt_os_timer_elapsed(parse_time),SD_workstation_get_number(),SD_link_get_number());
+ xbt_os_timer_elapsed(parse_time),SD_workstation_get_count(),
+ sg_link_count());
} else {
printf("<?xml version='1.0'?>\n");
printf("<!DOCTYPE platform SYSTEM \"http://simgrid.gforge.inria.fr/simgrid.dtd\">\n");
printf("<AS id=\"AS0\" routing=\"Full\">\n");
// Hosts
- totalHosts = SD_workstation_get_number();
+ totalHosts = SD_workstation_get_count();
hosts = SD_workstation_get_list();
qsort((void *) hosts, totalHosts, sizeof(SD_workstation_t),
name_compare_hosts);
for (i = 0; i < totalHosts; i++) {
printf(" <host id=\"%s\" power=\"%.0f\"",
SD_workstation_get_name(hosts[i]),
- SD_workstation_get_power(hosts[i]));
+ SD_workstation_get_speed(hosts[i]));
props = SD_workstation_get_properties(hosts[i]);
if (SD_workstation_get_cores(hosts[i])>1) {
printf(" core=\"%d\"", SD_workstation_get_cores(hosts[i]));
}
// Links
- totalLinks = SD_link_get_number();
+ totalLinks = sg_link_count();
links = SD_link_get_list();
qsort((void *) links, totalLinks, sizeof(SD_link_t), name_compare_links);
printf(" <link id=\"");
printf("%s\" bandwidth=\"%.0f\" latency=\"%.9f\"",
- SD_link_get_name(links[i]),
- SD_link_get_current_bandwidth(links[i]),
- SD_link_get_current_latency(links[i]));
- if (SD_link_is_shared(links[i])) {
+ sg_link_name(links[i]),
+ sg_link_bandwidth(links[i]),
+ sg_link_latency(links[i]));
+ if (sg_link_is_shared(links[i])) {
printf("/>\n");
} else {
printf(" sharing_policy=\"FATPIPE\"/>\n");
size = xbt_dict_length(host_list) + xbt_lib_length(as_router_lib);
printf("Workstation number: %d, link number: %d, elmts number: %d\n",
- SD_workstation_get_number(), SD_link_get_number(), size);
+ SD_workstation_get_count(), sg_link_count(), size);
xbt_dict_foreach(host_list, cursor, key, data) {
printf(" - Seen: \"%s\" is type : %d\n", key,
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/cloud)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/cloud/migration)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/commTime)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/energy)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/io)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/kademlia)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/java/master_slave_bypass)
ADD_TESH(java-cloud --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/cloud/cloud.tesh)
ADD_TESH(java-cloud-migration --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/cloud/migration/migration.tesh)
ADD_TESH(java-commTime --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/commTime/commtime.tesh)
+ ADD_TESH(java-energy --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/energy/energy.tesh)
ADD_TESH(java-kademlia --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/kademlia/kademlia.tesh)
ADD_TESH(java-kill --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/master_slave_kill/kill.tesh)
ADD_TESH(java-masterslave --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/java --setenv classpath=${TESH_CLASSPATH} --cd ${CMAKE_BINARY_DIR}/examples/java ${CMAKE_HOME_DIRECTORY}/examples/java/masterslave/masterslave.tesh)