Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't restart timer on every incoming parcel. #2031

Merged
merged 10 commits into from Mar 21, 2016
Merged

Conversation

hkaiser
Copy link
Member

@hkaiser hkaiser commented Mar 16, 2016

@justwagle: This solves the issue that the parcel coalescing timer was restarted for each incoming parcel. Please verify.

This PR also adds 3 performance counters which can be used to report on the message coalescing:

/coalescing/count/parcels@<action_name>
   the number of parcels handled by a parcel coalescing handler for the given action

/coalescing/count/messages@<action_name>
   the number of messages generated by a parcel coalescing handler for the given action

/coalescing/time/parcel-arrival@<action_name>
   the average time between parcels arriving for a parcel coalescing handler for the given action

- added general support for startup functions and command line options in plugins
@hkaiser hkaiser changed the title Don't restart timer on ever incoming parcel. Don't restart timer on every incoming parcel. Mar 16, 2016
- flyby: improve error handling in create_message_handler and runtime_support_serve
- flyby: exporting locality class to avoid linker problems
- flyby: exporting hpx::performance_counters::detail::regex_from_pattern

WIP
- moved more function declarations out of hpx_fwd.hpp
- added dynamic action registration with message handlers (at startup)
@hkaiser
Copy link
Member Author

hkaiser commented Mar 17, 2016

@justwagle the performance counters have been implemented now (see description above). Please verify.

@justwagle
Copy link
Member

The counters are working. I have attached a sample output below.
/coalescing{locality#0/total}/count/parcels@workbench::server::matrix::get_sigma_elements_action,3,41.257405,[s],128 /coalescing{locality#1/total}/count/parcels@workbench::server::matrix::get_sigma_elements_action,3,41.252624,[s],128 /coalescing{locality#0/total}/count/parcels@workbench::server::matrix::get_elements_comb_action,3,41.257411,[s],98304 /coalescing{locality#1/total}/count/parcels@workbench::server::matrix::get_elements_comb_action,3,41.252847,[s],98304 /coalescing{locality#0/total}/count/parcels@workbench::server::matrix::get_elements_action,3,41.257516,[s],196608 /coalescing{locality#1/total}/count/parcels@workbench::server::matrix::get_elements_action,3,41.252992,[s],196608 /coalescing{locality#0/total}/count/parcels@lco_set_value_action,3,41.257171,[s],0 /coalescing{locality#1/total}/count/parcels@lco_set_value_action,3,41.253047,[s],4988 /coalescing{locality#0/total}/count/messages@workbench::server::matrix::get_sigma_elements_action,3,41.257220,[s],18 /coalescing{locality#1/total}/count/messages@workbench::server::matrix::get_sigma_elements_action,3,41.252797,[s],118 /coalescing{locality#0/total}/count/messages@workbench::server::matrix::get_elements_comb_action,3,41.257488,[s],11542 /coalescing{locality#1/total}/count/messages@workbench::server::matrix::get_elements_comb_action,3,41.252893,[s],11501 /coalescing{locality#0/total}/count/messages@workbench::server::matrix::get_elements_action,3,41.257573,[s],15204 /coalescing{locality#1/total}/count/messages@workbench::server::matrix::get_elements_action,3,41.253220,[s],15115 /coalescing{locality#0/total}/count/messages@lco_set_value_action,3,41.257297,[s],0 /coalescing{locality#1/total}/count/messages@lco_set_value_action,3,41.252827,[s],1173 /coalescing{locality#0/total}/time/parcel-arrival@workbench::server::matrix::get_sigma_elements_action,3,41.257567,[s],1.46138e+08,[ns] /coalescing{locality#1/total}/time/parcel-arrival@workbench::server::matrix::get_sigma_elements_action,3,41.254001,[s],1.46139e+08,[ns] /coalescing{locality#0/total}/time/parcel-arrival@workbench::server::matrix::get_elements_comb_action,3,41.257348,[s],190284,[ns] /coalescing{locality#1/total}/time/parcel-arrival@workbench::server::matrix::get_elements_comb_action,3,41.252757,[s],190283,[ns] /coalescing{locality#0/total}/time/parcel-arrival@workbench::server::matrix::get_elements_action,3,41.257491,[s],95142,[ns] /coalescing{locality#1/total}/time/parcel-arrival@workbench::server::matrix::get_elements_action,3,41.252944,[s],95142,[ns] /coalescing{locality#0/total}/time/parcel-arrival@lco_set_value_action,3,41.257282,[s],0,[ns] /coalescing{locality#1/total}/time/parcel-arrival@lco_set_value_action,3,41.254107,[s],3.7494e+06,[ns]

There is however, an error on one of the examples if I build this branch with HPX_WITH_EXAMPLES=ON. I have listed the error below.
Scanning dependencies of target random_mem_access_client_exe [ 97%] Building CXX object examples/random_mem_access/CMakeFiles/random_mem_access_client_exe.dir/random_mem_access_client.cpp.o [ 97%] Built target nqueen_client_exe Scanning dependencies of target throttle_client_exe [ 97%] Building CXX object examples/throttle/CMakeFiles/throttle_client_exe.dir/throttle_client.cpp.o Linking CXX executable ../../bin/component_ctors /home/bwagle/livehpx/repo/examples/quickstart/interval_timer.cpp: In function ‘int hpx_startup::user_main()’: /home/bwagle/livehpx/repo/examples/quickstart/interval_timer.cpp:30:9: error: ‘interval_timer’ is not a member of ‘hpx::util’ hpx::util::interval_timer timer( ^ /home/bwagle/livehpx/repo/examples/quickstart/interval_timer.cpp:34:9: error: ‘timer’ was not declared in this scope timer.start(); ^ [ 97%] Built target component_ctors_exe Scanning dependencies of target simple_central_tuplespace_client_exe [ 97%] Building CXX object examples/tuplespace/CMakeFiles/simple_central_tuplespace_client_exe.dir/simple_central_tuplespace_client.cpp.o Linking CXX executable ../../bin/component_in_executable

@hkaiser
Copy link
Member Author

hkaiser commented Mar 18, 2016

The compilation error in the example was fixed here: a3d32ae.

- new counter: /coalescing/count/average-parcels-per-message

also:
- renamed the counter /coalescing/time/parcel-arrival to /coalescing/time/average-parcel-arrival
- flyby: renamed counters /runtime/count/action_invocation to /runtime/count/action-invocation, and /runtime/count/remote_action_invocation to /runtime/count/remote- action-invocation to unify naming conventions for counters
hkaiser added a commit that referenced this pull request Mar 21, 2016
Don't restart timer on every incoming parcel.
@hkaiser hkaiser merged commit 4981c9c into master Mar 21, 2016
@hkaiser hkaiser deleted the fix_parcel_coalescing branch March 21, 2016 02:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants