Skip to content

RFC: Resource limits for proof harnesses #1687

@tedinski

Description

@tedinski

This issue is a task to write/propose an RFC for resource limits.

Resource limits include:

  1. Timeouts on proof harnesses. Including a default, and annotations to change them, or flags to manipulate them.
  2. Possibly memory limits. Also including a default plus annotations/etc.

The need for these is two-fold:

  1. Without resource limits, we get poor customer experiences. For instance, unwinding problems manifest as non-termination without a timeout. CI time can be unbounded when certain failures occur.
  2. Resource limits are necessary to get a good experience from parallel harness runners. (If nothing else, we need to know which harnesses need a lot of memory, and limit concurrency so they have enough available. But we can also ensure best performance by starting with longest-timeout harnesses, to keep concurrency high.)

There are questions to resolve:

  1. What is the default timeout? (I will initially propose an aggressive one. Maybe 15s)
  2. Should memory limits be hard or soft or a combination? (e.g. use OS features to hard-limit to 2GB? Or just track usage and warn if it's over? Or both: hard limit X GB, warn when close to X?)
  3. Should memory limits be numeric or "order of magnitude" (low, medium, high, extreme. Perhaps corresponding to 1 GB, 2 GB, 8GB, whole machine.) Or perhaps both.
  4. How would memory limits interact with "library back-ends"? Perhaps we must always do solving in a separate process?
  5. Should we have command line flags to manipulate them? Which flags? (e.g. we have strange flags around unwind bounds right now, because we start off thinking about only one proof harness at a time.)

and probably more.

Early comments about things I should think about welcome, but details can wait for the RFC.

Metadata

Metadata

Assignees

Labels

T-RFCLabel RFC PRs and Issues

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions