From f2e6b48eb3a7799a9670a54150ecdfc5139e2e21 Mon Sep 17 00:00:00 2001 From: Lucas Schnorr Date: Mon, 23 Jan 2012 16:57:31 +0100 Subject: [PATCH] [trace] new example inspired by storage systems to trace user variables --- buildtools/Cmake/AddTests.cmake | 1 + examples/msg/tracing/CMakeLists.txt | 2 + examples/msg/tracing/user_variables.c | 74 +++++++++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 examples/msg/tracing/user_variables.c diff --git a/buildtools/Cmake/AddTests.cmake b/buildtools/Cmake/AddTests.cmake index 1cebd63c21..be596bcdad 100644 --- a/buildtools/Cmake/AddTests.cmake +++ b/buildtools/Cmake/AddTests.cmake @@ -391,6 +391,7 @@ IF(HAVE_TRACING) ADD_TEST(tracing-help ${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms/basic_parsing_test --help-tracing) ADD_TEST(tracing-ms ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/ms.tesh) ADD_TEST(tracing-trace_platform ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/trace_platform.tesh) + ADD_TEST(tracing-user_variables ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/user_variables.tesh) ADD_TEST(tracing-categories ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/categories.tesh) ADD_TEST(tracing-process-migration ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg tracing/procmig.tesh) ADD_TEST(graphicator ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd ${CMAKE_HOME_DIRECTORY}/tools/graphicator graphicator.tesh) diff --git a/examples/msg/tracing/CMakeLists.txt b/examples/msg/tracing/CMakeLists.txt index e1772c9c48..55167d15f0 100644 --- a/examples/msg/tracing/CMakeLists.txt +++ b/examples/msg/tracing/CMakeLists.txt @@ -8,6 +8,7 @@ add_executable(categories ${CMAKE_CURRENT_SOURCE_DIR}/categories.c) add_executable(procmig ${CMAKE_CURRENT_SOURCE_DIR}/procmig.c) add_executable(simple ${CMAKE_CURRENT_SOURCE_DIR}/simple.c) add_executable(trace_platform ${CMAKE_CURRENT_SOURCE_DIR}/trace_platform.c) +add_executable(user_variables ${CMAKE_CURRENT_SOURCE_DIR}/user_variables.c) ### Add definitions for compile target_link_libraries(ms simgrid m ) @@ -15,6 +16,7 @@ target_link_libraries(categories simgrid m ) target_link_libraries(procmig simgrid m ) target_link_libraries(simple simgrid m ) target_link_libraries(trace_platform simgrid m ) +target_link_libraries(user_variables simgrid m ) ## Clean generated files get_directory_property(extra_clean_files ADDITIONAL_MAKE_CLEAN_FILES) diff --git a/examples/msg/tracing/user_variables.c b/examples/msg/tracing/user_variables.c new file mode 100644 index 0000000000..938e690615 --- /dev/null +++ b/examples/msg/tracing/user_variables.c @@ -0,0 +1,74 @@ +/* Copyright (c) 2010. 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. */ + +#include +#include "msg/msg.h" +#include "xbt/sysdep.h" /* calloc, printf */ + +/* Create a log channel to have nice outputs. */ +#include "xbt/log.h" +#include "xbt/asserts.h" +XBT_LOG_NEW_DEFAULT_CATEGORY(msg_test, "Messages specific for this msg example"); + +int master(int argc, char *argv[]); + +int master(int argc, char *argv[]) +{ + char *hostname = MSG_host_self()->name; + int i; + + //the hostname has an empty HDD with a capacity of 100000 (bytes) + TRACE_host_variable_set(hostname, "HDD_capacity", 100000); + TRACE_host_variable_set(hostname, "HDD_utilization", 0); + + for (i = 0; i < 10; i++) { + //create and execute a task just to make the simulated time advance + m_task_t task = MSG_task_create("task", 10000, 0, NULL); + MSG_task_execute (task); + MSG_task_destroy (task); + + //ADD: after the execution of this task, the HDD utilization increases by 100 (bytes) + TRACE_host_variable_add(hostname, "HDD_utilization", 100); + } + + for (i = 0; i < 10; i++) { + //create and execute a task just to make the simulated time advance + m_task_t task = MSG_task_create("task", 10000, 0, NULL); + MSG_task_execute (task); + MSG_task_destroy (task); + + //SUB: after the execution of this task, the HDD utilization decreases by 100 (bytes) + TRACE_host_variable_sub(hostname, "HDD_utilization", 100); + } + return 0; +} + +/** Main function */ +int main(int argc, char *argv[]) +{ + MSG_global_init(&argc, argv); + if (argc < 3) { + printf("Usage: %s platform_file deployment_file\n", argv[0]); + exit(1); + } + + char *platform_file = argv[1]; + char *deployment_file = argv[2]; + MSG_create_environment(platform_file); + + //declaring user variables + TRACE_host_variable_declare("HDD_capacity"); + TRACE_host_variable_declare("HDD_utilization"); + + //register functions and launch deployment + MSG_function_register("master", master); + MSG_function_register("slave", master); + MSG_launch_application(deployment_file); + + MSG_main(); + MSG_clean(); + return 0; +} -- 2.20.1