-
Notifications
You must be signed in to change notification settings - Fork 11
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
Eiger: Create a gantt chart of the arming process #1001
Comments
Based on the code the current behaviour is: gantt
title Eiger arming with timing in seconds
dateFormat ss
axisFormat %S
odin.stop : a1, 0, 0.00890186s
change_dev_shm : a2, after a1, 0.0067055175s
set_detector_threshold : a3, after a2, 0.0016777475s
set_cam_pvs : a4, after a3, 0.96287229125s
set_odin_number_of_frame_chunks : a5, after a4, 0.01019072125s
set_odin_pvs : a6, after a5, 0.05567243125s
set_mx_settings_pvs : a7, after a6, 1.9021649325s
set_num_triggers_and_captures : a8, after a7, 1.320268595s
wait_for_not_stale : a9, after a8, 0.0006886675s
_wait_for_odin_status : a10, after a9, 0.96810295625s
set_acquire : a11, after a10, 0.9095709875s
_wait_fan_ready : a12, after a11, 1.5318339725s
expected_total : a13, 0, 7.67865068000s
measured_total : a13, 0, 8.7477270925s
|
I've just updated the Gantt chart; these are averaged over 4 scans (with rotation too, so 8 arming chains in total).
|
|
It looks like I missed From my understanding of the detector I think the following might be possible: gantt
title Eiger arming with timing in seconds
dateFormat ss
axisFormat %S
odin.stop : a1, 0, 0.00890186s
change_dev_shm : a2, 0, 0.0067055175s
set_detector_threshold : a3, 0, 0.0016777475s
set_cam_pvs : a4, 0, 0.96287229125s
set_odin_number_of_frame_chunks : a5, after a1, 0.01019072125s
set_odin_pvs : a6, after a5, 0.05567243125s
set_mx_settings_pvs : a7, 0, 1.9021649325s
set_num_triggers_and_captures : a8, 0, 1.320268595s
wait_for_not_stale : a9, after a2 a3 a4 a7 a8, 0.0006886675s
_wait_for_odin_status : a10, after a6 a9, 0.96810295625s
set_acquire : a11, after a10, 0.9095709875s
_wait_fan_ready : a12, after a11, 1.5318339725s
Which in theory cuts out 3 seconds. In practice it will likely be slower as setting so many things at once may make |
Ah my bad, I hadn't noticed enable_roi_mode due to its conditional execution, so I agree this is likely where the final |
You need to be careful with adding logging here: status = self.cam.beam_center_x.set(
beam_x_pixels, timeout=self.timeouts.general_status_timeout
)
status &= self.cam.beam_center_y.set(
beam_y_pixels, timeout=self.timeouts.general_status_timeout
) Sets
|
For interest @GDYendell |
The disarm is now on the critical path so would be good to profile that too. |
For disarm in the case where we're not free running and already disabled ROI (i.e. a rotation scan):
For disarm when we're free running and not ROI disabled (i.e. XRC):
|
See https://jira.diamond.ac.uk/browse/I03-637 for some analysis that has been done before |
To be able to optimise the arming of the Eiger, and to write the FastCS Eiger we need to understand the order of operations better. To do this we should make a diagram (something like a gantt chart) of what operations depend on others and how long they each take.
Acceptance Criteria
The text was updated successfully, but these errors were encountered: