-
Notifications
You must be signed in to change notification settings - Fork 45
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
Additional Log Entries for Tracking Progress #2682
Comments
According to @ttuegel, our methodology misattributes quite a bit of non-rewriting time to rewriting. In order to do better, we would also want a log entry immediately before rewriting starts. Also, our proofs don't branch, so we don't need to worry about that for our purposes. However since this is a change to Kore we may want to think about that if it's relevant. |
What exactly are you interested in timing? Basically, the backend goes through the following loop every rewrite step:
So, are you interested in only timing 3. and 4. (the actual rewriting), or is simplification time of interest as well? |
I'm interested in (1) and (4). Specifically, I want to know if a given rule causes a lot of time to be spend in (1) the next step, or if a given rule takes a lot of time to unify/simplify side-conditions (4). |
We should also remove |
Any more information on this? I'll go ahead on a branch and start adding the infrastructure for some new log types, but I'd need some guidance as to (1) what new things are worth logging to measure 1 and 4 above and (2) where to actually invoke the logger. It looks to me like |
Sorry, my understanding was that @ttuegel already discussed what the next steps are, I probably just misunderstood. So, I was thinking about We should look into replacing this with some log entry (or entries) with separate logging actions for beginning a transition and ending one. We'll have to see what the best approach will be here, below I'm going to add a general outline to what I'd rather go with, please let me know if anyone thinks it's not going to work. So, I'd keep this under one log entry type instead of creating separate types for each transition and scattering the logging throughout the code, so this will be a modified Now, about logging when we start to prove a claim, I think @JKTKops ' idea of adding |
If I'm understanding correctly, to do this we'd want to lift the We'd probably want to modify Finally, Does all that sound right? If so I can get to work on that. I also noticed that some of these ^1 Which is always present in the 'before' log but only optionally present in the 'after' log... this makes me think that maybe separating the before and after logs should be a consideration). ^2 Probably another reason to separate them. |
I went ahead in the draft PR and tentatively tried to do this. Lifting |
I was initially thinking of separating the two cases by making the new
We could also do that, having two types would imply the following:
My concern is that people would generally want to see full transitions, so it'd be more user friendly to not separate the log entries. But, if you think (1) would be useful to you, then we can go that way. |
No this is a good point, I think we'd always want both. On the other hand, how would we set up specifying that we only care about the (first) simplification step and the |
It would be great if we could get a log entry for when the prover starts working on a proof (e.g.
DebugStartedProveClaim
) and also when it succeeds or fails.On the KEVM proof suite we're trying to use the new one-line logs to collect data about which rules (or sequences of rules) are used frequently and how long they take (see runtimeverification/evm-semantics#1048). To separate different proofs in the same file, and to get an approximate duration for the first rule of each proof, we need to know when the proof started.
Additionally, we need a
oneLineDoc
implementation for theDebugProven
entry, and something likeDebugNotProven
for a generic "the proof failed" entry would be quite helpful for distinguishing the last step of a proof from the last step before a timeout.The text was updated successfully, but these errors were encountered: