Several tools can be used to visualize the result of SimGrid
simulations and get a better understanding of simulations.
-- [viva][fn:1] will be useful to make fancy graph or treemap visualizations.
- [pajeng][fn:5] provides a Gantt-chart visualization.
- [Vite][fn:6] also provides a Gantt-chart visualization.
documentation of each software for more details.
~~~~{.sh}
-sudo apt-get install viva pajeng vite
+sudo apt-get install pajeng vite
~~~~
\section intro_start Let's get started
\c /opt/simgrid/bin/simgrid-colorizer. If you did not install it at all,
you can find it in <simgrid_root_directory>/bin/colorize.
-For a really fancy output, you should use [viva/triva][fn:1]:
-
-~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
- --cfg=tracing/uncategorized:yes --cfg=viva/uncategorized:uncat.plist
-LANG=C ; viva simgrid.trace uncat.plist
-~~~~
-
-For a more classical Gantt-Chart visualization, you can produce a
-[Paje][fn:5] trace:
+For a classical Gantt-Chart visualization, you can produce a [Paje][fn:5] trace:
~~~~{.sh}
./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
## Using the Tracing Mechanism
SimGrid can trace all resource consumption and the outcome can be
-displayed with viva as illustrated in the section \ref intro_setup. However, when several
+displayed as illustrated in the section \ref intro_setup. However, when several
masters are deployed, it is hard to understand what happens.
~~~~{.xml}
void MSG_task_set_category (msg_task_t task, const char *category);
~~~~
-The outcome can then be visualized as follows:
-
-~~~~{.sh}
-./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:yes\
- --cfg=tracing/categorized:yes --cfg=viva/categorized:viva_cat.plist
-LANG=C; viva simgrid.trace viva_cat.plist
-~~~~
-
-Right now, you should realize that nothing is behaving like you
-expect. Most workers are idle even though input data are ridiculous
-and there are several masters deployed on the platform. Using a
-Gantt-chart visualization may help:
+The outcome can then be visualized as a Gantt-chart as follows:
~~~~{.sh}
./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:yes \
pajeng simgrid.trace
~~~~
-OK, so it should now be obvious that round robin is actually
-very bad.
+Right now, you should realize that nothing is behaving like you expect. Most
+workers are idle even though input data are ridiculous and there are several
+masters deployed on the platform. So it should now be obvious that round robin
+is actually very bad.
## Improving the Scheduling
\section intro_todo TODO: Points to improve for the next time
- Propose equivalent exercises and skeleton in java.
-- Propose a virtualbox image with everything (simgrid, pajeng, viva,
- ...) already set up.
+- Propose a virtualbox image with everything (simgrid, pajeng, ...) already set
+ up.
- Ease the installation on mac OS X (binary installer) and
windows.
- Explain that programming in C or java and having a working
-/* Copyright (c) 2010, 2012-2016. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010, 2012-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. */
xbt_dynar_free (&link_variables);
}
- //create a customized viva graph configuration file
- FILE *fp = fopen ("viva_graph.plist", "w");
- if (fp == NULL){
- return 1;
- }
- fprintf (fp, "{\n node = (");
xbt_dynar_t nodes_type = TRACE_get_node_types ();
if (nodes_type){
XBT_INFO ("Node types in the trace:");
char *node_type;
xbt_dynar_foreach (nodes_type, cursor, node_type){
XBT_INFO ("%s", node_type);
- fprintf (fp, "%s, ", node_type);
}
xbt_dynar_free (&nodes_type);
}
- fprintf (fp, ");\n edge = (");
xbt_dynar_t edges_type = TRACE_get_edge_types ();
if (edges_type){
XBT_INFO ("Node types in the trace:");
char *edge_type;
xbt_dynar_foreach (edges_type, cursor, edge_type){
XBT_INFO ("%s", edge_type);
- fprintf (fp, "%s, ", edge_type);
}
xbt_dynar_free (&edges_type);
}
- fprintf (fp, ");\n");
- fprintf (fp, " host = {\n type = square;\n size = HDD_capacity; \n values = (HDD_utilization);\n };\n");
- fprintf (fp, " link = {\n type = rhombus;\n size = bandwidth;\n };\n");
- fprintf (fp, "}\n");
- fclose (fp);
return 0;
}