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

Fix CPU timing infrastructure #208

Open
charmoniumQ opened this issue Jan 10, 2021 · 0 comments
Open

Fix CPU timing infrastructure #208

charmoniumQ opened this issue Jan 10, 2021 · 0 comments
Assignees
Labels
plumbing Something that connects/interfaces/plugs into many parts of ILLIXR.

Comments

@charmoniumQ
Copy link
Member

charmoniumQ commented Jan 10, 2021

  • The existing infrastructure does not record data if the shutdown is not clean. This means a small bug in the destructor totally disrupts the experiment.
  • The existing infrastructure does not capture response-time or latency, except for hardcoded channels.
  • The existing infrastructure does not capture the stack, so it cannot reconstruct the callgraph, without manual instruction.
  • The existing infrastructure is not thread safe: lines could get spliced in the log.
  • The existing infrastructure uses a different collection method for ILLIXR-native components, external components such as OpenVINS, and libraries such as OpenCV.
  • The existing infrastructure is limited to capturing at a specific level: a plugin's _p_one_iteration or switchboard callback. This necessitates a lot of complex, hardcoded logic in the analysis scripts. This complexity was error-prone (this is why periods were wrong in OpenVINS when I was showing it during the scheduling meeting).
    • It requires hardcoded logic to split offline_imu_cam and OpenVINS into the times it had camera data vs just IMU data.
    • It requires hardcoded logic to sum OpenVINS's component threads (durations should be summed, but what about start times?).
    • It requires hardcoded logic to extract the logging overhead time.
  • The existing infrastructure cannot distinguish when component A calls a library function that starts a thread and when B calls the same function. Since it starts a thread, its CPU time won't be accounted in A and B. This gives us trouble in the existing infrastructure that OpenVINS and the camera loader both called OpenCV.

Also see #211.

@charmoniumQ charmoniumQ added the plumbing Something that connects/interfaces/plugs into many parts of ILLIXR. label Jan 10, 2021
@charmoniumQ charmoniumQ self-assigned this Feb 8, 2021
@e3m3 e3m3 added this to High priority in ILLIXR improvements Mar 17, 2021
@e3m3 e3m3 moved this from High priority to Backlog in ILLIXR improvements Mar 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
plumbing Something that connects/interfaces/plugs into many parts of ILLIXR.
Projects
ILLIXR improvements
  
Issue Backlog
Development

No branches or pull requests

1 participant