From: Martin Quinson Date: Sat, 2 Dec 2017 21:01:28 +0000 (+0100) Subject: Merge branch 'energy-pstate' of https://github.com/Takishipp/simgrid into Takishipp... X-Git-Tag: v3.18~180^2 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/02fbf5e463830a439464adae8626cd4f2dad27fd?hp=-c Merge branch 'energy-pstate' of https://github.com/Takishipp/simgrid into Takishipp-energy-pstate --- 02fbf5e463830a439464adae8626cd4f2dad27fd diff --combined examples/msg/README.doc index 47f3e9dae5,eb2d0c55dd..00c8f32a2d --- a/examples/msg/README.doc +++ b/examples/msg/README.doc @@@ -7,6 -7,7 +7,6 @@@ documentation, but it should remain rea @brief Find the MSG example fitting your needs from the extensive set provided in the archive. - @ref msg_ex_basics - - @ref msg_ex_async - @ref msg_ex_process - @ref msg_ex_tracing - @ref msg_ex_tracing_user_variables @@@ -38,6 -39,31 +38,6 @@@ task to dispatch to a set of several Worker processes. It is fully commented in @ref msg_ex_master_worker. -@section msg_ex_async Asynchronous communications - -In addition to the fully documented example of @ref -MSG_ex_asynchronous_communications, there are several other examples -shipped in the archive: - - - Basic asynchronous communications. - @ref examples/msg/async-wait/async-wait.c \n - Illustrates how to have non-blocking communications, that are - communications running in the background leaving the process free - to do something else during their completion. The main functions - involved are @ref MSG_task_isend, @ref MSG_task_irecv, and @ref - MSG_comm_wait. - - - Waiting for all communications in a set. - @ref examples/msg/async-waitall/async-waitall.c\n - The @ref MSG_comm_waitall function is useful when you want to block - until all activities in a given set have completed. - - - Waiting for the first completed communication in a set. - @ref examples/msg/async-waitany/async-waitany.c\n - The @ref MSG_comm_waitany function is useful when you want to block - until one activity of the set completes, no matter which terminates - first. - @section msg_ex_process Acting on Processes - Creating processes. @@@ -45,11 -71,30 +45,17 @@@ Most processes are started from the deployment XML file, but they can also be used with the @ref MSG_process_create() function. - - Suspend and Resume processes. - @ref examples/msg/process-suspend/process-suspend.c \n - Processes can be suspended and resumed during their executions - thanks to the @ref MSG_process_suspend and @ref MSG_process_resume functions. - - - Kill processes. - @ref examples/msg/process-kill/process-kill.c \n - Processes can forcefully stop other processes with the @ref MSG_process_kill function. - - - Migrating processes. - @ref examples/msg/process-migration/process-migration.c \n - Processes can move or be moved from a host to another with the @ref MSG_process_migrate function. - - Controling the process life cycle from the XML. @ref examples/msg/process-startkilltime/process-startkilltime.c \n You can specify a start time and a kill time in the deployment file. See all *_d.xml files in this directory. + - Using Pstates on a host + @ref examples/msg/energy-pstate/energy-pstate.c\n + Show how define a set of pstates for a host and how the current + pstate can be accessed/changed with @ref MSG_get_host_current_power_peak and @ref MSG_set_host_pstate. + See also the platform XML file for have a details on how to declare the CPU capacity for each pstate. + @section msg_ex_tracing Tracing and visualization features Tracing can be activated by various configuration options which @@@ -90,8 -135,8 +96,8 @@@ options to see the task executions displayed as arrows in a Gantt-chart visualization. Recommanded options to that extend: @verbatim -cfg=tracing:yes --cfg=tracing/msg/process:yes - @endverbatim - + @endverbatim + TODO: These tracing examples should be integrated in the examples to not duplicate the C files. A full command line to see the result in the right tool (vite/FrameSoc) should be given along with some @@@ -143,6 -188,10 +149,6 @@@ TODO: show the XML files instead if it' The examples of this section demonstrate how to interact with the simulated storages. - - Basic example. - @ref examples/msg/io-storage/io-storage.c \n - All main storage and file functions are demoed. - - File Management. @ref examples/msg/io-file/io-file.c \n This example illustrates the use of operations on file (@ref MSG_file_open, @ref MSG_file_read, @ref MSG_file_write, @@@ -183,7 -232,14 +189,7 @@@ top of the example file) @example examples/msg/app-token-ring/app-token-ring.c @example examples/msg/app-masterworker/app-masterworker.c -@example examples/msg/async-wait/async-wait.c -@example examples/msg/async-waitall/async-waitall.c -@example examples/msg/async-waitany/async-waitany.c - @example examples/msg/process-create/process-create.c -@example examples/msg/process-suspend/process-suspend.c -@example examples/msg/process-kill/process-kill.c -@example examples/msg/process-migration/process-migration.c @example examples/msg/process-startkilltime/process-startkilltime.c @example examples/msg/trace-platform/trace-platform.c diff --combined examples/s4u/CMakeLists.txt index 1a699a2c92,2cd0fbac7d..1a15301d46 --- a/examples/s4u/CMakeLists.txt +++ b/examples/s4u/CMakeLists.txt @@@ -1,10 -1,9 +1,10 @@@ foreach (example actions-comm actions-storage actor-create actor-daemon actor-execute actor-kill actor-lifetime actor-migration actor-suspend actor-priority actor-yield - app-masterworker app-pingpong app-token-ring energy-pstate - async-wait async-waitany async-waitall - energy-link - plugin-hostload io mutex) + app-masterworker app-pingpong app-token-ring + async-wait async-waitany async-waitall - energy-link energy-ptask ++ energy-link energy-pstate energy-ptask + io io-file-remote io-storage-raw + platform-properties plugin-hostload mutex) add_executable (s4u-${example} ${example}/s4u-${example}.cpp) target_link_libraries(s4u-${example} simgrid) set_target_properties(s4u-${example} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${example}) @@@ -34,6 -33,8 +34,8 @@@ endforeach( set(examples_src ${examples_src} PARENT_SCOPE) set(tesh_files ${tesh_files} ${CMAKE_CURRENT_SOURCE_DIR}/app-bittorrent/s4u-app-bittorrent.tesh ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord.tesh + ${CMAKE_CURRENT_SOURCE_DIR}/energy-pstate/s4u-energy-pstate.tesh + ${CMAKE_CURRENT_SOURCE_DIR}/actor-priority/s4u-actor-priority.tesh ${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime.tesh ${CMAKE_CURRENT_SOURCE_DIR}/actor-priority/s4u-actor-priority.tesh ${CMAKE_CURRENT_SOURCE_DIR}/actor-yield/s4u-actor-yield.tesh @@@ -46,7 -47,6 +48,7 @@@ set(xml_files ${xml_files} ${CMA ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm_d.xml ${CMAKE_CURRENT_SOURCE_DIR}/actions-storage/s4u-actions-storage_d.xml ${CMAKE_CURRENT_SOURCE_DIR}/actor-create/s4u-actor-create_d.xml + ${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime_d.xml ${CMAKE_CURRENT_SOURCE_DIR}/actor-priority/s4u-actor-priority_d.xml ${CMAKE_CURRENT_SOURCE_DIR}/actor-yield/s4u-actor-yield_d.xml ${CMAKE_CURRENT_SOURCE_DIR}/app-bittorrent/s4u-app-bittorrent_d.xml @@@ -55,8 -55,7 +57,8 @@@ ${CMAKE_CURRENT_SOURCE_DIR}/async-waitall/s4u-async-waitall_d.xml ${CMAKE_CURRENT_SOURCE_DIR}/async-wait/s4u-async-wait_d.xml ${CMAKE_CURRENT_SOURCE_DIR}/dht-chord/s4u-dht-chord_d.xml - ${CMAKE_CURRENT_SOURCE_DIR}/actor-lifetime/s4u-actor-lifetime_d.xml + ${CMAKE_CURRENT_SOURCE_DIR}/io-file-remote/s4u-io-file-remote_d.xml + ${CMAKE_CURRENT_SOURCE_DIR}/platform-properties/s4u-platform-properties_d.xml PARENT_SCOPE) set(txt_files ${txt_files} ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split-p0.txt ${CMAKE_CURRENT_SOURCE_DIR}/actions-comm/s4u-actions-comm-split-p1.txt @@@ -66,15 -65,10 +68,15 @@@ foreach(example actions-comm actions-storage actor-create actor-daemon actor-execute actor-kill actor-lifetime actor-migration actor-suspend actor-priority actor-yield - app-bittorrent app-masterworker app-pingpong app-token-ring energy-pstate - async-wait async-waitall async-waitany - dht-chord - energy-link - plugin-hostload io mutex) - ADD_TESH_FACTORIES(s4u-${example} "thread;ucontext;raw;boost" --setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${example} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/platforms --cd ${CMAKE_HOME_DIRECTORY}/examples/s4u/${example} s4u-${example}.tesh) + app-bittorrent app-masterworker app-pingpong app-token-ring + async-wait async-waitall async-waitany + dht-chord - energy-link energy-ptask ++ energy-link energy-pstate energy-ptask + platform-properties plugin-hostload mutex + io io-file-remote io-storage-raw) + ADD_TESH_FACTORIES(s4u-${example} "thread;ucontext;raw;boost" + --setenv bindir=${CMAKE_CURRENT_BINARY_DIR}/${example} + --setenv platfdir=${CMAKE_HOME_DIRECTORY}/examples/platforms + --cd ${CMAKE_CURRENT_BINARY_DIR}/${example} + ${CMAKE_HOME_DIRECTORY}/examples/s4u/${example}/s4u-${example}.tesh) endforeach() diff --combined examples/s4u/README.doc index 11d4e65190,42cf0f8e71..5583e38df3 --- a/examples/s4u/README.doc +++ b/examples/s4u/README.doc @@@ -101,6 -101,12 +101,12 @@@ documentation, but it should remain rea @ref examples/s4u/actor-migration/s4u-actor-migration.cpp \n Actors can move or be moved from a host to another with the @ref migrate method. + - Using Pstates on a host + @ref examples/s4u/energy-pstate/s4u-energy-pstate.c\n + Show how define a set of pstates for a host and how the current + pstate can be accessed/changed with @ref getPstateSpeed and @ref sg_host_set_pstate. + See also the platform XML file for have a details on how to declare the CPU capacity for each pstate. + - Yielding to other actor. @ref examples/s4u/actor-yield/s4u-actor-yield.c\n The simgrid::s4u::this_actor::yield() function interrupts the @@@ -140,21 -146,6 +146,21 @@@ also the tesh files in the example dire Presents a set of event handlers reproducing classical I/O primitives (open, read, close). +@subsection s4u_ex_io Simulating disks and files + +The examples of this section demonstrate how to interact with the +simulated storages. + + - Access to raw storage devices . + @ref examples/s4u/io-raw-storage/s4u-io-raw-storage.cpp \n + This example illustrates how to simply read and write data on a + simulated storage resource. + + - Remote I/O. + @ref examples/s4u/io-file-remote/s4u-io-file-remote.cpp \n + I/O operations on files can also be done in a remote fashion, + i.e. when the accessed disk is not mounted on the caller's host. + */ /** @@@ -172,8 -163,7 +178,8 @@@ @example examples/s4u/app-token-ring/s4u-app-token-ring.cpp @example examples/s4u/app-masterworker/s4u-app-masterworker.cpp @example examples/s4u/app-pingpong/s4u-app-pingpong.cpp - +@example examples/s4u/io-file-remote/s4u-io-file-remote.cpp +@example examples/s4u/io-raw-storage/s4u-io-raw-storage.cpp @example examples/s4u/mutex/s4u-mutex.cpp */ diff --combined examples/s4u/energy-pstate/s4u-energy-pstate.tesh index 0000000000,6a2e59374e..75de0f9793 mode 000000,100644..100644 --- a/examples/s4u/energy-pstate/s4u-energy-pstate.tesh +++ b/examples/s4u/energy-pstate/s4u-energy-pstate.tesh @@@ -1,0 -1,41 +1,41 @@@ + #! ./tesh + + p Testing the DVFS-related functions + -$ ${bindir:=.}/s4u-energy-pstate$EXEEXT ${srcdir:=.}/../platforms/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" ++$ ${bindir:=.}/s4u-energy-pstate$EXEEXT ${platfdir}/energy_platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" + > [ 0.000000] (1:dvfs_test@MyHost1) Count of Processor states=3 + > [ 0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000 + > [ 0.000000] (2:dvfs_test@MyHost2) Count of Processor states=3 + > [ 0.000000] (2:dvfs_test@MyHost2) Current power peak=100000000.000000 + > [ 1.000000] (1:dvfs_test@MyHost1) Task1 simulation time: 1.000000e+00 + > [ 1.000000] (2:dvfs_test@MyHost2) Task1 simulation time: 1.000000e+00 + > [ 1.000000] (1:dvfs_test@MyHost1) Changing power peak value to 20000000.000000 (at index 2) + > [ 1.000000] (2:dvfs_test@MyHost2) Changing power peak value to 20000000.000000 (at index 2) + > [ 1.000000] (1:dvfs_test@MyHost1) Current power peak=20000000.000000 + > [ 1.000000] (2:dvfs_test@MyHost2) Current power peak=20000000.000000 + > [ 6.000000] (1:dvfs_test@MyHost1) Task2 simulation time: 5.000000e+00 + > [ 6.000000] (1:dvfs_test@MyHost1) Count of Processor states=3 + > [ 6.000000] (1:dvfs_test@MyHost1) Current power peak=20000000.000000 + > [ 6.000000] (2:dvfs_test@MyHost2) Task2 simulation time: 5.000000e+00 + > [ 6.000000] (2:dvfs_test@MyHost2) Count of Processor states=3 + > [ 6.000000] (2:dvfs_test@MyHost2) Current power peak=20000000.000000 + > [ 6.000000] (0:maestro@) Total simulation time: 6.000000e+00 + -$ ${bindir:=.}/s4u-energy-pstate$EXEEXT ${srcdir:=.}/../platforms/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" ++$ ${bindir:=.}/s4u-energy-pstate$EXEEXT ${platfdir}/energy_cluster.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" + > [ 0.000000] (1:dvfs_test@MyHost1) Count of Processor states=3 + > [ 0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000 + > [ 0.000000] (2:dvfs_test@MyHost2) Count of Processor states=3 + > [ 0.000000] (2:dvfs_test@MyHost2) Current power peak=100000000.000000 + > [ 1.000000] (1:dvfs_test@MyHost1) Task1 simulation time: 1.000000e+00 + > [ 1.000000] (2:dvfs_test@MyHost2) Task1 simulation time: 1.000000e+00 + > [ 1.000000] (1:dvfs_test@MyHost1) Changing power peak value to 20000000.000000 (at index 2) + > [ 1.000000] (2:dvfs_test@MyHost2) Changing power peak value to 20000000.000000 (at index 2) + > [ 1.000000] (1:dvfs_test@MyHost1) Current power peak=20000000.000000 + > [ 1.000000] (2:dvfs_test@MyHost2) Current power peak=20000000.000000 + > [ 6.000000] (1:dvfs_test@MyHost1) Task2 simulation time: 5.000000e+00 + > [ 6.000000] (1:dvfs_test@MyHost1) Count of Processor states=3 + > [ 6.000000] (1:dvfs_test@MyHost1) Current power peak=20000000.000000 + > [ 6.000000] (2:dvfs_test@MyHost2) Task2 simulation time: 5.000000e+00 + > [ 6.000000] (2:dvfs_test@MyHost2) Count of Processor states=3 + > [ 6.000000] (2:dvfs_test@MyHost2) Current power peak=20000000.000000 + > [ 6.000000] (0:maestro@) Total simulation time: 6.000000e+00 diff --combined teshsuite/msg/actions-comm/actions-comm.tesh index d2833bb3b3,d2833bb3b3..22108dca64 --- a/teshsuite/msg/actions-comm/actions-comm.tesh +++ b/teshsuite/msg/actions-comm/actions-comm.tesh @@@ -1,5 -1,5 +1,5 @@@ ! output sort 19 --$ ${bindir:=.}/actions-comm --log=actions.thres=verbose ${srcdir:=.}/small_platform_fatpipe.xml actions-comm_split_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" ++$ ${bindir:=.}/actions-comm --log=actions.thres=verbose ${platfdir}/small_platform_fatpipe.xml actions-comm_split_d.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" > [ 20.703314] (1:p0@Tremblay) p0 recv p1 20.703314 > [ 20.703314] (2:p1@Ruby) p1 send p0 1e10 20.703314 > [ 30.897513] (0:maestro@) Simulation time 30.8975 @@@ -7,7 -7,7 +7,7 @@@ > [ 30.897513] (2:p1@Ruby) p1 compute 1e9 10.194200 ! output sort 19 --$ ${bindir:=.}/actions-comm --log=actions.thres=verbose ${srcdir:=.}/small_platform_fatpipe.xml actions-comm_d.xml actions-comm.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" ++$ ${bindir:=.}/actions-comm --log=actions.thres=verbose ${platfdir}/small_platform_fatpipe.xml actions-comm_d.xml actions-comm.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" > [ 0.000000] (1:p0@Tremblay) p0 comm_size 3 0.000000 > [ 1.037020] (1:p0@Tremblay) p0 bcast 5e8 1.037020 > [ 1.037020] (2:p1@Ruby) p1 bcast 5e8 1.037020 diff --combined teshsuite/msg/actions-storage/actions-storage.tesh index e8219a17ea,e8219a17ea..d9a69ee146 --- a/teshsuite/msg/actions-storage/actions-storage.tesh +++ b/teshsuite/msg/actions-storage/actions-storage.tesh @@@ -1,5 -1,5 +1,5 @@@ ! output sort 19 --$ ${bindir:=.}/actions-storage --log=storage_actions.thres=verbose ${srcdir:=.}/storage/storage.xml actions-storage_d.xml actions-storage.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" ++$ ${bindir:=.}/actions-storage --log=storage_actions.thres=verbose ${platfdir}/storage/storage.xml actions-storage_d.xml actions-storage.txt "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n" > [ 0.000000] (1:p0@denise) p0 open /home/lib/libsimgrid.so.3.6.2 0.000000 > [ 0.063552] (1:p0@denise) p0 read /home/lib/libsimgrid.so.3.6.2 12710497 0.063552 > [ 0.063552] (1:p0@denise) p0 close /home/lib/libsimgrid.so.3.6.2 0.000000 diff --combined teshsuite/msg/app-bittorrent/app-bittorrent.tesh index 262fce3ae9,262fce3ae9..09080213d4 --- a/teshsuite/msg/app-bittorrent/app-bittorrent.tesh +++ b/teshsuite/msg/app-bittorrent/app-bittorrent.tesh @@@ -4,7 -4,7 +4,7 @@@ p Testing the Bittorrent implementatio ! timeout 10 ! output sort 19 --$ ${bindir:=.}/bittorrent ${srcdir:=.}/cluster.xml app-bittorrent_d.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n" ++$ ${bindir:=.}/bittorrent ${platfdir}/cluster.xml app-bittorrent_d.xml "--log=root.fmt:[%12.6r]%e(%i:%P@%h)%e%m%n" > [ 0.000000] (1:tracker@node-0.acme.org) Tracker launched. > [ 0.000000] (2:peer@node-1.acme.org) Hi, I'm joining the network with id 2 > [ 0.000000] (3:peer@node-2.acme.org) Hi, I'm joining the network with id 3