X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2a6382661d9ccbe7198decb53b042e715998a4c4..3907e83884bae6278656e9cd2cb7ef92a8f707fb:/docs/source/Plugins.rst diff --git a/docs/source/Plugins.rst b/docs/source/Plugins.rst index 2b9f596f11..aab0fe0968 100644 --- a/docs/source/Plugins.rst +++ b/docs/source/Plugins.rst @@ -19,9 +19,13 @@ You can extend SimGrid without modifying it, thanks to our plugin mechanism. This page describes how to write your own plugin, and documents some of the plugins distributed with SimGrid: + - :ref:`Host Load `: monitors the load of the compute units. - :ref:`Host Energy `: models the energy dissipation of the compute units. - :ref:`Link Energy `: models the energy dissipation of the network. - - :ref:`Host Load `: monitors the load of the compute units. + - :ref:`WiFi Energy `: models the energy dissipation of wifi links. + - :ref:`Battery `: models batteries that get discharged by the energy consumption of a given host. + - :ref:`Solar Panel `: models solar panels which energy production depends on the solar irradiance. + - :ref:`Chiller `: models chillers which dissipate heat by consuming energy. You can activate these plugins with the :ref:`--cfg=plugin ` command line option, for example with ``--cfg=plugin:host_energy``. You can get the full @@ -32,17 +36,17 @@ Defining a Plugin A plugin can get some additional code executed within the SimGrid kernel, and attach the data needed by that code to the SimGrid -objects. +objects. -The host load plugin in +The host load plugin in `src/plugins/host_load.cpp `_ constitutes a good introductory example. It defines a class -```HostLoad``` that is meant to be attached to each host. This class -contains a ```EXTENSION_ID``` field that is mandatory to our extension -mechanism. Then, the function ```sg_host_load_plugin_init``` +``HostLoad`` that is meant to be attached to each host. This class +contains a ``EXTENSION_ID`` field that is mandatory to our extension +mechanism. Then, the function ``sg_host_load_plugin_init`` initializes the plugin. It first calls :cpp:func:`simgrid::s4u::Host::extension_create()` to register its -extension to the ```s4u::Host``` objects, and then attaches some +extension to the ``s4u::Host`` objects, and then attaches some callbacks to signals. You can attach your own extension to most kinds of s4u object: @@ -52,46 +56,120 @@ You can attach your own extension to most kinds of s4u object: :cpp:class:`Links `. If you need to extend another kind of objects, please let us now. -Partial list of existing signals in s4u: - -- :cpp:member:`Actor::on_creation ` - :cpp:member:`Actor::on_suspend ` - :cpp:member:`Actor::on_resume ` - :cpp:member:`Actor::on_sleep ` - :cpp:member:`Actor::on_wake_up ` - :cpp:member:`Actor::on_migration_start ` - :cpp:member:`Actor::on_migration_end ` - :cpp:member:`Actor::on_termination ` - :cpp:member:`Actor::on_destruction ` -- :cpp:member:`Comm::on_sender_start ` - :cpp:member:`Comm::on_receiver_start ` - :cpp:member:`Comm::on_completion ` -- :cpp:member:`Engine::on_platform_creation ` - :cpp:member:`Engine::on_platform_created ` - :cpp:member:`Engine::on_time_advance ` - :cpp:member:`Engine::on_simulation_end ` - :cpp:member:`Engine::on_deadlock ` -- :cpp:member:`Exec::on_start ` - :cpp:member:`Exec::on_completion ` -- :cpp:member:`Host::on_creation ` - :cpp:member:`Host::on_destruction ` - :cpp:member:`Host::on_state_change ` - :cpp:member:`Host::on_speed_change ` -- :cpp:member:`Link::on_creation ` - :cpp:member:`Link::on_destruction ` - :cpp:member:`Link::on_state_change ` - :cpp:member:`Link::on_speed_change ` - :cpp:member:`Link::on_communicate ` - :cpp:member:`Link::on_communication_state_change ` -- :cpp:member:`Netzone::on_creation ` - :cpp:member:`Netzone::on_seal ` - :cpp:member:`Netzone::on_route_creation ` -- :cpp:member:`VirtualMachine::on_start ` - :cpp:member:`VirtualMachine::on_started ` - :cpp:member:`VirtualMachine::on_suspend ` - :cpp:member:`VirtualMachine::on_resume ` - :cpp:member:`VirtualMachine::on_migration_start ` - :cpp:member:`VirtualMachine::on_migration_end ` +.. cpp:class:: template simgrid::xbt::signal + + A signal/slot mechanism, where you can attach callbacks to a given signal, and then fire the signal. + + The template parameter is the function signature of the signal (the return value currently ignored). + +.. cpp:function::: template unsigned int simgrid::xbt::signal::connect(U slot) + + Add a new callback to this signal. + +.. cpp:function:: template simgrid::xbt::signal::operator()(P... args) + + Fire that signal, invoking all callbacks. + +.. _s4u_API_signals: + +Existing signals +================ + +- In actors: + :cpp:func:`Actor::on_creation ` + :cpp:func:`Actor::on_suspend ` + :cpp:func:`Actor::on_this_suspend ` + :cpp:func:`Actor::on_resume ` + :cpp:func:`Actor::on_this_resume ` + :cpp:func:`Actor::on_sleep ` + :cpp:func:`Actor::on_this_sleep ` + :cpp:func:`Actor::on_wake_up ` + :cpp:func:`Actor::on_this_wake_up ` + :cpp:func:`Actor::on_host_change ` + :cpp:func:`Actor::on_this_host_change ` + :cpp:func:`Actor::on_termination ` + :cpp:func:`Actor::on_this_termination ` + :cpp:func:`Actor::on_destruction ` +- In the engine: + :cpp:func:`Engine::on_platform_creation ` + :cpp:func:`Engine::on_platform_created ` + :cpp:func:`Engine::on_time_advance ` + :cpp:func:`Engine::on_simulation_end ` + :cpp:func:`Engine::on_deadlock ` + +- In resources: + + - :cpp:func:`Disk::on_creation ` + :cpp:func:`Disk::on_destruction ` + :cpp:func:`Disk::on_this_destruction ` + :cpp:func:`Disk::on_onoff ` + :cpp:func:`Disk::on_this_onoff ` + - :cpp:func:`Host::on_creation ` + :cpp:func:`Host::on_destruction ` + :cpp:func:`Host::on_this_destruction ` + :cpp:func:`Host::on_onoff ` + :cpp:func:`Host::on_this_onoff ` + :cpp:func:`Host::on_speed_change ` + :cpp:func:`Host::on_this_speed_change ` + :cpp:func:`Host::on_exec_state_change ` + - :cpp:func:`Link::on_creation ` + :cpp:func:`Link::on_destruction ` + :cpp:func:`Link::on_this_destruction ` + :cpp:func:`Link::on_onoff ` + :cpp:func:`Link::on_this_onoff ` + :cpp:func:`Link::on_bandwidth_change ` + :cpp:func:`Link::on_this_bandwidth_change ` + :cpp:func:`Link::on_communication_state_change ` + + - :cpp:func:`NetZone::on_creation ` + :cpp:func:`NetZone::on_seal ` + - :cpp:func:`VirtualMachine::on_start ` + :cpp:func:`VirtualMachine::on_this_start ` + :cpp:func:`VirtualMachine::on_started ` + :cpp:func:`VirtualMachine::on_this_started ` + :cpp:func:`VirtualMachine::on_suspend ` + :cpp:func:`VirtualMachine::on_this_suspend ` + :cpp:func:`VirtualMachine::on_resume ` + :cpp:func:`VirtualMachine::on_this_resume ` + :cpp:func:`VirtualMachine::on_migration_start ` + :cpp:func:`VirtualMachine::on_this_migration_start ` + :cpp:func:`VirtualMachine::on_migration_end ` + :cpp:func:`VirtualMachine::on_this_migration_end ` + +- In activities: + + - :cpp:func:`Comm::on_send ` + :cpp:func:`Comm::on_recv ` + - :cpp:func:`Comm::on_start ` + :cpp:func:`Comm::on_this_start ` + :cpp:func:`Comm::on_completion ` + :cpp:func:`Comm::on_this_completion ` + :cpp:func:`Comm::on_suspended ` + :cpp:func:`Comm::on_this_suspended ` + :cpp:func:`Comm::on_resume ` + :cpp:func:`Comm::on_this_resumed ` + :cpp:func:`Comm::on_veto ` + :cpp:func:`Comm::on_this_veto ` + - :cpp:func:`Exec::on_start ` + :cpp:func:`Exec::on_this_start ` + :cpp:func:`Exec::on_completion ` + :cpp:func:`Exec::on_this_completion ` + :cpp:func:`Exec::on_suspended ` + :cpp:func:`Exec::on_this_suspended ` + :cpp:func:`Exec::on_resume ` + :cpp:func:`Exec::on_this_resume ` + :cpp:func:`Exec::on_veto ` + :cpp:func:`Exec::on_this_veto ` + - :cpp:func:`Io::on_start ` + :cpp:func:`Io::on_this_start ` + :cpp:func:`Io::on_completion ` + :cpp:func:`Io::on_this_completion ` + :cpp:func:`Io::on_suspended ` + :cpp:func:`Io::on_this_suspended ` + :cpp:func:`Io::on_resume ` + :cpp:func:`Io::on_this_resumed ` + :cpp:func:`Io::on_veto ` + :cpp:func:`Io::on_this_veto ` Existing Plugins **************** @@ -115,6 +193,13 @@ Link Energy .. doxygengroup:: plugin_link_energy +.. _plugin_link_energy_wifi: + +WiFi Energy +=========== + +.. doxygengroup:: plugin_link_energy_wifi + .. _plugin_host_load: @@ -124,8 +209,6 @@ Host Load .. doxygengroup:: plugin_host_load - - .. _plugin_filesystem: File System @@ -133,6 +216,25 @@ File System .. doxygengroup:: plugin_filesystem +.. _plugin_battery: -.. LocalWords: SimGrid +Battery +======= +.. doxygengroup:: plugin_battery + +.. _plugin_solar_panel: + +Solar Panel +=========== + +.. doxygengroup:: plugin_solar_panel + +.. _plugin_chiller: + +Chiller +======= + +.. doxygengroup:: plugin_chiller + +.. LocalWords: SimGrid