From d99d201b97673c0aafcf1d57524c1375ab4f2533 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Tue, 23 Jan 2018 09:45:19 +0100 Subject: [PATCH] messing around MSG --- src/instr/instr_config.cpp | 12 ++++++------ src/instr/instr_private.hpp | 3 ++- src/msg/instr_msg_process.cpp | 32 ++++---------------------------- src/msg/instr_msg_task.cpp | 12 ++++++------ src/msg/msg_gos.cpp | 7 +++++-- src/msg/msg_mailbox.cpp | 3 +-- src/msg/msg_private.hpp | 5 ----- src/msg/msg_process.cpp | 19 +++++++------------ src/s4u/s4u_actor.cpp | 12 ++++++++++++ src/surf/instr_routing.cpp | 2 +- 10 files changed, 44 insertions(+), 63 deletions(-) diff --git a/src/instr/instr_config.cpp b/src/instr/instr_config.cpp index b2623ae5c9..c0404f0a8b 100644 --- a/src/instr/instr_config.cpp +++ b/src/instr/instr_config.cpp @@ -48,7 +48,7 @@ static bool trace_smpi_sleeping; static bool trace_view_internals; static bool trace_categorized; static bool trace_uncategorized; -static bool trace_msg_process_enabled; +static bool trace_actor_enabled; static bool trace_msg_vm_enabled; static bool trace_buffer; static bool trace_onelink_only; @@ -76,7 +76,7 @@ static void TRACE_getopts() trace_view_internals = xbt_cfg_get_boolean(OPT_TRACING_SMPI_INTERNALS); trace_categorized = xbt_cfg_get_boolean(OPT_TRACING_CATEGORIZED); trace_uncategorized = xbt_cfg_get_boolean(OPT_TRACING_UNCATEGORIZED); - trace_msg_process_enabled = xbt_cfg_get_boolean(OPT_TRACING_MSG_PROCESS); + trace_actor_enabled = trace_enabled && xbt_cfg_get_boolean(OPT_TRACING_MSG_PROCESS); trace_msg_vm_enabled = xbt_cfg_get_boolean(OPT_TRACING_MSG_VM); trace_buffer = xbt_cfg_get_boolean(OPT_TRACING_BUFFER); trace_onelink_only = xbt_cfg_get_boolean(OPT_TRACING_ONELINK_ONLY); @@ -161,8 +161,8 @@ int TRACE_end() bool TRACE_needs_platform () { - return TRACE_msg_process_is_enabled() || TRACE_msg_vm_is_enabled() || TRACE_categorized() || - TRACE_uncategorized() || TRACE_platform () || (TRACE_smpi_is_enabled() && TRACE_smpi_is_grouped()); + return TRACE_actor_is_enabled() || TRACE_msg_vm_is_enabled() || TRACE_categorized() || TRACE_uncategorized() || + TRACE_platform() || (TRACE_smpi_is_enabled() && TRACE_smpi_is_grouped()); } bool TRACE_is_enabled() @@ -220,9 +220,9 @@ bool TRACE_uncategorized () return trace_uncategorized; } -bool TRACE_msg_process_is_enabled() +bool TRACE_actor_is_enabled() { - return trace_msg_process_enabled && TRACE_is_enabled(); + return trace_actor_enabled; } bool TRACE_msg_vm_is_enabled() diff --git a/src/instr/instr_private.hpp b/src/instr/instr_private.hpp index 263d4f4bb8..47d8eda2f9 100644 --- a/src/instr/instr_private.hpp +++ b/src/instr/instr_private.hpp @@ -184,6 +184,7 @@ extern XBT_PRIVATE std::set user_host_variables; extern XBT_PRIVATE std::set user_vm_variables; extern XBT_PRIVATE std::set user_link_variables; extern XBT_PRIVATE double TRACE_last_timestamp_to_dump; +XBT_PRIVATE std::string instr_pid(s4u_Actor* proc); /* instr_paje_header.c */ XBT_PRIVATE void TRACE_header(bool basic, int size); @@ -200,7 +201,7 @@ XBT_PRIVATE bool TRACE_platform_topology(); XBT_PRIVATE bool TRACE_is_configured(); XBT_PRIVATE bool TRACE_categorized(); XBT_PRIVATE bool TRACE_uncategorized(); -XBT_PRIVATE bool TRACE_msg_process_is_enabled(); +XBT_PRIVATE bool TRACE_actor_is_enabled(); XBT_PRIVATE bool TRACE_msg_vm_is_enabled(); XBT_PRIVATE bool TRACE_buffer(); XBT_PRIVATE bool TRACE_disable_link(); diff --git a/src/msg/instr_msg_process.cpp b/src/msg/instr_msg_process.cpp index a596982e5c..61bba1d6f6 100644 --- a/src/msg/instr_msg_process.cpp +++ b/src/msg/instr_msg_process.cpp @@ -17,7 +17,7 @@ std::string instr_pid(msg_process_t proc) void TRACE_msg_process_change_host(msg_process_t process, msg_host_t new_host) { - if (TRACE_msg_process_is_enabled()){ + if (TRACE_actor_is_enabled()) { static long long int counter = 0; std::string key = std::to_string(counter); @@ -42,7 +42,7 @@ void TRACE_msg_process_change_host(msg_process_t process, msg_host_t new_host) void TRACE_msg_process_create(std::string process_name, int process_pid, msg_host_t host) { - if (TRACE_msg_process_is_enabled()){ + if (TRACE_actor_is_enabled()) { container_t host_container = simgrid::instr::Container::byName(host->getName()); new simgrid::instr::Container(process_name + "-" + std::to_string(process_pid), "MSG_PROCESS", host_container); } @@ -50,7 +50,7 @@ void TRACE_msg_process_create(std::string process_name, int process_pid, msg_hos void TRACE_msg_process_destroy(std::string process_name, int process_pid) { - if (TRACE_msg_process_is_enabled()) { + if (TRACE_actor_is_enabled()) { container_t process = simgrid::instr::Container::byNameOrNull(process_name + "-" + std::to_string(process_pid)); if (process) { process->removeFromParent(); @@ -61,32 +61,8 @@ void TRACE_msg_process_destroy(std::string process_name, int process_pid) void TRACE_msg_process_kill(smx_process_exit_status_t status, msg_process_t process) { - if (TRACE_msg_process_is_enabled() && status == SMX_EXIT_FAILURE) { + if (TRACE_actor_is_enabled() && status == SMX_EXIT_FAILURE) { //kill means that this process no longer exists, let's destroy it TRACE_msg_process_destroy(process->getCname(), process->getPid()); } } - -void TRACE_msg_process_suspend(msg_process_t process) -{ - if (TRACE_msg_process_is_enabled()) - simgrid::instr::Container::byName(instr_pid(process))->getState("MSG_PROCESS_STATE")->pushEvent("suspend"); -} - -void TRACE_msg_process_resume(msg_process_t process) -{ - if (TRACE_msg_process_is_enabled()) - simgrid::instr::Container::byName(instr_pid(process))->getState("MSG_PROCESS_STATE")->popEvent(); -} - -void TRACE_msg_process_sleep_in(msg_process_t process) -{ - if (TRACE_msg_process_is_enabled()) - simgrid::instr::Container::byName(instr_pid(process))->getState("MSG_PROCESS_STATE")->pushEvent("sleep"); -} - -void TRACE_msg_process_sleep_out(msg_process_t process) -{ - if (TRACE_msg_process_is_enabled()) - simgrid::instr::Container::byName(instr_pid(process))->getState("MSG_PROCESS_STATE")->popEvent(); -} diff --git a/src/msg/instr_msg_task.cpp b/src/msg/instr_msg_task.cpp index 93d6fc87a8..6c0d673eb6 100644 --- a/src/msg/instr_msg_task.cpp +++ b/src/msg/instr_msg_task.cpp @@ -48,7 +48,7 @@ void TRACE_msg_task_execute_start(msg_task_t task) { XBT_DEBUG("EXEC,in %p, %lld, %s", task, task->counter, task->category); - if (TRACE_msg_process_is_enabled()) + if (TRACE_actor_is_enabled()) simgrid::instr::Container::byName(instr_pid(MSG_process_self())) ->getState("MSG_PROCESS_STATE") ->pushEvent("task_execute"); @@ -58,7 +58,7 @@ void TRACE_msg_task_execute_end(msg_task_t task) { XBT_DEBUG("EXEC,out %p, %lld, %s", task, task->counter, task->category); - if (TRACE_msg_process_is_enabled()) + if (TRACE_actor_is_enabled()) simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("MSG_PROCESS_STATE")->popEvent(); } @@ -77,7 +77,7 @@ void TRACE_msg_task_get_start() { XBT_DEBUG("GET,in"); - if (TRACE_msg_process_is_enabled()) + if (TRACE_actor_is_enabled()) simgrid::instr::Container::byName(instr_pid(MSG_process_self())) ->getState("MSG_PROCESS_STATE") ->pushEvent("receive"); @@ -87,7 +87,7 @@ void TRACE_msg_task_get_end(msg_task_t task) { XBT_DEBUG("GET,out %p, %lld, %s", task, task->counter, task->category); - if (TRACE_msg_process_is_enabled()){ + if (TRACE_actor_is_enabled()) { container_t process_container = simgrid::instr::Container::byName(instr_pid(MSG_process_self())); process_container->getState("MSG_PROCESS_STATE")->popEvent(); @@ -101,7 +101,7 @@ int TRACE_msg_task_put_start(msg_task_t task) { XBT_DEBUG("PUT,in %p, %lld, %s", task, task->counter, task->category); - if (TRACE_msg_process_is_enabled()){ + if (TRACE_actor_is_enabled()) { container_t process_container = simgrid::instr::Container::byName(instr_pid(MSG_process_self())); process_container->getState("MSG_PROCESS_STATE")->pushEvent("send"); @@ -116,6 +116,6 @@ void TRACE_msg_task_put_end() { XBT_DEBUG("PUT,out"); - if (TRACE_msg_process_is_enabled()) + if (TRACE_actor_is_enabled()) simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("MSG_PROCESS_STATE")->popEvent(); } diff --git a/src/msg/msg_gos.cpp b/src/msg/msg_gos.cpp index 67c074284a..b378e622da 100644 --- a/src/msg/msg_gos.cpp +++ b/src/msg/msg_gos.cpp @@ -113,7 +113,8 @@ msg_error_t MSG_process_sleep(double nb_sec) { msg_error_t status = MSG_OK; - TRACE_msg_process_sleep_in(MSG_process_self()); + if (TRACE_actor_is_enabled()) + simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("MSG_PROCESS_STATE")->pushEvent("sleep"); try { simcall_process_sleep(nb_sec); @@ -132,7 +133,9 @@ msg_error_t MSG_process_sleep(double nb_sec) throw; } - TRACE_msg_process_sleep_out(MSG_process_self()); + if (TRACE_actor_is_enabled()) + simgrid::instr::Container::byName(instr_pid(MSG_process_self()))->getState("MSG_PROCESS_STATE")->popEvent(); + return status; } diff --git a/src/msg/msg_mailbox.cpp b/src/msg/msg_mailbox.cpp index 791e59d738..b99055d82f 100644 --- a/src/msg/msg_mailbox.cpp +++ b/src/msg/msg_mailbox.cpp @@ -22,8 +22,7 @@ extern "C" { * \param alias The name of the mailbox */ void MSG_mailbox_set_async(const char *alias){ - simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName(alias); - mailbox->setReceiver(simgrid::s4u::Actor::self()); + simgrid::s4u::Mailbox::byName(alias)->setReceiver(simgrid::s4u::Actor::self()); XBT_VERB("%s mailbox set to receive eagerly for myself\n",alias); } } diff --git a/src/msg/msg_private.hpp b/src/msg/msg_private.hpp index 49328acbe2..cf12610f43 100644 --- a/src/msg/msg_private.hpp +++ b/src/msg/msg_private.hpp @@ -84,7 +84,6 @@ struct s_MSG_Global_t { }; typedef s_MSG_Global_t* MSG_Global_t; -XBT_PRIVATE std::string instr_pid(msg_process_t proc); XBT_PRIVATE void TRACE_msg_process_create(std::string process_name, int process_pid, msg_host_t host); XBT_PRIVATE void TRACE_msg_process_destroy(std::string process_name, int process_pid); @@ -114,10 +113,6 @@ XBT_PRIVATE void TRACE_msg_task_put_end(); /* declaration of instrumentation functions from msg_process_instr.c */ XBT_PRIVATE void TRACE_msg_process_change_host(msg_process_t process, msg_host_t new_host); XBT_PRIVATE void TRACE_msg_process_kill(smx_process_exit_status_t status, msg_process_t process); -XBT_PRIVATE void TRACE_msg_process_suspend(msg_process_t process); -XBT_PRIVATE void TRACE_msg_process_resume(msg_process_t process); -XBT_PRIVATE void TRACE_msg_process_sleep_in(msg_process_t process); // called from msg/gos.c -XBT_PRIVATE void TRACE_msg_process_sleep_out(msg_process_t process); } inline void s_simdata_task_t::setUsed() diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index 8af7ea5e86..29ac2fd25a 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -214,7 +214,7 @@ void MSG_process_kill(msg_process_t process) * \param timeout wait until the process is over, or the timeout occurs */ msg_error_t MSG_process_join(msg_process_t process, double timeout){ - simcall_process_join(process->getImpl(), timeout); + process->join(timeout); return MSG_OK; } @@ -286,7 +286,7 @@ msg_host_t MSG_process_get_host(msg_process_t process) if (process == nullptr) { return SIMIX_process_self()->host; } else { - return process->getImpl()->host; + return process->getHost(); } } @@ -327,7 +327,7 @@ int MSG_process_get_number() */ msg_error_t MSG_process_set_kill_time(msg_process_t process, double kill_time) { - simcall_process_set_kill_time(process->getImpl(), kill_time); + process->setKillTime(kill_time); return MSG_OK; } @@ -342,7 +342,7 @@ int MSG_process_get_PID(msg_process_t process) * and the exceptions, so it would be called back again and again */ if (process == nullptr || process->getImpl() == nullptr) return 0; - return process->getImpl()->pid; + return process->getPid(); } /** \ingroup m_process_management @@ -353,7 +353,7 @@ int MSG_process_get_PID(msg_process_t process) */ int MSG_process_get_PPID(msg_process_t process) { - return process->getImpl()->ppid; + return process->getPpid(); } /** \ingroup m_process_management @@ -387,8 +387,7 @@ xbt_dict_t MSG_process_get_properties(msg_process_t process) { xbt_assert(process != nullptr, "Invalid parameter: First argument must not be nullptr"); xbt_dict_t as_dict = xbt_dict_new_homogeneous(xbt_free_f); - std::map* props = - simgrid::simix::kernelImmediate([process] { return process->getImpl()->getProperties(); }); + std::map* props = process->getProperties(); if (props == nullptr) return nullptr; for (auto const& elm : *props) { @@ -444,9 +443,7 @@ msg_process_t MSG_process_self() msg_error_t MSG_process_suspend(msg_process_t process) { xbt_assert(process != nullptr, "Invalid parameter: First argument must not be nullptr"); - - TRACE_msg_process_suspend(process); - simcall_process_suspend(process->getImpl()); + process->suspend(); return MSG_OK; } @@ -458,8 +455,6 @@ msg_error_t MSG_process_suspend(msg_process_t process) msg_error_t MSG_process_resume(msg_process_t process) { xbt_assert(process != nullptr, "Invalid parameter: First argument must not be nullptr"); - - TRACE_msg_process_resume(process); process->resume(); return MSG_OK; } diff --git a/src/s4u/s4u_actor.cpp b/src/s4u/s4u_actor.cpp index 84745593f6..c4c9f792aa 100644 --- a/src/s4u/s4u_actor.cpp +++ b/src/s4u/s4u_actor.cpp @@ -130,12 +130,17 @@ aid_t Actor::getPpid() void Actor::suspend() { + if (TRACE_actor_is_enabled()) + simgrid::instr::Container::byName(instr_pid(this))->getState("MSG_PROCESS_STATE")->pushEvent("suspend"); + simcall_process_suspend(pimpl_); } void Actor::resume() { simgrid::simix::kernelImmediate([this] { pimpl_->resume(); }); + if (TRACE_actor_is_enabled()) + simgrid::instr::Container::byName(instr_pid(this))->getState("MSG_PROCESS_STATE")->popEvent(); } int Actor::isSuspended() @@ -352,6 +357,10 @@ Host* getHost() void suspend() { + if (TRACE_actor_is_enabled()) + instr::Container::byName(getName() + "-" + std::to_string(getPid())) + ->getState("MSG_PROCESS_STATE") + ->pushEvent("suspend"); simcall_process_suspend(SIMIX_process_self()); } @@ -359,6 +368,9 @@ void resume() { smx_actor_t process = SIMIX_process_self(); simgrid::simix::kernelImmediate([process] { process->resume(); }); + + if (TRACE_actor_is_enabled()) + instr::Container::byName(getName() + "-" + std::to_string(getPid()))->getState("MSG_PROCESS_STATE")->popEvent(); } bool isSuspended() diff --git a/src/surf/instr_routing.cpp b/src/surf/instr_routing.cpp index 6a271cdf5f..f6e9639c92 100644 --- a/src/surf/instr_routing.cpp +++ b/src/surf/instr_routing.cpp @@ -223,7 +223,7 @@ static void sg_instr_new_host(simgrid::s4u::Host& host) if (TRACE_smpi_is_enabled() && TRACE_smpi_is_grouped()) container->type_->getOrCreateContainerType("MPI")->getOrCreateStateType("MPI_STATE"); - if (TRACE_msg_process_is_enabled()) { + if (TRACE_actor_is_enabled()) { simgrid::instr::ContainerType* msg_process = container->type_->getOrCreateContainerType("MSG_PROCESS"); simgrid::instr::StateType* state = msg_process->getOrCreateStateType("MSG_PROCESS_STATE"); state->addEntityValue("suspend", "1 0 1"); -- 2.20.1